
    }ctK                         d Z ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZmZmZmZ ddlZddlmZmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ dej        v r!ej        d                             d          Zng dZd ee	          z   Z  e
j!        edd          Z"de#de$fdZ%de#de#fdZ&d9de#dee#         de$fdZ'de#de#deddfdZ(	 d:de#d e#ded!e#ddf
d"Z)g dfd#e#d$e#d%e#d&ee#         ded'ee#         d(e$d)ee#         d!e#ddfd*Z*	 	 d;d+ee#         dede#d!e#ddf
d,Z+g fde#ded)ee#         de$fd-Z,de#ded)ee#         de$fd.Z-d/e#d)ee#         dedeee#ee#         ee#         f         ddf         fd0Z.d/e#d)ee#         dede$fd1Z/	 d:d/e#d)ee#         ded!e#dee#         f
d2Z0d#e#d)ee#         de$fd3Z1dej2        fd4Z3ej4        d5d         fd6ee#         de5fd7Z6e7d8k    r e6             dS dS )<u  Creates reST files corresponding to Python modules for code documentation.

Parses a directory tree looking for Python modules and packages and creates
ReST files appropriately to create code documentation with Sphinx.  It also
creates a modules index (named modules.<suffix>).

This is derived from the "sphinx-autopackage" script, which is:
Copyright 2008 Société des arts technologiques (SAT),
https://sat.qc.ca/
    N)copyfnmatch)EXTENSION_SUFFIXES)path)Any	GeneratorListTuple)__display_version__package_dir)
EXTENSIONS)__)FileAvoidWrite	ensuredir)ReSTRendererSPHINX_APIDOC_OPTIONS,)memberszundoc-memberszshow-inheritance)z.pyz.pyx	templatesapidocfilenamereturnc                     t          j        |           }t          t          t          d          D ]}|d|z   k    r dS dS )z)Check *filename* is __init__ file or not.T)keyreverse__init__F)r   basenamesortedPY_SUFFIXESlen)r   r   suffixs      1lib/python3.11/site-packages/sphinx/ext/apidoc.py	is_initpyr$   .   sT    }X&&H#t<<<  zF** 	44	 u    modnamesc                  H    d                     t          d|                     S )zJoin module names with dots..N)joinfilter)r&   s    r#   module_joinr+   8   s    88F4**+++r%   dirnamefilesc                 l    || dS |t          j        |           }t          d |D                       S )z+Check given *files* contains __init__ file.NFc              3   8   K   | ]}t          |          |V  d S Nr$   .0fs     r#   	<genexpr>z is_packagedir.<locals>.<genexpr>D   s-      00Q9Q<<0q000000r%   )oslistdirany)r,   r-   s     r#   is_packagedirr9   =   sJ      u $
7##00%000000r%   nametextoptsc                     t          |dd          }t          j        |j        | d|j                  }|j        r#|st          t          d          |z             dS |j        s9t          j	        |          r%|s!t          t          d          |z             dS dS |st          t          d          |z             t          |          5 }|                    |           ddd           dS # 1 swxY w Y   dS )z0Write the output file for module/package <name>.quietNr(   zWould create file %s.z!File %s already exists, skipping.zCreating file %s.)getattrr   r)   destdirr"   dryrunprintr   forceisfiler   write)r:   r;   r<   r>   fnamer4   s         r#   
write_filerG   G   s\   D'4((EIdltttT[[$ABBE{  	7",--5666: $+e,,  	C"899EABBBBB	C 	C  	3"())E1222E"" 	aGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   C33C7:C7packager   user_template_dirc                    t          t                    }|j        rd|vr|                    d           t	          | |          }|j         |||d}t          |t          g                              d|          }t          |||           dS ).Build the text of the file and write the file.private-members)show_headingsr   qualnameautomodule_optionszmodule.rst_tN)
r   OPTIONSincludeprivateappendr+   
noheadingsr   template_dirrenderrG   )rH   r   r<   rI   optionsrN   contextr;   s           r#   create_module_filerX   Z   s     7mmG *0? *()))7H--H!_,%	 G *L9::AA.RYZZDxt$$$$$r%   rootmaster_packagesubrootpy_filessubsis_namespaceexcludesc	           
      2     fd|D             }	 fd|D             }
