esphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget(/translations/zh_CN/tools/kdoc_ancillarymodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget(/translations/zh_TW/tools/kdoc_ancillarymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget(/translations/it_IT/tools/kdoc_ancillarymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget(/translations/ja_JP/tools/kdoc_ancillarymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget(/translations/ko_KR/tools/kdoc_ancillarymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget(/translations/sp_SP/tools/kdoc_ancillarymodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhB/var/lib/git/docbuild/linux/Documentation/tools/kdoc_ancillary.rsthKubhsection)}(hhh](htitle)}(hAncillary classesh]hAncillary classes}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hArgparse formatter classh]hArgparse formatter class}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](pair(module; lib.python.kdoc.enrich_formatter'module-lib.python.kdoc.enrich_formatterhNtauh1hhhhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/enrich_formatter.py:docstring of lib.python.kdoc.enrich_formatterhNubh paragraph)}(hXAncillary argparse HelpFormatter class that works on a similar way as argparse.RawDescriptionHelpFormatter, e.g. description maintains line breaks, but it also implement transformations to the help text. The actual transformations ar given by enrich_text(), if the output is tty.h]hXAncillary argparse HelpFormatter class that works on a similar way as argparse.RawDescriptionHelpFormatter, e.g. description maintains line breaks, but it also implement transformations to the help text. The actual transformations ar given by enrich_text(), if the output is tty.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h/Currently, the follow transformations are done:h]h/Currently, the follow transformations are done:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh block_quote)}(hX- Positional arguments are shown in upper cases; - if output is TTY, ``var`` and positional arguments are shown prepended by an ANSI SGR code. This is usually translated to bold. On some terminals, like, konsole, this is translated into a colored bold text.h]h bullet_list)}(hhh](h list_item)}(h.Positional arguments are shown in upper cases;h]h)}(hjh]h.Positional arguments are shown in upper cases;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hif output is TTY, ``var`` and positional arguments are shown prepended by an ANSI SGR code. This is usually translated to bold. On some terminals, like, konsole, this is translated into a colored bold text.h]h)}(hif output is TTY, ``var`` and positional arguments are shown prepended by an ANSI SGR code. This is usually translated to bold. On some terminals, like, konsole, this is translated into a colored bold text.h](hif output is TTY, }(hj2hhhNhNubhliteral)}(h``var``h]hvar}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj2ubh and positional arguments are shown prepended by an ANSI SGR code. This is usually translated to bold. On some terminals, like, konsole, this is translated into a colored bold text.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1j hhhKhhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](single;EnrichFormatter (class in lib.python.kdoc.enrich_formatter)0lib.python.kdoc.enrich_formatter.EnrichFormatterhNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h EnrichFormatter(*args, **kwargs)h](hdesc_annotation)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj~hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/enrich_formatter.py:docstring of lib.python.kdoc.enrich_formatter.EnrichFormatterhKubh desc_addname)}(h!lib.python.kdoc.enrich_formatter.h]h!lib.python.kdoc.enrich_formatter.}(hjhhhNhNubah}(h]h ]( sig-prename descclassnameeh"]h$]h&]hhuh1jhj~hhhjhKubh desc_name)}(hEnrichFormatterh]hEnrichFormatter}(hjhhhNhNubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhj~hhhjhKubhdesc_parameterlist)}(h*args, **kwargsh](hdesc_parameter)}(h*argsh](hdesc_sig_operator)}(h*h]h*}(hjhhhNhNubah}(h]h ]oah"]h$]h&]uh1jhjubh desc_sig_name)}(hargsh]hargs}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubj)}(h**kwargsh](j)}(h**h]h**}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hkwargsh]hkwargs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj~hhhjhKubeh}(h]juah ](sig sig-objecteh"]h$]h&]module lib.python.kdoc.enrich_formatterclasshfullnamej _toc_partsj1j _toc_namejuh1j|hjhKhjyhhubh desc_content)}(hhh](h)}(h*Bases: :py:class:`~argparse.HelpFormatter`h](hBases: }(hj<hhhNhNubh)}(h#:py:class:`~argparse.HelpFormatter`h]j;)}(hjFh]h HelpFormatter}(hjHhhhNhNubah}(h]h ](xrefpypy-classeh"]h$]h&]uh1j:hjDubah}(h]h ]h"]h$]h&]refdoctools/kdoc_ancillary refdomainjSreftypeclass refexplicitrefwarn py:modulej1py:classj reftargetargparse.HelpFormatteruh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/enrich_formatter.py:docstring of lib.python.kdoc.enrich_formatterhKhj<ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/enrich_formatter.py:docstring of lib.python.kdoc.enrich_formatter.EnrichFormatterhKhj9hhubh)}(hxBetter format the output, making easier to identify the positional args and how they're used at the __doc__ description.h]hzBetter format the output, making easier to identify the positional args and how they’re used at the __doc__ description.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/enrich_formatter.py:docstring of lib.python.kdoc.enrich_formatter.EnrichFormatterhKhj9hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsGenrich_text() (lib.python.kdoc.enrich_formatter.EnrichFormatter method), >]h](hclass}(hj_hhhNhNubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]hhuh1jhj[hhhy/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRehKubj)}(hlib.python.kdoc.kdoc_re.h]hlib.python.kdoc.kdoc_re.}(hj|hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj[hhhj{hKubj)}(hKernReh]hKernRe}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj[hhhj{hKubj)}(hstring, cache=True, flags=0h](j)}(hstringh]j)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjubj)}(h cache=Trueh](j)}(hcacheh]hcache}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h=h]h=}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhinline)}(hTrueh]hTrue}(hjhhhNhNubah}(h]h ] default_valueah"]h$]h&]support_smartquotesuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubj)}(hflags=0h](j)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h=h]h=}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h0h]h0}(hj hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj[hhhj{hKubeh}(h]jVah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2hj3jj4j-jj6juh1j|hj{hKhjXhhubj8)}(hhh](h)}(hBases: :py:class:`object`h](hBases: }(hj2hhhNhNubh)}(h:py:class:`object`h]j;)}(hj<h]hobject}(hj>hhhNhNubah}(h]h ](jRpypy-classeh"]h$]h&]uh1j:hj:ubah}(h]h ]h"]h$]h&]refdocj_ refdomainjHreftypeclass refexplicitrefwarnjej-jfjjgobjectuh1hhr/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_rehKhj2ubeh}(h]h ]h"]h$]h&]uh1hhy/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRehKhj/hhubh)}(h5Helper class to simplify regex declaration and usage.h]h5Helper class to simplify regex declaration and usage.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhy/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRehKhj/hhubh)}(huIt calls re.compile for a given pattern. It also allows adding regular expressions and define sub at class init time.h]huIt calls re.compile for a given pattern. It also allows adding regular expressions and define sub at class init time.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphKhj/hhubh)}(hORegular expressions can be cached via an argument, helping to speedup searches.h]hORegular expressions can be cached via an argument, helping to speedup searches.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphKhj/hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js1findall() (lib.python.kdoc.kdoc_re.KernRe method)&lib.python.kdoc.kdoc_re.KernRe.findallhNtauh1hhj/hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.findallhNubjx)}(hhh](j})}(hKernRe.findall(string)h](j)}(hfindallh]hfindall}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.findallhKubj)}(hstringh]j)}(hstringh]j)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3KernRe.findallj4jKernRefindallj6KernRe.findall()uh1j|hjhKhjhhubj8)}(hhh]h)}(hAlias to re.findall.h]hAlias to re.findall.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj/hjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js/group() (lib.python.kdoc.kdoc_re.KernRe method)$lib.python.kdoc.kdoc_re.KernRe.grouphNtauh1hhj/hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.grouphNubjx)}(hhh](j})}(hKernRe.group(num)h](j)}(hgrouph]hgroup}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.grouphKubj)}(hnumh]j)}(hnumh]j)}(hnumh]hnum}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]hhuh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hKubeh}(h]j ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3 KernRe.groupj4jLKernRegroupj6KernRe.group()uh1j|hj#hKhjhhubj8)}(hhh]h)}(h,Returns the group results of the last match.h]h,Returns the group results of the last match.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhjRhhubah}(h]h ]h"]h$]h&]uh1j7hjhhhj#hKubeh}(h]h ](pymethodeh"]h$]h&]jjljjmjjmjjjuh1jwhhhj/hj hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js/match() (lib.python.kdoc.kdoc_re.KernRe method)$lib.python.kdoc.kdoc_re.KernRe.matchhNtauh1hhj/hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.matchhNubjx)}(hhh](j})}(hKernRe.match(string)h](j)}(hmatchh]hmatch}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.matchhKubj)}(hstringh]j)}(hstringh]j)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]j}ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3 KernRe.matchj4jKernRematchj6KernRe.match()uh1j|hjhKhjhhubj8)}(hhh]h)}(h'Handles a re.match storing its results.h]h'Handles a re.match storing its results.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj/hjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js0search() (lib.python.kdoc.kdoc_re.KernRe method)%lib.python.kdoc.kdoc_re.KernRe.searchhNtauh1hhj/hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.searchhNubjx)}(hhh](j})}(hKernRe.search(string)h](j)}(hsearchh]hsearch}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.searchhKubj)}(hstringh]j)}(hstringh]j)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3 KernRe.searchj4j0KernResearchj6KernRe.search()uh1j|hjhKhjhhubj8)}(hhh]h)}(h(Handles a re.search storing its results.h]h(Handles a re.search storing its results.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj6hhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jjPjjQjjQjjjuh1jwhhhj/hjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js/split() (lib.python.kdoc.kdoc_re.KernRe method)$lib.python.kdoc.kdoc_re.KernRe.splithNtauh1hhj/hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.splithNubjx)}(hhh](j})}(hKernRe.split(string)h](j)}(hsplith]hsplit}(hjkhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjghhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.splithKubj)}(hstringh]j)}(hstringh]j)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]hhuh1jhjzubah}(h]h ]h"]h$]h&]hhuh1jhjghhhjyhKubeh}(h]jaah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3 KernRe.splitj4jKernResplitj6KernRe.split()uh1j|hjyhKhjdhhubj8)}(hhh]h)}(hAlias to re.split.h]hAlias to re.split.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjdhhhjyhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj/hjchNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js-sub() (lib.python.kdoc.kdoc_re.KernRe method)"lib.python.kdoc.kdoc_re.KernRe.subhNtauh1hhj/hhh}/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.subhNubjx)}(hhh](j})}(h KernRe.sub(sub, string, count=0)h](j)}(hsubh]hsub}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh}/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.KernRe.subhKubj)}(hsub, string, count=0h](j)}(hsubh]j)}(hsubh]hsub}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjubj)}(hstringh]j)}(hstringh]hstring}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjubj)}(hcount=0h](j)}(hcounth]hcount}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h=h]h=}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h0h]h0}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3 KernRe.subj4jaKernResubj6 KernRe.sub()uh1j|hjhKhjhhubj8)}(hhh]h)}(hAlias to re.sub.h]hAlias to re.sub.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjghhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj/hjhNubeh}(h]h ]h"]h$]h&]uh1j7hjXhhhj{hKubeh}(h]h ](pyclasseh"]h$]h&]jjjjjjjjjuh1jwhhhjhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js.NestedMatch (class in lib.python.kdoc.kdoc_re)#lib.python.kdoc.kdoc_re.NestedMatchhNtauh1hhjhhhNhNubjx)}(hhh](j})}(h NestedMatch()h](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhh~/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatchhKubj)}(hlib.python.kdoc.kdoc_re.h]hlib.python.kdoc.kdoc_re.}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h NestedMatchh]h NestedMatch}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2hj3jj4jjj6juh1j|hjhKhjhhubj8)}(hhh](h)}(hBases: :py:class:`object`h](hBases: }(hjhhhNhNubh)}(h:py:class:`object`h]j;)}(hjh]hobject}(hjhhhNhNubah}(h]h ](jRpypy-classeh"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]refdocj_ refdomainjreftypeclass refexplicitrefwarnjejjfjjgobjectuh1hhjZhKhjubeh}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatchhKhjhhubh)}(hFinding nested delimiters is hard with regular expressions. It is even harder on Python with its normal re module, as there are several advanced regular expressions that are missing.h]hFinding nested delimiters is hard with regular expressions. It is even harder on Python with its normal re module, as there are several advanced regular expressions that are missing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatchhKhjhhubh)}(h"This is the case of this pattern::h]h!This is the case of this pattern:}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhjhhubh literal_block)}(h2'\bSTRUCT_GROUP(\(((?:(?>[^)(]+)|(?1))*)\))[^;]*;'h]h2'\bSTRUCT_GROUP(\(((?:(?>[^)(]+)|(?1))*)\))[^;]*;'}hj;sbah}(h]h ]h"]h$]h&]hhuh1j9hj*hKhjhhubh)}(h[which is used to properly match open/close parentheses of the string search STRUCT_GROUP(),h]h[which is used to properly match open/close parentheses of the string search STRUCT_GROUP(),}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hK hjhhubh)}(h^Add a class that counts pairs of delimiters, using it to match and replace nested expressions.h]h^Add a class that counts pairs of delimiters, using it to match and replace nested expressions.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hK hjhhubh)}(h'The original approach was suggested by:h]h'The original approach was suggested by:}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhjhhubj )}(h^https://stackoverflow.com/questions/5454322/python-how-to-match-nested-parentheses-with-regex h]h)}(h]https://stackoverflow.com/questions/5454322/python-how-to-match-nested-parentheses-with-regexh]h reference)}(hjyh]h]https://stackoverflow.com/questions/5454322/python-how-to-match-nested-parentheses-with-regex}(hj}hhhNhNubah}(h]h ]h"]h$]h&]refurijyuh1j{hjwubah}(h]h ]h"]h$]h&]uh1hhj*hKhjsubah}(h]h ]h"]h$]h&]uh1j hj*hKhjhhubh)}(hAlthough I re-implemented it to make it more generic and match 3 types of delimiters. The logic checks if delimiters are paired. If not, it will ignore the search string.h]hAlthough I re-implemented it to make it more generic and match 3 types of delimiters. The logic checks if delimiters are paired. If not, it will ignore the search string.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js?DELIMITER_PAIRS (lib.python.kdoc.kdoc_re.NestedMatch attribute)3lib.python.kdoc.kdoc_re.NestedMatch.DELIMITER_PAIRShNtauh1hhjhhhNhNubjx)}(hhh](j})}(hNestedMatch.DELIMITER_PAIRSh](j)}(hDELIMITER_PAIRSh]hDELIMITER_PAIRS}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatch.DELIMITER_PAIRShKubj)}(h{'(': ')', '[': ']', '{': '}'}h](j)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(h=h]h=}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh{'(': ')', '[': ']', '{': '}'}}(hjhhhNhNubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3NestedMatch.DELIMITER_PAIRSj4j NestedMatchDELIMITER_PAIRSj6j uh1j|hjhKhjhhubj8)}(hhh]h}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](py attributeeh"]h$]h&]jj jj jj jjjuh1jwhhhjhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js8RE_DELIM (lib.python.kdoc.kdoc_re.NestedMatch attribute),lib.python.kdoc.kdoc_re.NestedMatch.RE_DELIMhNtauh1hhjhhhNhNubjx)}(hhh](j})}(hNestedMatch.RE_DELIMh](j)}(hRE_DELIMh]hRE_DELIM}(hj5 hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj1 hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatch.RE_DELIMhKubj)}(h"re.compile('[\\{\\}\\[\\]\\(\\)]')h](j)}(h h]h }(hjH hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD ubj)}(h=h]h=}(hjV hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD ubj)}(h h]h }(hjd hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD ubh"re.compile('[\\{\\}\\[\\]\\(\\)]')}(hjD hhhNhNubeh}(h]h ]h"]h$]h&]hhuh1jhj1 hhhjC hKubeh}(h]j, ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3NestedMatch.RE_DELIMj4j NestedMatchRE_DELIMj6j uh1j|hjC hKhj. hhubj8)}(hhh]h}(h]h ]h"]h$]h&]uh1j7hj. hhhjC hKubeh}(h]h ](py attributeeh"]h$]h&]jj jj jj jjjuh1jwhhhjhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js5search() (lib.python.kdoc.kdoc_re.NestedMatch method)*lib.python.kdoc.kdoc_re.NestedMatch.searchhNtauh1hhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatch.searchhNubjx)}(hhh](j})}(hNestedMatch.search(regex, line)h](j)}(hsearchh]hsearch}(hj hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatch.searchhKubj)}(h regex, lineh](j)}(hregexh]j)}(hregexh]hregex}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj ubj)}(hlineh]j)}(hlineh]hline}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]j ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3NestedMatch.searchj4j NestedMatchsearchj6NestedMatch.search()uh1j|hj hKhj hhubj8)}(hhh](h)}(hThis is similar to re.search:h]hThis is similar to re.search:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj hhubh)}(hoIt matches a regex that it is followed by a delimiter, returning occurrences only if all delimiters are paired.h]hoIt matches a regex that it is followed by a delimiter, returning occurrences only if all delimiters are paired.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj hhubeh}(h]h ]h"]h$]h&]uh1j7hj hhhj hKubeh}(h]h ](pymethodeh"]h$]h&]jj+ jj, jj, jjjuh1jwhhhjhj hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js2sub() (lib.python.kdoc.kdoc_re.NestedMatch method)'lib.python.kdoc.kdoc_re.NestedMatch.subhNtauh1hhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatch.subhNubjx)}(hhh](j})}(h*NestedMatch.sub(regex, sub, line, count=0)h](j)}(hsubh]hsub}(hjF hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjB hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_re.NestedMatch.subhKubj)}(hregex, sub, line, count=0h](j)}(hregexh]j)}(hregexh]hregex}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY ubah}(h]h ]h"]h$]h&]hhuh1jhjU ubj)}(hsubh]j)}(hsubh]hsub}(hju hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq ubah}(h]h ]h"]h$]h&]hhuh1jhjU ubj)}(hlineh]j)}(hlineh]hline}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjU ubj)}(hcount=0h](j)}(hcounth]hcount}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h=h]h=}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h0h]h0}(hj hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjU ubeh}(h]h ]h"]h$]h&]hhuh1jhjB hhhjT hKubeh}(h]j< ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.kdoc_rej2jj3NestedMatch.subj4j NestedMatchsubj6NestedMatch.sub()uh1j|hjT hKhj? hhubj8)}(hhh](h)}(hThis is similar to re.sub:h]hThis is similar to re.sub:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> hKhj hhubh)}(hoIt matches a regex that it is followed by a delimiter, replacing occurrences only if all delimiters are paired.h]hoIt matches a regex that it is followed by a delimiter, replacing occurrences only if all delimiters are paired.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> hKhj hhubh)}(hif the sub argument contains::h]hif the sub argument contains:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> hKhj hhubj:)}(hr'\1'h]hr'\1'}hj sbah}(h]h ]h"]h$]h&]hhuh1j9hj> hKhj hhubh)}(h_it will work just like re: it places there the matched paired data with the delimiter stripped.h]h_it will work just like re: it places there the matched paired data with the delimiter stripped.}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> hK hj hhubh)}(hEIf count is different than zero, it will replace at most count items.h]hEIf count is different than zero, it will replace at most count items.}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> hK hj hhubeh}(h]h ]h"]h$]h&]uh1j7hj? hhhjT hKubeh}(h]h ](pymethodeh"]h$]h&]jjH jjI jjI jjjuh1jwhhhjhj> hNubeh}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pyclasseh"]h$]h&]jjV jjW jjW jjjuh1jwhhhjhNhNubeh}(h](j+ regular-expression-class-handlereh ]h"] regular expression class handlerah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h3Chinese, Japanese and Korean variable fonts handlerh]h3Chinese, Japanese and Korean variable fonts handler}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc hhhhhKubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#module; lib.python.kdoc.latex_fonts"module-lib.python.kdoc.latex_fontshNtauh1hhjc hhhNhNubh)}(hhh](h)}(h*Detect problematic Noto CJK variable fontsh]h*Detect problematic Noto CJK variable fonts}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhz/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fontshKubh)}(hXFor ``make pdfdocs``, reports of build errors of translations.pdf started arriving early 2024 [1]_ [2]_. It turned out that Fedora and openSUSE tumbleweed have started deploying variable-font [3]_ format of "Noto CJK" fonts [4]_ [5]_. For PDF, a LaTeX package named xeCJK is used for CJK (Chinese, Japanese, Korean) pages. xeCJK requires XeLaTeX/XeTeX, which does not (and likely never will) understand variable fonts for historical reasons.h](hFor }(hj hhhNhNubj;)}(h``make pdfdocs``h]h make pdfdocs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj ubhJ, reports of build errors of translations.pdf started arriving early 2024 }(hj hhhNhNubhfootnote_reference)}(h[1]_h]h1}(hj hhhNhNubah}(h]id1ah ]h"]h$]h&]refidid6docnamej_uh1j hj resolvedKubh }(hj hhhNhNubj )}(h[2]_h]h2}(hj hhhNhNubah}(h]id2ah ]h"]h$]h&]j id7j j_uh1j hj j KubhZ. It turned out that Fedora and openSUSE tumbleweed have started deploying variable-font }(hj hhhNhNubj )}(h[3]_h]h3}(hj hhhNhNubah}(h]id3ah ]h"]h$]h&]j id8j j_uh1j hj j Kubh format of “Noto CJK” fonts }(hj hhhNhNubj )}(h[4]_h]h4}(hj hhhNhNubah}(h]id4ah ]h"]h$]h&]j id9j j_uh1j hj j Kubh }hj sbj )}(h[5]_h]h5}(hj hhhNhNubah}(h]id5ah ]h"]h$]h&]j id10j j_uh1j hj j Kubh. For PDF, a LaTeX package named xeCJK is used for CJK (Chinese, Japanese, Korean) pages. xeCJK requires XeLaTeX/XeTeX, which does not (and likely never will) understand variable fonts for historical reasons.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhj hhubh)}(hXPThe build error happens even when both of variable- and non-variable-format fonts are found on the build system. To make matters worse, Fedora enlists variable "Noto CJK" fonts in the requirements of langpacks-ja, -ko, -zh_CN, -zh_TW, etc. Hence developers who have interest in CJK pages are more likely to encounter the build errors.h]hXTThe build error happens even when both of variable- and non-variable-format fonts are found on the build system. To make matters worse, Fedora enlists variable “Noto CJK” fonts in the requirements of langpacks-ja, -ko, -zh_CN, -zh_TW, etc. Hence developers who have interest in CJK pages are more likely to encounter the build errors.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK hj hhubh)}(hThis script is invoked from the error path of "make pdfdocs" and emits suggestions if variable-font files of "Noto CJK" fonts are in the list of fonts accessible from XeTeX.h]hThis script is invoked from the error path of “make pdfdocs” and emits suggestions if variable-font files of “Noto CJK” fonts are in the list of fonts accessible from XeTeX.}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj hhubhfootnote)}(h6https://lore.kernel.org/r/8734tqsrt7.fsf@meer.lwn.net/h](hlabel)}(h1h]h1}(hjA hhhNhNubah}(h]h ]h"]h$]h&]uh1j? hj; ubh)}(hj= h]j|)}(hj= h]h6https://lore.kernel.org/r/8734tqsrt7.fsf@meer.lwn.net/}(hjR hhhNhNubah}(h]h ]h"]h$]h&]refurij= uh1j{hjO ubah}(h]h ]h"]h$]h&]uh1hhj hKhj; ubeh}(h]j ah ]h"]1ah$]h&]j aj j_uh1j9 hj hKhj hhj Kubj: )}(h>https://lore.kernel.org/r/1708585803.600323099@f111.i.mail.ru/h](j@ )}(h2h]h2}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1j? hjm ubh)}(hjo h]j|)}(hjo h]h>https://lore.kernel.org/r/1708585803.600323099@f111.i.mail.ru/}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurijo uh1j{hj ubah}(h]h ]h"]h$]h&]uh1hhj hKhjm ubeh}(h]j ah ]h"]2ah$]h&]j aj j_uh1j9 hj hKhj hhj Kubj: )}(h+https://en.wikipedia.org/wiki/Variable_fonth](j@ )}(h3h]h3}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j? hj ubh)}(hj h]j|)}(hj h]h+https://en.wikipedia.org/wiki/Variable_font}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1j{hj ubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubeh}(h]j ah ]h"]3ah$]h&]j aj j_uh1j9 hj hKhj hhj Kubj: )}(h>https://fedoraproject.org/wiki/Changes/Noto_CJK_Variable_Fontsh](j@ )}(h4h]h4}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j? hj ubh)}(hj h]j|)}(hj h]h>https://fedoraproject.org/wiki/Changes/Noto_CJK_Variable_Fonts}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1j{hj ubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubeh}(h]j ah ]h"]4ah$]h&]j aj j_uh1j9 hj hKhj hhj Kubj: )}(h0https://build.opensuse.org/request/show/1157217 h](j@ )}(h5h]h5}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j? hj ubh)}(h/https://build.opensuse.org/request/show/1157217h]j|)}(hj h]h/https://build.opensuse.org/request/show/1157217}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1j{hj ubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubeh}(h]j ah ]h"]5ah$]h&]j aj j_uh1j9 hj hKhj hhj Kubh)}(hhh](h)}(h)Workarounds for building translations.pdfh]h)Workarounds for building translations.pdf}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj. hhhj hKubj)}(hhh](j)}(hXDenylist "variable font" Noto CJK fonts. - Create $HOME/deny-vf/fontconfig/fonts.conf from template below, with tweaks if necessary. Remove leading "". - Path of fontconfig/fonts.conf can be overridden by setting an env variable FONTS_CONF_DENY_VF. * Template:: /usr/share/fonts/google-noto-*-cjk-vf-fonts /usr/share/fonts/truetype/Noto*CJK*-VF.otf The denylisting is activated for "make pdfdocs". h](h)}(h(Denylist "variable font" Noto CJK fonts.h]h,Denylist “variable font” Noto CJK fonts.}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhjB ubj)}(hhh](j)}(hnCreate $HOME/deny-vf/fontconfig/fonts.conf from template below, with tweaks if necessary. Remove leading "". h]h)}(hmCreate $HOME/deny-vf/fontconfig/fonts.conf from template below, with tweaks if necessary. Remove leading "".h]hqCreate $HOME/deny-vf/fontconfig/fonts.conf from template below, with tweaks if necessary. Remove leading “”.}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK!hjW ubah}(h]h ]h"]h$]h&]uh1jhjT ubj)}(hXPath of fontconfig/fonts.conf can be overridden by setting an env variable FONTS_CONF_DENY_VF. * Template:: /usr/share/fonts/google-noto-*-cjk-vf-fonts /usr/share/fonts/truetype/Noto*CJK*-VF.otf The denylisting is activated for "make pdfdocs". h](h)}(h^Path of fontconfig/fonts.conf can be overridden by setting an env variable FONTS_CONF_DENY_VF.h]h^Path of fontconfig/fonts.conf can be overridden by setting an env variable FONTS_CONF_DENY_VF.}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK$hjo ubj)}(hhh]j)}(hX/Template:: /usr/share/fonts/google-noto-*-cjk-vf-fonts /usr/share/fonts/truetype/Noto*CJK*-VF.otf h](h)}(h Template::h]h Template:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK'hj ubj:)}(hX /usr/share/fonts/google-noto-*-cjk-vf-fonts /usr/share/fonts/truetype/Noto*CJK*-VF.otf h]hX /usr/share/fonts/google-noto-*-cjk-vf-fonts /usr/share/fonts/truetype/Noto*CJK*-VF.otf }hj sbah}(h]h ]h"]h$]h&]hhuh1j9hj hK)hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]j`*uh1jhj hK'hjo ubh)}(h0The denylisting is activated for "make pdfdocs".h]h4The denylisting is activated for “make pdfdocs”.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK=hjo ubeh}(h]h ]h"]h$]h&]uh1jhjT ubeh}(h]h ]h"]h$]h&]j`jauh1jhj hK!hjB ubeh}(h]h ]h"]h$]h&]uh1jhj? hhhNhNubj)}(hdFor skipping CJK pages in PDF - Uninstall texlive-xecjk. Denylisting is not needed in this case. h](h)}(hFor skipping CJK pages in PDFh]hFor skipping CJK pages in PDF}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK?hj ubj)}(hhh]j)}(hAUninstall texlive-xecjk. Denylisting is not needed in this case. h]h)}(h@Uninstall texlive-xecjk. Denylisting is not needed in this case.h]h@Uninstall texlive-xecjk. Denylisting is not needed in this case.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKAhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]j`jauh1jhj hKAhj ubeh}(h]h ]h"]h$]h&]uh1jhj? hhhNhNubj)}(hXbFor printing CJK pages in PDF - Need non-variable "Noto CJK" fonts. * Fedora - google-noto-sans-cjk-fonts - google-noto-serif-cjk-fonts * openSUSE tumbleweed - Non-variable "Noto CJK" fonts are not available as distro packages as of April, 2024. Fetch a set of font files from upstream Noto CJK Font released at: https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc and at: https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc then uncompress and deploy them. - Remember to update fontconfig cache by running fc-cache. h](h)}(hFor printing CJK pages in PDFh]hFor printing CJK pages in PDF}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKDhj ubj)}(hhh]j)}(hX)Need non-variable "Noto CJK" fonts. * Fedora - google-noto-sans-cjk-fonts - google-noto-serif-cjk-fonts * openSUSE tumbleweed - Non-variable "Noto CJK" fonts are not available as distro packages as of April, 2024. Fetch a set of font files from upstream Noto CJK Font released at: https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc and at: https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc then uncompress and deploy them. - Remember to update fontconfig cache by running fc-cache. h](h)}(h#Need non-variable "Noto CJK" fonts.h]h'Need non-variable “Noto CJK” fonts.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKFhjubj)}(hhh](j)}(hCFedora - google-noto-sans-cjk-fonts - google-noto-serif-cjk-fonts h](h)}(hFedorah]hFedora}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKHhj4ubj)}(hhh](j)}(hgoogle-noto-sans-cjk-fontsh]h)}(hjKh]hgoogle-noto-sans-cjk-fonts}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKJhjIubah}(h]h ]h"]h$]h&]uh1jhjFubj)}(hgoogle-noto-serif-cjk-fonts h]h)}(hgoogle-noto-serif-cjk-fontsh]hgoogle-noto-serif-cjk-fonts}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKKhj`ubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]j`jauh1jhj hKJhj4ubeh}(h]h ]h"]h$]h&]uh1jhj1ubj)}(hXopenSUSE tumbleweed - Non-variable "Noto CJK" fonts are not available as distro packages as of April, 2024. Fetch a set of font files from upstream Noto CJK Font released at: https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc and at: https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc then uncompress and deploy them. - Remember to update fontconfig cache by running fc-cache. h](h)}(hopenSUSE tumbleweedh]hopenSUSE tumbleweed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKMhjubj)}(hhh](j)}(hXINon-variable "Noto CJK" fonts are not available as distro packages as of April, 2024. Fetch a set of font files from upstream Noto CJK Font released at: https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc and at: https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc then uncompress and deploy them.h](h)}(hNon-variable "Noto CJK" fonts are not available as distro packages as of April, 2024. Fetch a set of font files from upstream Noto CJK Font released at:h]hNon-variable “Noto CJK” fonts are not available as distro packages as of April, 2024. Fetch a set of font files from upstream Noto CJK Font released at:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKOhjubj )}(h?https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc h]h)}(h>https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otch]j|)}(hjh]h>https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j{hjubah}(h]h ]h"]h$]h&]uh1hhj hKShjubah}(h]h ]h"]h$]h&]uh1j hj hKShjubh)}(hand at:h]hand at:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKUhjubj )}(h@https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc h]h)}(h?https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otch]j|)}(hjh]h?https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j{hjubah}(h]h ]h"]h$]h&]uh1hhj hKWhjubah}(h]h ]h"]h$]h&]uh1j hj hKWhjubh)}(h then uncompress and deploy them.h]h then uncompress and deploy them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKYhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(h9Remember to update fontconfig cache by running fc-cache. h]h)}(h8Remember to update fontconfig cache by running fc-cache.h]h8Remember to update fontconfig cache by running fc-cache.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKZhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j`jauh1jhj hKOhjubeh}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]j`j uh1jhj hKHhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j`jauh1jhj hKFhj ubeh}(h]h ]h"]h$]h&]uh1jhj? hhhNhNubeh}(h]h ]h"]h$]h&]j`j uh1jhj hKhj. hhubhcaution)}(hUninstalling "variable font" packages can be dangerous. They might be depended upon by other packages important for your work. Denylisting should be less invasive, as it is effective only while XeLaTeX runs in "make pdfdocs".h]h)}(hUninstalling "variable font" packages can be dangerous. They might be depended upon by other packages important for your work. Denylisting should be less invasive, as it is effective only while XeLaTeX runs in "make pdfdocs".h]hUninstalling “variable font” packages can be dangerous. They might be depended upon by other packages important for your work. Denylisting should be less invasive, as it is effective only while XeLaTeX runs in “make pdfdocs”.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK]hjUubah}(h]h ]h"]h$]h&]uh1jShj. hhhj hNubeh}(h])workarounds-for-building-translations-pdfah ]h"])workarounds for building translations.pdfah$]h&]uh1hhj hhhj hKubeh}(h]*detect-problematic-noto-cjk-variable-fontsah ]h"]*detect problematic noto cjk variable fontsah$]h&]uh1hhjc hhhj hKubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js7LatexFontChecker (class in lib.python.kdoc.latex_fonts),lib.python.kdoc.latex_fonts.LatexFontCheckerhNtauh1hhjc hhhNhNubjx)}(hhh](j})}(hLatexFontChecker(deny_vf=None)h](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontCheckerhKubj)}(hlib.python.kdoc.latex_fonts.h]hlib.python.kdoc.latex_fonts.}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(hLatexFontCheckerh]hLatexFontChecker}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h deny_vf=Noneh]j)}(h deny_vf=Noneh](j)}(hdeny_vfh]hdeny_vf}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h=h]h=}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hNoneh]hNone}(hjhhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.latex_fontsj2hj3jj4jjj6juh1j|hjhKhjhhubj8)}(hhh](h)}(hBases: :py:class:`object`h](hBases: }(hjhhhNhNubh)}(h:py:class:`object`h]j;)}(hjh]hobject}(hj!hhhNhNubah}(h]h ](jRpypy-classeh"]h$]h&]uh1j:hjubah}(h]h ]h"]h$]h&]refdocj_ refdomainj+reftypeclass refexplicitrefwarnjejjfjjgobjectuh1hhz/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fontshKhjubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontCheckerhKhjhhubh)}(hPDetect problems with CJK variable fonts that affect PDF builds for translations.h]hPDetect problems with CJK variable fonts that affect PDF builds for translations.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontCheckerhKhjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js=check() (lib.python.kdoc.latex_fonts.LatexFontChecker method)2lib.python.kdoc.latex_fonts.LatexFontChecker.checkhNtauh1hhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontChecker.checkhNubjx)}(hhh](j})}(hLatexFontChecker.check()h](j)}(hcheckh]hcheck}(hjjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjfhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontChecker.checkhKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhjfhhhjxhKubeh}(h]j`ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.latex_fontsj2jj3LatexFontChecker.checkj4jLatexFontCheckercheckj6LatexFontChecker.check()uh1j|hjxhKhjchhubj8)}(hhh]h)}(h"Check for problems with CJK fonts.h]h"Check for problems with CJK fonts.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjchhhjxhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhjhjbhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsCdescription() (lib.python.kdoc.latex_fonts.LatexFontChecker method)8lib.python.kdoc.latex_fonts.LatexFontChecker.descriptionhNtauh1hhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontChecker.descriptionhNubjx)}(hhh](j})}(hLatexFontChecker.description()h](j)}(h descriptionh]h description}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontChecker.descriptionhKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.latex_fontsj2jj3LatexFontChecker.descriptionj4jLatexFontChecker descriptionj6LatexFontChecker.description()uh1j|hjhKhjhhubj8)}(hhh]h)}(hReturns module description.h]hReturns module description.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhjhjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsMget_noto_cjk_vf_fonts() (lib.python.kdoc.latex_fonts.LatexFontChecker method)Blib.python.kdoc.latex_fonts.LatexFontChecker.get_noto_cjk_vf_fontshNtauh1hhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontChecker.get_noto_cjk_vf_fontshNubjx)}(hhh](j})}(h(LatexFontChecker.get_noto_cjk_vf_fonts()h](j)}(hget_noto_cjk_vf_fontsh]hget_noto_cjk_vf_fonts}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fonts.LatexFontChecker.get_noto_cjk_vf_fontshKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhjhhhj,hKubeh}(h]jah ](j+j,eh"]h$]h&]j0lib.python.kdoc.latex_fontsj2jj3&LatexFontChecker.get_noto_cjk_vf_fontsj4j=LatexFontCheckerget_noto_cjk_vf_fontsj6(LatexFontChecker.get_noto_cjk_vf_fonts()uh1j|hj,hKhjhhubj8)}(hhh]h)}(hGet Noto CJK fonts.h]hGet Noto CJK fonts.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjChhubah}(h]h ]h"]h$]h&]uh1j7hjhhhj,hKubeh}(h]h ](pymethodeh"]h$]h&]jj]jj^jj^jjjuh1jwhhhjhjhNubeh}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pyclasseh"]h$]h&]jjkjjljjljjjuh1jwhhhjc hNhNubeh}(h](j 2chinese-japanese-and-korean-variable-fonts-handlereh ]h"]3chinese, japanese and korean variable fonts handlerah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hKernel C file include logich]hKernel C file include logic}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhhhhhK!ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*module; lib.python.kdoc.parse_data_structs)module-lib.python.kdoc.parse_data_structshNtauh1hhjxhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structshNubh)}(hKParse a source file or header, creating ReStructured Text cross references.h]hKParse a source file or header, creating ReStructured Text cross references.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjxhhubh)}(hjIt accepts an optional file to change the default symbol reference or to suppress symbols from the output.h]hjIt accepts an optional file to change the default symbol reference or to suppress symbols from the output.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjxhhubh)}(hIt is capable of identifying ``define``, function, ``struct``, ``typedef``, ``enum`` and ``enum`` symbols and create cross-references for all of them. It is also capable of distinguish #define used for specifying a Linux ioctl.h](hIt is capable of identifying }(hjhhhNhNubj;)}(h ``define``h]hdefine}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh , function, }(hjhhhNhNubj;)}(h ``struct``h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh, }(hjhhhNhNubj;)}(h ``typedef``h]htypedef}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh, }(hjhhhNhNubj;)}(h``enum``h]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh and }(hjhhhNhNubj;)}(h``enum``h]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh symbols and create cross-references for all of them. It is also capable of distinguish #define used for specifying a Linux ioctl.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjxhhubh)}(h6The optional rules file contains a set of rules like::h]h5The optional rules file contains a set of rules like:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK hjxhhubj:)}(hignore ioctl VIDIOC_ENUM_FMT replace ioctl VIDIOC_DQBUF vidioc_qbuf replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det`h]hignore ioctl VIDIOC_ENUM_FMT replace ioctl VIDIOC_DQBUF vidioc_qbuf replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det`}hj*sbah}(h]h ]h"]h$]h&]hhuh1j9hjhK hjxhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js>ParseDataStructs (class in lib.python.kdoc.parse_data_structs)3lib.python.kdoc.parse_data_structs.ParseDataStructshNtauh1hhjxhhhNhNubjx)}(hhh](j})}(h%ParseDataStructs(debug: bool = False)h](j)}(h2[<#text: 'class'>, >]h](hclass}(hjMhhhNhNubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]hhuh1jhjIhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructshKubj)}(h#lib.python.kdoc.parse_data_structs.h]h#lib.python.kdoc.parse_data_structs.}(hjjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjIhhhjihKubj)}(hParseDataStructsh]hParseDataStructs}(hjxhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjIhhhjihKubj)}(hdebug: bool = Falseh]j)}(hdebug: bool = Falseh](j)}(hdebugh]hdebug}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hboolh]h)}(hhh]hbool}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainpyreftypej2 reftargetbool refspecific py:module"lib.python.kdoc.parse_data_structspy:classNuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h=h]h=}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hFalseh]hFalse}(hjhhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjIhhhjihKubeh}(h]jDah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2hj3jzj4j#jzj6jzuh1j|hjihKhjFhhubj8)}(hhh](h)}(hBases: :py:class:`object`h](hBases: }(hj(hhhNhNubh)}(h:py:class:`object`h]j;)}(hj2h]hobject}(hj4hhhNhNubah}(h]h ](jRpypy-classeh"]h$]h&]uh1j:hj0ubah}(h]h ]h"]h$]h&]refdocj_ refdomainj>reftypeclass refexplicitrefwarnjej#jfjzjgobjectuh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structshKhj(ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructshKhj%hhubh)}(hcCreates an enriched version of a Kernel header file with cross-links to each C data structure type.h]hcCreates an enriched version of a Kernel header file with cross-links to each C data structure type.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructshKhj%hhubh)}(hIt is meant to allow having a more comprehensive documentation, where uAPI headers will create cross-reference links to the code.h]hIt is meant to allow having a more comprehensive documentation, where uAPI headers will create cross-reference links to the code.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhj%hhubh)}(hIt is capable of identifying ``define``, function, ``struct``, ``typedef``, ``enum`` and ``enum`` symbols and create cross-references for all of them. It is also capable of distinguish #define used for specifying a Linux ioctl.h](hIt is capable of identifying }(hjuhhhNhNubj;)}(h ``define``h]hdefine}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjuubh , function, }(hjuhhhNhNubj;)}(h ``struct``h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjuubh, }(hjuhhhNhNubj;)}(h ``typedef``h]htypedef}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjuubh, }(hjuhhhNhNubj;)}(h``enum``h]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjuubh and }(hjuhhhNhNubj;)}(h``enum``h]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjuubh symbols and create cross-references for all of them. It is also capable of distinguish #define used for specifying a Linux ioctl.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhKhj%hhubh)}(hBy default, it create rules for all symbols and defines, but it also allows parsing an exception file. Such file contains a set of rules using the syntax below:h]hBy default, it create rules for all symbols and defines, but it also allows parsing an exception file. Such file contains a set of rules using the syntax below:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhK hj%hhubhenumerated_list)}(hhh]j)}(h)Ignore rules:: ignore ` h](h)}(hIgnore rules::h]h Ignore rules:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhjubj:)}(hignore `h]hignore `}hjsbah}(h]h ]h"]h$]h&]hhuh1j9hjfhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhjfhNubah}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jhj%hhhjfhKubh)}(h-Removes the symbol from reference generation.h]h-Removes the symbol from reference generation.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhj%hhubj)}(hhh](j)}(hReplace rules:: replace Replaces how old_symbol with a new reference. The new_reference can be: - A simple symbol name; - A full Sphinx reference. h](h)}(hReplace rules::h]hReplace rules:}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhj2ubj:)}(h+replace h]h+replace }hjDsbah}(h]h ]h"]h$]h&]hhuh1j9hjfhKhj2ubh)}(hGReplaces how old_symbol with a new reference. The new_reference can be:h]hGReplaces how old_symbol with a new reference. The new_reference can be:}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhj2ubj )}(h3- A simple symbol name; - A full Sphinx reference. h]j)}(hhh](j)}(hA simple symbol name;h]h)}(hjih]hA simple symbol name;}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhjgubah}(h]h ]h"]h$]h&]uh1jhjdubj)}(hA full Sphinx reference. h]h)}(hA full Sphinx reference.h]hA full Sphinx reference.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhj~ubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]j`jauh1jhjfhKhj`ubah}(h]h ]h"]h$]h&]uh1j hjfhKhj2ubeh}(h]h ]h"]h$]h&]uh1jhj/hhhjfhNubj)}(hNamespace rules:: namespace Sets C namespace to be used during cross-reference generation. Can be overridden by replace rules. h](h)}(hNamespace rules::h]hNamespace rules:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhjubj:)}(hnamespace h]hnamespace }hjsbah}(h]h ]h"]h$]h&]hhuh1j9hjfhK!hjubh)}(hbSets C namespace to be used during cross-reference generation. Can be overridden by replace rules.h]hbSets C namespace to be used during cross-reference generation. Can be overridden by replace rules.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhK#hjubeh}(h]h ]h"]h$]h&]uh1jhj/hhhjfhNubeh}(h]h ]h"]h$]h&]jjjhjj startKuh1jhj%hhhjfhKubhdefinition_list)}(hhh]hdefinition_list_item)}(hX2On ignore and replace rules, ```` can be: - ``ioctl``: for defines that end with ``_IO*``, e.g. ioctl definitions - ``define``: for other defines - ``symbol``: for symbols defined within enums; - ``typedef``: for typedefs; - ``enum``: for the name of a non-anonymous enum; - ``struct``: for structs. h](hterm)}(h/On ignore and replace rules, ```` can be:h](hOn ignore and replace rules, }(hjhhhNhNubj;)}(h ````h]h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh can be:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjfhK,hjubh definition)}(hhh]j)}(hhh](j)}(hE``ioctl``: for defines that end with ``_IO*``, e.g. ioctl definitionsh]h)}(hjh](j;)}(h ``ioctl``h]hioctl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh: for defines that end with }(hjhhhNhNubj;)}(h``_IO*``h]h_IO*}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh, e.g. ioctl definitions}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhK'hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h``define``: for other definesh]h)}(hjQh](j;)}(h ``define``h]hdefine}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjSubh: for other defines}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhK(hjOubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h-``symbol``: for symbols defined within enums;h]h)}(hjvh](j;)}(h ``symbol``h]hsymbol}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjxubh#: for symbols defined within enums;}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhK)hjtubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h``typedef``: for typedefs;h]h)}(hjh](j;)}(h ``typedef``h]htypedef}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh: for typedefs;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhK*hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h/``enum``: for the name of a non-anonymous enum;h]h)}(hjh](j;)}(h``enum``h]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh': for the name of a non-anonymous enum;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h``struct``: for structs. h]h)}(h``struct``: for structs.h](j;)}(h ``struct``h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh: for structs.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j`jauh1jhjfhK'hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjfhK,hjubah}(h]h ]h"]h$]h&]uh1jhj%hhhNhNubh)}(h Examples::h]h Examples:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhK.hj%hhubj:)}(hignore define __LINUX_MEDIA_H ignore ioctl VIDIOC_ENUM_FMT replace ioctl VIDIOC_DQBUF vidioc_qbuf replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det` namespace MCh]hignore define __LINUX_MEDIA_H ignore ioctl VIDIOC_ENUM_FMT replace ioctl VIDIOC_DQBUF vidioc_qbuf replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det` namespace MC}hj/sbah}(h]h ]h"]h$]h&]hhuh1j9hjfhK0hj%hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsPDEF_SYMBOL_TYPES (lib.python.kdoc.parse_data_structs.ParseDataStructs attribute)Dlib.python.kdoc.parse_data_structs.ParseDataStructs.DEF_SYMBOL_TYPEShNtauh1hhj%hhhQdocstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.DEF_SYMBOL_TYPEShNubjx)}(hhh](j})}(h!ParseDataStructs.DEF_SYMBOL_TYPESh](j)}(hDEF_SYMBOL_TYPESh]hDEF_SYMBOL_TYPES}(hjShhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjOhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.DEF_SYMBOL_TYPEShKubj)}(hXa{'define': {'description': 'Macros and Definitions', 'prefix': '\\ ', 'ref_type': ':ref', 'suffix': '\\ '}, 'enum': {'description': 'Enumerations', 'prefix': '\\ ', 'ref_type': ':c:type', 'suffix': '\\ '}, 'ioctl': {'description': 'IOCTL Commands', 'prefix': '\\ ', 'ref_type': ':ref', 'suffix': '\\ '}, 'struct': {'description': 'Structures', 'prefix': '\\ ', 'ref_type': ':c:type', 'suffix': '\\ '}, 'symbol': {'description': 'Enumeration values', 'prefix': '\\ ', 'ref_type': ':ref', 'suffix': '\\ '}, 'typedef': {'description': 'Type Definitions', 'prefix': '\\ ', 'ref_type': ':c:type', 'suffix': '\\ '}}h](j)}(h h]h }(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubj)}(h=h]h=}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubhXa{'define': {'description': 'Macros and Definitions', 'prefix': '\\ ', 'ref_type': ':ref', 'suffix': '\\ '}, 'enum': {'description': 'Enumerations', 'prefix': '\\ ', 'ref_type': ':c:type', 'suffix': '\\ '}, 'ioctl': {'description': 'IOCTL Commands', 'prefix': '\\ ', 'ref_type': ':ref', 'suffix': '\\ '}, 'struct': {'description': 'Structures', 'prefix': '\\ ', 'ref_type': ':c:type', 'suffix': '\\ '}, 'symbol': {'description': 'Enumeration values', 'prefix': '\\ ', 'ref_type': ':ref', 'suffix': '\\ '}, 'typedef': {'description': 'Type Definitions', 'prefix': '\\ ', 'ref_type': ':c:type', 'suffix': '\\ '}}}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]hhuh1jhjOhhhjahKubeh}(h]jIah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3!ParseDataStructs.DEF_SYMBOL_TYPESj4jParseDataStructsDEF_SYMBOL_TYPESj6juh1j|hjahKhjLhhubj8)}(hhh]h)}(h;Dictionary containing C type identifiers to be transformed.h]h;Dictionary containing C type identifiers to be transformed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjLhhhjahKubeh}(h]h ](py attributeeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hjKhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsHRE_ENUMS (lib.python.kdoc.parse_data_structs.ParseDataStructs attribute)lib.python.kdoc.parse_data_structs.ParseDataStructs.RE_STRUCTShNtauh1hhj%hhhKdocstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.RE_STRUCTShNubjx)}(hhh](j})}(hParseDataStructs.RE_STRUCTSh](j)}(h RE_STRUCTSh]h RE_STRUCTS}(hjahhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj]hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.RE_STRUCTShKubj)}(h[re.compile('^\\s*struct\\s+([_\\w][\\w\\d_]+)\\s*\\{'), re.compile('^\\s*struct\\s+([_\\w][\\w\\d_]+)$'), re.compile('^\\s*typedef\\s*struct\\s+([_\\w][\\w\\d_]+)\\s*\\{'), re.compile('^\\s*typedef\\s*struct\\s+([_\\w][\\w\\d_]+)$')]h](j)}(h h]h }(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(h=h]h=}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubh[re.compile('^\\s*struct\\s+([_\\w][\\w\\d_]+)\\s*\\{'), re.compile('^\\s*struct\\s+([_\\w][\\w\\d_]+)$'), re.compile('^\\s*typedef\\s*struct\\s+([_\\w][\\w\\d_]+)\\s*\\{'), re.compile('^\\s*typedef\\s*struct\\s+([_\\w][\\w\\d_]+)$')]}(hjphhhNhNubeh}(h]h ]h"]h$]h&]hhuh1jhj]hhhjohKubeh}(h]jWah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.RE_STRUCTSj4jParseDataStructs RE_STRUCTSj6juh1j|hjohKhjZhhubj8)}(hhh]h)}(h3Parser regex with multiple ways to capture structs.h]h3Parser regex with multiple ways to capture structs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjZhhhjohKubeh}(h]h ](py attributeeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hjYhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsOapply_exceptions() (lib.python.kdoc.parse_data_structs.ParseDataStructs method)Dlib.python.kdoc.parse_data_structs.ParseDataStructs.apply_exceptionshNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.apply_exceptionshNubjx)}(hhh](j})}(h#ParseDataStructs.apply_exceptions()h](j)}(happly_exceptionsh]happly_exceptions}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.apply_exceptionshKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3!ParseDataStructs.apply_exceptionsj4jParseDataStructsapply_exceptionsj6#ParseDataStructs.apply_exceptions()uh1j|hjhKhjhhubj8)}(hhh]h)}(hCProcess exceptions file with rules to ignore or replace references.h]hCProcess exceptions file with rules to ignore or replace references.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj hhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jj'jj(jj(jjjuh1jwhhhj%hjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsJdebug_print() (lib.python.kdoc.parse_data_structs.ParseDataStructs method)?lib.python.kdoc.parse_data_structs.ParseDataStructs.debug_printhNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.debug_printhNubjx)}(hhh](j})}(hParseDataStructs.debug_print()h](j)}(h debug_printh]h debug_print}(hjBhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.debug_printhKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhKubeh}(h]j8ah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.debug_printj4jaParseDataStructs debug_printj6ParseDataStructs.debug_print()uh1j|hjPhKhj;hhubj8)}(hhh]h)}(hrPrint debug information containing the replacement rules per symbol. To make easier to check, group them per type.h]hrPrint debug information containing the replacement rules per symbol. To make easier to check, group them per type.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKhjghhubah}(h]h ]h"]h$]h&]uh1j7hj;hhhjPhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hj:hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsIgen_output() (lib.python.kdoc.parse_data_structs.ParseDataStructs method)>lib.python.kdoc.parse_data_structs.ParseDataStructs.gen_outputhNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.gen_outputhNubjx)}(hhh](j})}(hParseDataStructs.gen_output()h](j)}(h gen_outputh]h gen_output}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.gen_outputhKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.gen_outputj4jParseDataStructs gen_outputj6ParseDataStructs.gen_output()uh1j|hjhKhjhhubj8)}(hhh]h)}(h%Write the formatted output to a file.h]h%Write the formatted output to a file.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsFgen_toc() (lib.python.kdoc.parse_data_structs.ParseDataStructs method);lib.python.kdoc.parse_data_structs.ParseDataStructs.gen_tochNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.gen_tochNubjx)}(hhh](j})}(hParseDataStructs.gen_toc()h](j)}(hgen_toch]hgen_toc}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.gen_tochKubj)}(h()h]h}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.gen_tocj4jParseDataStructsgen_tocj6ParseDataStructs.gen_toc()uh1j|hjhKhjhhubj8)}(hhh]h)}(hlib.python.kdoc.parse_data_structs.ParseDataStructs.parse_filehNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.parse_filehNubjx)}(hhh](j})}(hSParseDataStructs.parse_file(file_in: str, exceptions: ~typing.Optional[str] = None)h](j)}(h parse_fileh]h parse_file}(hjPhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjLhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.parse_filehKubj)}(h6file_in: str, exceptions: ~typing.Optional[str] = Noneh](j)}(h file_in: strh](j)}(hfile_inh]hfile_in}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj)}(h:h]h:}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj)}(hstrh]h)}(hhh]hstr}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]hhuh1jhj_ubj)}(h exceptions: Optional[str] = Noneh](j)}(h exceptionsh]h exceptions}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h Optional[str]h](h)}(hhh]hOptional}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypeobj reftargettyping.Optional refspecific py:modulej#py:classjzuh1hhjubj)}(h[h]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]hstr}(hj hhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubj)}(h]h]h]}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h=h]h=}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hNoneh]hNone}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj_ubeh}(h]h ]h"]h$]h&]hhuh1jhjLhhhj^hKubeh}(h]jFah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.parse_filej4j}ParseDataStructs parse_filej6ParseDataStructs.parse_file()uh1j|hj^hKhjIhhubj8)}(hhh]h)}(h)Read a C source file and get identifiers.h]h)Read a C source file and get identifiers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhKhjhhubah}(h]h ]h"]h$]h&]uh1j7hjIhhhj^hKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hjHhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsNread_exceptions() (lib.python.kdoc.parse_data_structs.ParseDataStructs method)Clib.python.kdoc.parse_data_structs.ParseDataStructs.read_exceptionshNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.read_exceptionshNubjx)}(hhh](j})}(h,ParseDataStructs.read_exceptions(fname: str)h](j)}(hread_exceptionsh]hread_exceptions}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.read_exceptionshKubj)}(h fname: strh]j)}(h fname: strh](j)}(hfnameh]hfname}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hstrh]h)}(hhh]hstr}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3 ParseDataStructs.read_exceptionsj4j)ParseDataStructsread_exceptionsj6"ParseDataStructs.read_exceptions()uh1j|hjhKhjhhubj8)}(hhh]h)}(hlib.python.kdoc.parse_data_structs.ParseDataStructs.store_linehNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.store_linehNubjx)}(hhh](j})}(h!ParseDataStructs.store_line(line)h](j)}(h store_lineh]h store_line}(hjdhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj`hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.store_linehKubj)}(hlineh]j)}(hlineh]j)}(hlineh]hline}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]hhuh1jhjsubah}(h]h ]h"]h$]h&]hhuh1jhj`hhhjrhKubeh}(h]jZah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.store_linej4jParseDataStructs store_linej6ParseDataStructs.store_line()uh1j|hjrhKhj]hhubj8)}(hhh]h)}(h-Store a line at self.data, properly indented.h]h-Store a line at self.data, properly indented.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhjhhubah}(h]h ]h"]h$]h&]uh1j7hj]hhhjrhKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hj\hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsIstore_type() (lib.python.kdoc.parse_data_structs.ParseDataStructs method)>lib.python.kdoc.parse_data_structs.ParseDataStructs.store_typehNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.store_typehNubjx)}(hhh](j})}(hParseDataStructs.store_type(ln, symbol_type: str, symbol: str, ref_name: ~typing.Optional[str] = None, replace_underscores: bool = True)h](j)}(h store_typeh]h store_type}(hjhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.store_typehKubj)}(hkln, symbol_type: str, symbol: str, ref_name: ~typing.Optional[str] = None, replace_underscores: bool = Trueh](j)}(hlnh]j)}(hlnh]hln}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjubj)}(hsymbol_type: strh](j)}(h symbol_typeh]h symbol_type}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hstrh]h)}(hhh]hstr}(hj3hhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhj/ubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubj)}(h symbol: strh](j)}(hsymbolh]hsymbol}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(h:h]h:}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(h h]h }(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(hstrh]h)}(hhh]hstr}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]hhuh1jhjubj)}(href_name: Optional[str] = Noneh](j)}(href_nameh]href_name}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h Optional[str]h](h)}(hhh]hOptional}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargettyping.Optional refspecific py:modulej#py:classjzuh1hhjubj)}(h[h]h[}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]hstr}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubj)}(h]h]h]}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h=h]h=}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hNoneh]hNone}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjubj)}(h replace_underscores: bool = Trueh](j)}(hreplace_underscoresh]hreplace_underscores}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h:h]h:}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(hboolh]h)}(hhh]hbool}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetbool refspecific py:modulej#py:classjzuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h=h]h=}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(hTrueh]hTrue}(hjhhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhj`ubeh}(h]h ]h"]h$]h&]hhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]jah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.store_typej4jParseDataStructs store_typej6ParseDataStructs.store_type()uh1j|hjhKhjhhubj8)}(hhh](h)}(h5Store a new symbol at self.symbols under symbol_type.h]h5Store a new symbol at self.symbols under symbol_type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubh)}(h.By default, underscores are replaced by ``-``.h](h(By default, underscores are replaced by }(hjhhhNhNubj;)}(h``-``h]h-}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubeh}(h]h ]h"]h$]h&]uh1j7hjhhhjhKubeh}(h]h ](pymethodeh"]h$]h&]jj7jj8jj8jjjuh1jwhhhj%hjhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsKwrite_output() (lib.python.kdoc.parse_data_structs.ParseDataStructs method)@lib.python.kdoc.parse_data_structs.ParseDataStructs.write_outputhNtauh1hhj%hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.write_outputhNubjx)}(hhh](j})}(hEParseDataStructs.write_output(file_in: str, file_out: str, toc: bool)h](j)}(h write_outputh]h write_output}(hjRhhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjNhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structs.ParseDataStructs.write_outputhKubj)}(h&file_in: str, file_out: str, toc: boolh](j)}(h file_in: strh](j)}(hfile_inh]hfile_in}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(h:h]h:}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(hstrh]h)}(hhh]hstr}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]hhuh1jhjaubj)}(h file_out: strh](j)}(hfile_outh]hfile_out}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hstrh]h)}(hhh]hstr}(hjhhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetstr refspecific py:modulej#py:classjzuh1hhjubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjaubj)}(h toc: boolh](j)}(htoch]htoc}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h:h]h:}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hboolh]h)}(hhh]hbool}(hj;hhhNhNubah}(h]h ]h"]h$]h&] refdomainjreftypej2 reftargetbool refspecific py:modulej#py:classjzuh1hhj7ubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjaubeh}(h]h ]h"]h$]h&]hhuh1jhjNhhhj`hKubeh}(h]jHah ](j+j,eh"]h$]h&]j0"lib.python.kdoc.parse_data_structsj2jzj3ParseDataStructs.write_outputj4jgParseDataStructs write_outputj6ParseDataStructs.write_output()uh1j|hj`hKhjKhhubj8)}(hhh]h)}(hWrite a ReST output file.h]hWrite a ReST output file.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjmhhubah}(h]h ]h"]h$]h&]uh1j7hjKhhhj`hKubeh}(h]h ](pymethodeh"]h$]h&]jjjjjjjjjuh1jwhhhj%hjJhNubeh}(h]h ]h"]h$]h&]uh1j7hjFhhhjihKubeh}(h]h ](pyclasseh"]h$]h&]jjjjjjjjjuh1jwhhhjxhNhNubeh}(h](jkernel-c-file-include-logiceh ]h"]kernel c file include logicah$]h&]uh1hhhhhhhhK!ubh)}(hhh](h)}(h Python version ancillary methodsh]h Python version ancillary methods}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK)ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&module; lib.python.kdoc.python_version%module-lib.python.kdoc.python_versionhNtauh1hhjhhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_versionhNubh)}(h"Handle Python version check logic.h]h"Handle Python version check logic.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubh)}(hNot all Python versions are supported by scripts. Yet, on some cases, like during documentation build, a newer version of python could be available.h]hNot all Python versions are supported by scripts. Yet, on some cases, like during documentation build, a newer version of python could be available.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubh)}(hDThis class allows checking if the minimal requirements are followed.h]hDThis class allows checking if the minimal requirements are followed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubh)}(hBetter than that, PythonVersion.check_python() not only checks the minimal requirements, but it automatically switches to a the newest available Python version if present.h]hBetter than that, PythonVersion.check_python() not only checks the minimal requirements, but it automatically switches to a the newest available Python version if present.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK hjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](js7PythonVersion (class in lib.python.kdoc.python_version),lib.python.kdoc.python_version.PythonVersionhNtauh1hhjhhhNhNubjx)}(hhh](j})}(hPythonVersion(version)h](j)}(h2[<#text: 'class'>, >]h](hclass}(hj hhhNhNubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersionhKubj)}(hlib.python.kdoc.python_version.h]hlib.python.kdoc.python_version.}(hj, hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj+ hKubj)}(h PythonVersionh]h PythonVersion}(hj: hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj+ hKubj)}(hversionh]j)}(hversionh]j)}(hversionh]hversion}(hjP hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL ubah}(h]h ]h"]h$]h&]hhuh1jhjH ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj+ hKubeh}(h]j ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2hj3j< j4jp j< j6j< uh1j|hj+ hKhj hhubj8)}(hhh](h)}(hBases: :py:class:`object`h](hBases: }(hju hhhNhNubh)}(h:py:class:`object`h]j;)}(hj h]hobject}(hj hhhNhNubah}(h]h ](jRpypy-classeh"]h$]h&]uh1j:hj} ubah}(h]h ]h"]h$]h&]refdocj_ refdomainj reftypeclass refexplicitrefwarnjejp jfj< jgobjectuh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_versionhKhju ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersionhKhjr hhubh)}(hAncillary methods that checks for missing dependencies for different types of types, like binaries, python modules, rpm deps, etc.h]hAncillary methods that checks for missing dependencies for different types of types, like binaries, python modules, rpm deps, etc.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersionhKhjr hhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsKcheck_python() (lib.python.kdoc.python_version.PythonVersion static method)9lib.python.kdoc.python_version.PythonVersion.check_pythonhNtauh1hhjr hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.check_pythonhNubjx)}(hhh](j})}(hhPythonVersion.check_python(min_version, show_alternatives=False, bail_out=False, success_on_error=False)h](j)}(h3[<#text: 'static'>, >]h](hstatic}(hj hhhNhNubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.check_pythonhKubj)}(h check_pythonh]h check_python}(hj hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hKubj)}(hLmin_version, show_alternatives=False, bail_out=False, success_on_error=Falseh](j)}(h min_versionh]j)}(h min_versionh]h min_version}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj ubj)}(hshow_alternatives=Falseh](j)}(hshow_alternativesh]hshow_alternatives}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(h=h]h=}(hj#!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(hFalseh]hFalse}(hj1!hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhj!ubeh}(h]h ]h"]h$]h&]hhuh1jhj ubj)}(hbail_out=Falseh](j)}(hbail_outh]hbail_out}(hjJ!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF!ubj)}(h=h]h=}(hjX!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF!ubj)}(hFalseh]hFalse}(hjf!hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhjF!ubeh}(h]h ]h"]h$]h&]hhuh1jhj ubj)}(hsuccess_on_error=Falseh](j)}(hsuccess_on_errorh]hsuccess_on_error}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{!ubj)}(h=h]h=}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{!ubj)}(hFalseh]hFalse}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhj{!ubeh}(h]h ]h"]h$]h&]hhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]j ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2j< j3PythonVersion.check_pythonj4j! PythonVersion check_pythonj6PythonVersion.check_python()uh1j|hj hKhj hhubj8)}(hhh]h)}(hCheck if the current python binary satisfies our minimal requirement for Sphinx build. If not, re-run with a newer version if found.h]hCheck if the current python binary satisfies our minimal requirement for Sphinx build. If not, re-run with a newer version if found.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj!hhubah}(h]h ]h"]h$]h&]uh1j7hj hhhj hKubeh}(h]h ](pymethodeh"]h$]h&]jj!jj!jj!jjjuh1jwhhhjr hj hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsHcmd_print() (lib.python.kdoc.python_version.PythonVersion static method)6lib.python.kdoc.python_version.PythonVersion.cmd_printhNtauh1hhjr hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.cmd_printhNubjx)}(hhh](j})}(h(PythonVersion.cmd_print(cmd, max_len=80)h](j)}(h3[<#text: 'static'>, >]h](hstatic}(hj!hhhNhNubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]hhuh1jhj!hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.cmd_printhKubj)}(h cmd_printh]h cmd_print}(hj"hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj"hKubj)}(hcmd, max_len=80h](j)}(hcmdh]j)}(hcmdh]hcmd}(hj*"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&"ubah}(h]h ]h"]h$]h&]hhuh1jhj""ubj)}(h max_len=80h](j)}(hmax_lenh]hmax_len}(hjB"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>"ubj)}(h=h]h=}(hjP"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>"ubj)}(h80h]h80}(hj^"hhhNhNubah}(h]h ]jah"]h$]h&]support_smartquotesuh1jhj>"ubeh}(h]h ]h"]h$]h&]hhuh1jhj""ubeh}(h]h ]h"]h$]h&]hhuh1jhj!hhhj"hKubeh}(h]j!ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2j< j3PythonVersion.cmd_printj4j" PythonVersion cmd_printj6PythonVersion.cmd_print()uh1j|hj"hKhj!hhubj8)}(hhh]h)}(h0Outputs a command line, repecting maximum width.h]h0Outputs a command line, repecting maximum width.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKhj"hhubah}(h]h ]h"]h$]h&]uh1j7hj!hhhj"hKubeh}(h]h ](pymethodeh"]h$]h&]jj"jj"jj"jjjuh1jwhhhjr hj!hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsJfind_python() (lib.python.kdoc.python_version.PythonVersion static method)8lib.python.kdoc.python_version.PythonVersion.find_pythonhNtauh1hhjr hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.find_pythonhNubjx)}(hhh](j})}(h&PythonVersion.find_python(min_version)h](j)}(h3[<#text: 'static'>, >]h](hstatic}(hj"hhhNhNubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]hhuh1jhj"hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.find_pythonhKubj)}(h find_pythonh]h find_python}(hj"hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj"hhhj"hKubj)}(h min_versionh]j)}(h min_versionh]j)}(h min_versionh]h min_version}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]hhuh1jhj"ubah}(h]h ]h"]h$]h&]hhuh1jhj"hhhj"hKubeh}(h]j"ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2j< j3PythonVersion.find_pythonj4j # PythonVersion find_pythonj6PythonVersion.find_python()uh1j|hj"hKhj"hhubj8)}(hhh](h)}(hKDetect if are out there any python 3.xy version newer than the current one.h]hKDetect if are out there any python 3.xy version newer than the current one.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj#hhubh)}(h}Note: this routine is limited to up to 2 digits for python3. We may need to update it one day, hopefully on a distant future.h]h}Note: this routine is limited to up to 2 digits for python3. We may need to update it one day, hopefully on a distant future.}(hj$#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj#hhubeh}(h]h ]h"]h$]h&]uh1j7hj"hhhj"hKubeh}(h]h ](pymethodeh"]h$]h&]jj;#jj<#jj<#jjjuh1jwhhhjr hj"hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsQget_python_version() (lib.python.kdoc.python_version.PythonVersion static method)?lib.python.kdoc.python_version.PythonVersion.get_python_versionhNtauh1hhjr hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.get_python_versionhNubjx)}(hhh](j})}(h%PythonVersion.get_python_version(cmd)h](j)}(h3[<#text: 'static'>, >]h](hstatic}(hjV#hhhNhNubj)}(h h]h }(hj^#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV#ubeh}(h]h ]h"]h$]h&]hhuh1jhjR#hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.get_python_versionhKubj)}(hget_python_versionh]hget_python_version}(hjs#hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjR#hhhjr#hKubj)}(hcmdh]j)}(hcmdh]j)}(hcmdh]hcmd}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]hhuh1jhj#ubah}(h]h ]h"]h$]h&]hhuh1jhjR#hhhjr#hKubeh}(h]jL#ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2j< j3 PythonVersion.get_python_versionj4j# PythonVersionget_python_versionj6"PythonVersion.get_python_version()uh1j|hjr#hKhjO#hhubj8)}(hhh]h)}(hGet python version from a Python binary. As we need to detect if are out there newer python binaries, we can't rely on sys.release here.h]hGet python version from a Python binary. As we need to detect if are out there newer python binaries, we can’t rely on sys.release here.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN#hKhj#hhubah}(h]h ]h"]h$]h&]uh1j7hjO#hhhjr#hKubeh}(h]h ](pymethodeh"]h$]h&]jj#jj#jj#jjjuh1jwhhhjr hjN#hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsLparse_version() (lib.python.kdoc.python_version.PythonVersion static method):lib.python.kdoc.python_version.PythonVersion.parse_versionhNtauh1hhjr hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.parse_versionhNubjx)}(hhh](j})}(h$PythonVersion.parse_version(version)h](j)}(h3[<#text: 'static'>, >]h](hstatic}(hj#hhhNhNubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]hhuh1jhj#hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.parse_versionhKubj)}(h parse_versionh]h parse_version}(hj$hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhj#hhhj$hKubj)}(hversionh]j)}(hversionh]j)}(hversionh]hversion}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhj#hhhj$hKubeh}(h]j#ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2j< j3PythonVersion.parse_versionj4j7$ PythonVersion parse_versionj6PythonVersion.parse_version()uh1j|hj$hKhj#hhubj8)}(hhh]h)}(h1Convert a major.minor.patch version into a tuple.h]h1Convert a major.minor.patch version into a tuple.}(hj@$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hKhj=$hhubah}(h]h ]h"]h$]h&]uh1j7hj#hhhj$hKubeh}(h]h ](pymethodeh"]h$]h&]jjW$jjX$jjX$jjjuh1jwhhhjr hj#hNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](jsFver_str() (lib.python.kdoc.python_version.PythonVersion static method)4lib.python.kdoc.python_version.PythonVersion.ver_strhNtauh1hhjr hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.ver_strhNubjx)}(hhh](j})}(hPythonVersion.ver_str(version)h](j)}(h3[<#text: 'static'>, >]h](hstatic}(hjr$hhhNhNubj)}(h h]h }(hjz$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjr$ubeh}(h]h ]h"]h$]h&]hhuh1jhjn$hhh/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_version.PythonVersion.ver_strhKubj)}(hver_strh]hver_str}(hj$hhhNhNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjn$hhhj$hKubj)}(hversionh]j)}(hversionh]j)}(hversionh]hversion}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhjn$hhhj$hKubeh}(h]jh$ah ](j+j,eh"]h$]h&]j0lib.python.kdoc.python_versionj2j< j3PythonVersion.ver_strj4j$ PythonVersionver_strj6PythonVersion.ver_str()uh1j|hj$hKhjk$hhubj8)}(hhh]h)}(h-Returns a version tuple as major.minor.patch.h]h-Returns a version tuple as major.minor.patch.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj$hKhj$hhubah}(h]h ]h"]h$]h&]uh1j7hjk$hhhj$hKubeh}(h]h ](pymethodeh"]h$]h&]jj$jj$jj$jjjuh1jwhhhjr hjj$hNubeh}(h]h ]h"]h$]h&]uh1j7hj hhhj+ hKubeh}(h]h ](pyclasseh"]h$]h&]jj$jj$jj$jjjuh1jwhhhjhNhNubeh}(h](j python-version-ancillary-methodseh ]h"] python version ancillary methodsah$]h&]uh1hhhhhhhhK)ubeh}(h]ancillary-classesah ]h"]ancillary classesah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj+%error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM' pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}(1]j a2]j a3]j a4]j a5]j aurefids}nameids}(j%j%j jj` j] jujrjzjwjj j j j j j j j j+ j jrjojjj$j$u nametypes}(j%j j` jujzjj j j j j+ jrjj$uh}(j%hjhhhtarget)}(hhh]h}(h]hah ]h"]h$]h&]ismoduh1j|%h/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/enrich_formatter.py:docstring of lib.python.kdoc.enrich_formatterhKhhhhubjuj~jjj] jj+j}%)}(hhh]h}(h]j+ah ]h"]h$]h&]ismoduh1j|%hr/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/kdoc_re.py:docstring of lib.python.kdoc.kdoc_rehKhjhhubjVj[jjj jj}jjjjajgjjjjjjj, j1 j j j< jB jrjc jwj j j j j j j j j j j j j; j jm j j j j j j joj. j j}%)}(hhh]h}(h]j ah ]h"]h$]h&]ismoduh1j|%hz/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/latex_fonts.py:docstring of lib.python.kdoc.latex_fontshKhjc hhubjjj`jfjjjjjjxjj}%)}(hhh]h}(h]jah ]h"]h$]h&]ismoduh1j|%h/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/parse_data_structs.py:docstring of lib.python.kdoc.parse_data_structshKhjxhhubjDjIjIjOjjjWj]jjj8j>jjjjjFjLjjjZj`jjjHjNj$jjj}%)}(hhh]h}(h]jah ]h"]h$]h&]ismoduh1j|%h/var/lib/git/docbuild/linux/Documentation/../tools/lib/python/kdoc/python_version.py:docstring of lib.python.kdoc.python_versionhKhjhhubj j j j j!j!j"j"jL#jR#j#j#jh$jn$u footnote_refs}(jk%]j ajm%]j ajo%]j ajq%]j ajs%]j au citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes](j; jm j j j e citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j9%K sRparse_messages]hsystem_message)}(hhh]h)}(h:Enumerated list start value not ordinal-1: "2" (ordinal 2)h]h>Enumerated list start value not ordinal-1: “2” (ordinal 2)}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcejJlineKuh1j%hj%hhhjfhKubatransform_messages] transformerN include_log] decorationNhhub.