t          t          |
                    }
fd|
D             }
t          t                    }j        rd|vr|                    d           t                    }||	|
|j        j        |j	         j
        d	}t          |t          g                              d|          }t          ||           |
rj        r|
D ]}t          d||           dS dS dS )rK   c                 z    g | ]7}t          t          j        |                    &t          |          8S  )is_skipped_packager   r)   r+   )r3   pkgnamer_   rZ   r<   rY   r[   s     r#   
<listcomp>z'create_package_file.<locals>.<listcomp>q   sY     X X X,TYtW-E-EtXVVX;~w@@ X X Xr%   c                     g | ]P}t          t          j        |                    &t          |          5|                    d           d         QS )r(   r   )is_skipped_moduler   r)   r$   split)r3   subr_   r<   rY   s     r#   re   z'create_package_file.<locals>.<listcomp>u   sb     & & &*49T3+?+?xPP&nn&#))C..# & & &r%   c                 2    g | ]}t          |          S rb   )r+   )r3   modnamerZ   r[   s     r#   re   z'create_package_file.<locals>.<listcomp>y   s5     - - - ngw?? - - -r%   rL   )	rd   subpackages
submodulesr^   modulefirstseparatemodulesrO   rM   maxdepthzpackage.rst_tN)r   setr   rP   rQ   rR   r+   rn   ro   rS   rp   r   rT   rU   rG   rX   )rY   rZ   r[   r\   r<   r]   r^   r_   rI   rl   rm   rV   rd   rW   r;   	submodules   ``` `  `        r#   create_package_filers   l   s   
X X X X X X X X"&X X XK& & & & & &x & & &J J((J- - - - -!+- - -J7mmG *0? *())).'22G" $'/%!_,M
 
G *L9::AA/SZ[[Dwd### Id* I# 	I 	IItY6GHHHHI I I I	I 	Ir%   modulesc                 B   |                                   d}| dd         D ]2}|                    |dz             r|                     |           0|}3|j        |j        | d}t          |t          g                              d|          }t          |||           dS )zCreate the module's index. Nr(   )headerrp   docnamesz	toc.rst_t)	sort
startswithremoverw   rp   r   rT   rU   rG   )rt   r<   r:   rI   prev_modulemodulerW   r;   s           r#   create_modules_toc_filer~      s     LLNNNK!!!* ! ![3.// 	!NN6"""" KK +M G
 *L9::AA+wWWDtT4     r%   c                     t          j                   sdS t          j        t          j         d                    }t	          d |D                       }|s	|j        sdS t           fd|D                       rdS dS )%Check if we want to skip this module.Fz*.pyc              3   8   K   | ]}t          |          |V  d S r0   r1   r2   s     r#   r5   z%is_skipped_package.<locals>.<genexpr>   s-      ;;ill;!;;;;;;r%   Tc              3   ^   K   | ]'}t          t          j        |                    V  (d S r0   )is_excludedr   r)   )r3   r4   r,   r_   s     r#   r5   z%is_skipped_package.<locals>.<genexpr>   s9      
G
GA;ty!,,h77
G
G
G
G
G
Gr%   )r   isdirglobr)   r8   implicit_namespacesall)r,   r<   r_   r-   regular_packages   ` `  r#   rc   rc      s    :g uIdi0011E;;U;;;;;O 4#; t 
G
G
G
G
G
G
G
GGG tur%   c                     t          j        |           sdS t          j        |                               d          r	|j        sdS dS )r   T_F)r   existsr   rz   rQ   )r   r<   r_   s      r#   rg   rg      sM    ;x   t	x	 	 	+	+C	0	0 9L tur%   rootpathc              #   &  K   t          |dd          }t          |dd          }t          j        | |          D ]R\  }}t          fd|D                       }|rdndt          fd|D                       |d	d	<   ||fV  Sd	S )
z@Walk through the directory and list files and subdirectories up.followlinksFrQ   )r   c              3      K   | ]C}|                     t                    t          t          j        |                    ?|V  Dd S r0   )endswithr    r   r   r)   )r3   r4   r_   rY   s     r#   r5   zwalk.<locals>.<genexpr>   so       F FQ**[11F&tyq'9'98DDFq F F F F F Fr%   )r(   )r(   r   c              3      K   | ]>}|                               t          t          j        |                    :|V  ?d S r0   )rz   r   r   r)   )r3   ri   exclude_prefixesr_   rY   s     r#   r5   zwalk.<locals>.<genexpr>   so       J JCNNCS4T4T J(4)=)=xHHJ J J J J J Jr%   N)r?   r6   walkr   )	r   r_   r<   r   rQ   r]   r-   r   rY   s	    `     @@r#   r   r      s"      $u55KT#3U;;NWX;GGG    dE F F F F F% F F F F F  	*06) J J J J J J J J J J JQQQ D%!   r%   c                 @    t          | ||          D ]\  }}}|r dS dS )zACheck the given directory contains child module/s (at least one).TF)r   )r   r_   r<   _root_subsr-   s         r#   has_child_moduler      s?    #Hh==  ue 	44	 5r%   c                 *   t          |dd          }t          |           s|r&|                     t          j                  d         }nd}g }t          | ||          D ]\  }}}	t          d|	          }
|
 o|}|
rH|	dd         D ]<}t          |          r+|	                    |           |	                    d|           =n|| k    r|s|dd= t|
s|r|s#t          |	          dk    st          ||          s|t          |           d                             t          j                                      t          j        d          }|rt          |||          r:t          ||||	|||||	  	         |                    t!          ||                     >|| k    r|J |	D ]h}t#          t          j        | |          ||          sB|                    d          d         }t'          ||||           |                    |           i|S )z`
    Look for every file in the directory tree and create the corresponding
    ReST files.
    r   FNr      r(   )r?   r9   rh   r   sepr   r$   r{   insertr!   rc   lstripreplacer   rs   rR   r+   rg   r)   rX   )r   r_   r<   rI   r   root_package	toplevelsrY   r]   r-   is_pkgr^   r4   
subpackagepy_filer}   s                   r#   recurse_treer      s    "$(=uEE X "5 ~~dh//3 I!(Hd;; !- !-dEtU++!z9&9 		111X ' 'Q<< 'LLOOOLLA&&&' X 	& G 	-\ 	- 	Ls5zzA~ 	L-?d-K-K 	L!#h--..188BBGDHc**  $ L'7h'M'M L'lJ(-tT<(9; ; ; $$[z%J%JKKK 8#<<<<  - -(8W)E)EtXVV -$]]3//2F&|VTCTUUU$$V,,,	- r%   c                 6    |D ]}t          | |          r dS dS )zCheck if the directory is in the exclude list.

    Note: by having trailing slashes, we avoid common prefix issues, like
          e.g. an exclude "foo" also accidentally excluding "foobar".
    TFr   )rY   r_   excludes      r#   r   r     s6       4!! 	44	5r%   c                     t          j        dt          d          t          d                    } |                     ddddt          z  	           |                     d
t          d                     |                     ddt          d                     |                     dddddt          d                     |                     dddt          d                     |                     ddddt
          d t          d!          "           |                     d#d$dd%t          d&                     |                     d'd(dd)d*t          d+          ,           |                     d-d.dd/t          d0                     |                     d1d2dd3t          d4                     |                     d5d6dd7t          d8                     |                     d9dd:d;t          d<          ,           |                     d=d>d?d:t          d@                     |                     dAdBddCt          dD                     |                     dEdFddGt          dH                     |                     dIddJt          dK                     |                     dLdMddNdOt          dP          ,           |                     dQdRddSt          dT                     |                     dUdVddWt          dX                     |                     dYdZdd[t          d\                     |                     d]d^dd_t          d`                     |                     dadbddt          dc                     |                     dddeddft          dg                     |                     t          dh                    }|                    didjdkdlt          dm          n           t          D ]2}|                    do|z  dpdq|z  dkt          dr          |z  s           3|                     t          dt                    }|                    dudvdwdxt          dy          z           | S ){NzH%(prog)s [OPTIONS] -o <OUTPUT_PATH> <MODULE_PATH> [EXCLUDE_PATTERN, ...]z:For more information, visit <https://www.sphinx-doc.org/>.aE  
Look recursively in <MODULE_PATH> for Python modules and packages and create
one reST file with automodule directives per package in the <OUTPUT_PATH>.

The <EXCLUDE_PATTERN>s can be file and/or directory patterns that will be
excluded from generation.

Note: By default this script will not overwrite already created files.)usageepilogdescriptionz	--versionversionshow_versionz%%(prog)s %s)actiondestr   module_pathzpath to module to document)helpexclude_pattern*zGfnmatch-style file and/or directory patterns to exclude from generation)nargsr   z-oz--output-dirstorer@   Tzdirectory to place all output)r   r   requiredr   z-q
store_truer>   z,no output on stdout, just warnings on stderr)r   r   r   z-dz
--maxdepthrp      z;maximum depth of submodules to show in the TOC (default: 4))r   r   typedefaultr   z-fz--forcerC   zoverwrite existing filesz-lz--follow-linksr   FzNfollow symbolic links. Powerful when combined with collective.recipe.omelette.)r   r   r   r   z-nz	--dry-runrA   z%run the script without creating filesz-ez
--separatero   z1put documentation for each module on its own pagez-Pz	--privaterQ   zinclude "_private" modulesz	--tocfiletocfilert   z0filename of table of contents (default: modules)z-Tz--no-tocstore_falsez%don't create a table of contents filez-Ez--no-headingsrS   zedon't create headings for the module/package packages (e.g. when the docstrings already contain them)z-Mz--module-firstrn   z7put module documentation before submodule documentationz--implicit-namespacesr   zNinterpret module paths according to PEP-0420 implicit namespaces specificationz-sz--suffixr"   rstzfile suffix (default: rst)z-Fz--fullfullz.generate a full project with sphinx-quickstartz-az--append-syspathappend_syspathz9append module_path to sys.path, used when --full is givenz-Hz--doc-projectrw   z(project name (default: root module name)z-Az--doc-authorauthorz,project author(s), used when --full is givenz-Vz--doc-versionz*project version, used when --full is givenz-Rz--doc-releasereleasezEproject release, used when --full is given, defaults to --doc-versionzextension optionsz--extensionsr   
extensionsrR   zenable arbitrary extensions)metavarr   r   r   z--ext-%sappend_constzsphinx.ext.%szenable %s extension)r   constr   r   zProject templatingz-tz--templatedirTEMPLATEDIRtemplatedirz%template directory for template files)r   r   r   )argparseArgumentParserr   add_argumentr   intadd_argument_groupr   )parsergroupexts      r#   
get_parserr   +  s*   $'NOO J K K	L L LF IN .1D D  F F F  <==  ? ? ?
) != > >  ? ? ? nW9!% ?@@  B B B \ NOO  Q Q Q
l7 ! !/ 0 0  1 1 1 i7 :;;  = = =
.|*E !C D D  E E E k,X GHH  J J J
l<. STT  V V V k,- <==  ? ? ? G)Y RSS  U U U
jY GHH  J J J
ol) !0 1 1  2 2 2
 .|* !0 1 1  2 2 2 /2 !D E E  F F F jx % <==  ? ? ? h|& PQQ  S S S
0- [\\  ^ ^ ^ ogH JKK  M M M
nW8 NOO  Q Q Q
ogI LMM  O O O
ogI !< = =  > > > %%b)<&=&=>>E	~|,&R0M-N-N  P P P A A:+N!03!6\ "#8 9 9C ? 	 	A 	A 	A 	A %%b)=&>&>??E	t_m)FGG  I I I Mr%   r   argvc                    t           j                            t          j        d           t           j                            t
          j                            t          d          d           t                      }|
                    |           }t          j        |j                  }|j        *|                    t          j                  d         |_        |j                            d          r|j        dd         |_        t          j        |          s?t'          t)          d          |z  t*          j        	           t+          j        d           |j        st3          |j                   d
 |j        D             }t9          ||||j                  }|j        rxddlm } |!                                 d}d}|D ]%}	|	                    |dz             r|	}|d|	z  z  }&i d|j        ddddd|j        d|j"        pdd|j#        pdd|j$        p|j#        pddd|j        z   dddddg dddd dd!dd"|j%        d#|d$d%||j&        d&}
|j'        r |
d         (                    |j'                   |j)        rd|
d'<   |
d         dd         D ]O}d(|v rI|
d         *                    |           |
d         (                    |                    d(                     P|j        s#|+                    |
d|j,        |j        )           n#|j-        rt]          |||j-        |j                   dS )*z+Parse and check the command line arguments.rv   localesphinxNr   r(   r   z%s is not a directory.)filec                 6    g | ]}t          j        |          S rb   )r   abspath)r3   r   s     r#   re   zmain.<locals>.<listcomp>  s"    JJJ'W%%JJJr%   r   )
quickstartz   %s
r   r   Fdotr   projectr   Authorr   r   r"   masterindexepubTr   )zsphinx.ext.autodoczsphinx.ext.viewcodezsphinx.ext.todomakefile	batchfile	make_modemastertocmaxdepthmastertoctreelanguageen)r   r   r>   r   )silent	overwriter   )/r   r   	setlocaleLC_ALLinit_consoler6   r   r)   r   r   
parse_argsr   r   rw   rh   r   r"   rz   r   rB   r   sysstderrexitrA   r   r@   r   r   r   r   
sphinx.cmdr   ry   r   r   r   rp   r   r   extendr>   r{   generaterC   r   r~   )r   r   argsr   r_   rt   qsr|   r;   r}   dr   s               r#   mainr     s   
MFM2...
Mrw||KBBHMMM\\FT""D|D,--H { 3nnTX..r2{c"" &k!""o:h b)**X5CJGGGG;  $,JJT5IJJJH8XtT5EFFGy .O////// 	' 	'F  s!233  KI&&DD
DL
5
 3
 t{	

 dk-X
 t|)r
 t|9t|9r
 cDK'
 g
 D
  . . .
 
 
 
   !
" T#
$ %
& $"1)
 
 
, ? 	4lO""4?333: 	AgJ\?111% 	7 	7Ccz 7,&&s+++,&&syy~~666{ 	6KK$$*$($4  6 6 6	 Ot|T=MNNN1r%   __main__)NNr0   )rt   N)8__doc__r   r   r   r6   r   r   r   importlib.machineryr   r   typingr   r	   r
   r   sphinx.localer   r   r   sphinx.cmd.quickstartr   r   sphinx.util.osutilr   r   sphinx.util.templater   environrh   rP   tupler    r)   rT   strboolr$   r+   r9   rG   rX   rs   r~   rc   rg   r   r   r   r   r   r   r   r   r   __name__rb   r%   r#   <module>r     sK  	 	    				 



             2 2 2 2 2 2       . . . . . . . . . . . .     3 3 3 3 3 3 3 3 , , , , , ,       8 8 8 8 8 8 8 8 - - - - - - bj( j0177<<GG  G &8 9 99tyk8<<     ,3 ,3 , , , ,
1 13 1d3i 14 1 1 1 1S  3 4    ( 15% % %s %# %*-%9=% % % %( /14$I $Ic $I3 $I $IPTUXPY $I!$I)-c$IBF$I"&s)$IEH$ITX$I $I $I $IN HQ59! !T#Y !c ! !/2!>B! ! ! !* GI   3 $s) T    &	 	3 	$s) 	 	 	 	 	 3  $s)  3  c49d3i78$DE       2s d3i s t     +/3 33 3$s) 33 3$'33793 3 3 3l	c 	T#Y 	4 	 	 	 	^H+ ^ ^ ^ ^B 8ABB< H HtCy HC H H H HX z DFFFFF r%   