
    7 f.N                       d Z ddlmZ ddlZddl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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 ddlmZmZ ddlmZ erddlm Z m!Z!  ej"        e#          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+dIdZ,dJdZ-dKdLd Z.dMd&Z/	 dNdOd*Z0	 	 dPdQd5Z1	 	 dRdSd7Z2	 dTdUd8Z3dVd:Z4dWd=Z5dXd>Z6	 dNdYd?Z7dZd@Z8d[dBZ9dTd\dFZ:e#dGk    r! e; e:e	j<        dHd                             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/
    )annotationsN)copy)EXTENSION_SUFFIXES)path)TYPE_CHECKINGAny)__display_version__package_dir)
EXTENSIONS)__)logging)FileAvoidWrite	ensuredir)ReSTRenderer)	GeneratorSequenceSPHINX_APIDOC_OPTIONS,)memberszundoc-memberszshow-inheritance)z.pyz.pyx	templatesapidocfilenamestrreturnboolc                    t          j        |           t          fdt          t          t
          d          D                       S )z)Check *filename* is __init__ file or not.c              3  *   K   | ]}d |z   k    V  dS )__init__N ).0suffixbasenames     G/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/apidoc.py	<genexpr>zis_initpy.<locals>.<genexpr>:   sA         	J''         T)keyreverse)r   r"   anysortedPY_SUFFIXESlen)r   r"   s    @r#   	is_initpyr,   7   sY    }X&&H    [c4@@@     r%   modnames
str | Nonec                 H    d                     t          d|                     S )zJoin module names with dots..N)joinfilter)r-   s    r#   module_joinr3   @   s    88F4**+++r%   dirnamefileslist[str] | Nonec                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,   r    fs     r#   r$   z is_packagedir.<locals>.<genexpr>L   s-      00Q9Q<<0q000000r%   )oslistdirr(   )r4   r5   s     r#   is_packagedirr?   E   sA    }u}
7##00%000000r%   nametextoptsr   Nonec                6   t          |dd          }t          j        |j        |  d|j                   }|j        r,|s(t                              t          d          |           dS |j	        sBt          j
        |          r.|s*t                              t          d          |           dS dS |s(t                              t          d          |           t          |          5 }|                    |           ddd           dS # 1 swxY w Y   dS )z0Write the output file for module/package <name>.quietNr0   zWould create file %s.z!File %s already exists, skipping.zCreating file %s.)getattrr   r1   destdirr!   dryrunloggerinfor   forceisfiler   write)r@   rA   rB   rE   fnamer<   s         r#   
write_filerO   O   sb   D'4((EIdlt$;$;dk$;$;<<E{  	<KK233U;;;: $+e,,  	HKK>??GGGGG	H 	H  	8KK.//777E"" 	aGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +DDDpackager"   user_template_dirc                8   t          t                    }|j        rd|vr|                    d           t	          | |          }|j         |||d}|
|t          g}nt          g}t          |                              d|          }t          |||           dS ).Build the text of the file and write the file.private-members)show_headingsr"   qualnameautomodule_optionsNzmodule.rst_t)
r   OPTIONSincludeprivateappendr3   
noheadingstemplate_dirr   renderrO   )	rP   r"   rB   rQ   optionsrV   contexttemplate_pathrA   s	            r#   create_module_filera   b   s     7mmG *0??()))7H--H!_,%	 G $*L9%&&--ngFFDxt$$$$$r%   r   rootmaster_packagesubrootpy_files	list[str]subsis_namespaceexcludesSequence[re.Pattern[str]]c	           
     L     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          g}nt          g}t          |                              d|          }t          ||           |
rj        r|
D ]}t          d||           dS dS dS )rS   c                z    g | ]7}t          t          j        |                    &t          |          8S r   )is_skipped_packager   r1   r3   )r    pkgnameri   rc   rB   rb   rd   s     r#   
<listcomp>z'create_package_file.<locals>.<listcomp>   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 )r0   r   )is_skipped_moduler   r1   r,   split)r    subri   rB   rb   s     r#   ro   z'create_package_file.<locals>.<listcomp>   sb     & & &*49T3+?+?xPP&nn&#))C..# & & &r%   c                2    g | ]}t          |          S r   )r3   )r    modnamerc   rd   s     r#   ro   z'create_package_file.<locals>.<listcomp>   s5     - - - ngw?? - - -r%   rT   )	rn   subpackages
submodulesrh   modulefirstseparatemodulesrW   rU   maxdepthNzpackage.rst_t)r)   setr   rX   rY   rZ   r3   rx   ry   r[   rz   r\   r   r]   rO   ra   )rb   rc   rd   re   rB   rg   rh   ri   rQ   rv   rw   r^   rn   r_   r`   rA   	submodules   ``` `  `         r#   create_package_filer}   x   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%&&--owGGDwd### Id* I# 	I 	IItY6GHHHHI I I I	I 	Ir%   modulesc                \   |                                   d}| dd         D ]2}|                    |dz             r|                     |           0|}3|j        |j        | d}|
|t
          g}nt
          g}t          |                              d|          }t          |||           dS )zCreate the module's index. Nr0   )headerrz   docnamesz	toc.rst_t)	sort
startswithremover   rz   r\   r   r]   rO   )	r~   rB   r@   rQ   prev_modulemoduler_   r`   rA   s	            r#   create_modules_toc_filer      s     LLNNNK!!!* ! ![3.// 	!NN6"""" KK +M G
 $*L9%&&--k7CCD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                       S )%Check if we want to skip this module.Fz*.pyc              3  8   K   | ]}t          |          |V  d S r9   r:   r;   s     r#   r$   z%is_skipped_package.<locals>.<genexpr>   s-      ;;ill;!;;;;;;r%   Tc              3  ^   K   | ]'}t          t          j        |                    V  (d S r9   )is_excludedr   r1   )r    r<   r4   ri   s     r#   r$   z%is_skipped_package.<locals>.<genexpr>   s9      KK{49Wa00(;;KKKKKKr%   )r   isdirglobr1   r(   implicit_namespacesall)r4   rB   ri   r5   regular_packages   ` `  r#   rm   rm      s     :g uIdi0011E;;U;;;;;O 4#; t KKKKKUKKKKKKr%   	_excludesc                    t          j        |           sdS t          j        |                               d          r	|j        sdS dS )r   T_F)r   existsr"   r   rY   )r   rB   r   s      r#   rq   rq      sM    ;x   t}X))#.. t7J t5r%   rootpath7Generator[tuple[str, list[str], list[str]], None, None]c              #  &  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.followlinksFrY   )r   c              3     K   | ]C}|                     t                    t          t          j        |                    ?|V  Dd S r9   )endswithr*   r   r   r1   )r    r<   ri   rb   s     r#   r$   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%   )r0   )r0   r   c              3     K   | ]>}|                               t          t          j        |                    :|V  ?d S r9   )r   r   r   r1   )r    rs   exclude_prefixesri   rb   s     r#   r$   zwalk.<locals>.<genexpr>   so       J JCNNCS4T4T J(4)=)=xHHJ J J J J J Jr%   N)rF   r=   walkr)   )	r   ri   rB   r   rY   rg   r5   r   rb   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                R    t          d t          | ||          D                       S )zACheck the given directory contains child module/s (at least one).c              3  "   K   | ]
\  }}}|V  d S r9   r   )r    _root_subsr5   s       r#   r$   z#has_child_module.<locals>.<genexpr>   s<        E5% 	     r%   )r(   r   )r   ri   rB   s      r#   has_child_moduler      s<      #'(D#A#A     r%   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    sJ |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      r0   )rF   r?   rr   r   sepr   r,   r   insertr+   rm   lstripreplacer   r}   rZ   r3   rq   r1   ra   )r   ri   rB   rQ   r   root_package	toplevelsrb   rg   r5   is_pkgrh   r<   
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~~-?d-K-K~!#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                :     t           fd|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".
    c              3  B   K   | ]}|                               V  d S r9   )match)r    excluderb   s     r#   r$   zis_excluded.<locals>.<genexpr>8  s/      ;;ww}}T"";;;;;;r%   )r(   )rb   ri   s   ` r#   r   r   2  s(     ;;;;(;;;;;;r%   argparse.ArgumentParserc                    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storerG   Tzdirectory to place all output)r   r   requiredr   z-q
store_truerE   z,no output on stdout, just warnings on stderr)r   r   r   z-dz
--maxdepthrz      z;maximum depth of submodules to show in the TOC (default: 4))r   r   typedefaultr   z-fz--forcerK   zoverwrite existing filesz-lz--follow-linksr   FzNfollow symbolic links. Powerful when combined with collective.recipe.omelette.)r   r   r   r   z-nz	--dry-runrH   z%run the script without creating filesz-ez
--separatery   z1put documentation for each module on its own pagez-Pz	--privaterY   zinclude "_private" modulesz	--tocfiletocfiler~   z0filename of table of contents (default: modules)z-Tz--no-tocstore_falsez%don't create a table of contents filez-Ez--no-headingsr[   zedon't create headings for the module/package packages (e.g. when the docstrings already contain them)z-Mz--module-firstrx   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-projectr   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   
extensionsrZ   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%   argvSequence[str]r   c                  t          j        t           j        d           t          j                                          t                      }|                    | pt          j        dd                   }t          j
        |j                  }|j        *|                    t          j                  d         |_        |j                            d          r|j        dd         |_        t          j        |          s7t$                              t)          d          |           t+          d          |j        st/          |j                   t3          d t4                              |j                  D                       }t;          ||||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.r   r   Nr   r0   z%s is not a directory.c              3     K   | ]<}t          j        t          j        t	          j        |                              V  =d S r9   )recompilefnmatch	translater   abspath)r    r   s     r#   r$   zmain.<locals>.<genexpr>  sU         	
7$T\'%:%:;;<<     r%   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   rE   r   )silent	overwriter   )0locale	setlocaleLC_ALLsphinxinit_consoler   
parse_argssysr   r   r   r   r   rr   r   r!   r   r   rI   errorr   
SystemExitrH   r   rG   tupledictfromkeysr   r   r   r   
sphinx.cmdr   r   r   r   r   rz   r   r   extendrE   r   generaterK   r   r   )r   r   argsr   ri   r~   qsr   rA   r   dr   s               r#   mainr    s   
V]B'''
M   \\FT1SXabb\22D|D,--H {nnTX..r2{c"" &k!""o:h R0118<<<mm;  $,  }}T%9::    H 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czz,&&s+++,&&syy~~666{ 	6KK$$*$($4  6 6 6	 Ot|T=MNNN1r%   __main__r   )r   r   r   r   )r-   r.   r   r   )NN)r4   r.   r5   r6   r   r   )r@   r   rA   r   rB   r   r   rC   r9   )
rP   r.   r"   r   rB   r   rQ   r.   r   rC   )r   N)rb   r   rc   r.   rd   r   re   rf   rB   r   rg   rf   rh   r   ri   rj   rQ   r.   r   rC   )r~   N)
r~   rf   rB   r   r@   r   rQ   r.   r   rC   )r   )r4   r   rB   r   ri   rj   r   r   )r   r   rB   r   r   rj   r   r   )r   r   ri   rj   rB   r   r   r   )r   r   ri   rj   rB   r   r   r   )
r   r   ri   rj   rB   r   rQ   r.   r   rf   )rb   r   ri   rj   r   r   )r   r   )r   r   r   r   )=__doc__
__future__r   r   r   r   r   r=   r   r   r   importlib.machineryr   r   typingr   r   sphinx.localer   r	   r
   sphinx.cmd.quickstartr   r   sphinx.utilr   sphinx.util.osutilr   r   sphinx.util.templater   collections.abcr   r   	getLogger__name__rI   environrr   rX   r  r*   r1   r\   r,   r3   r?   rO   ra   r}   r   rm   rq   r   r   r   r   r   r  r  r   r   r%   r#   <module>r     s  	 	 # " " " " "     				 				 



       2 2 2 2 2 2       % % % % % % % %     3 3 3 3 3 3 3 3 , , , , , ,             8 8 8 8 8 8 8 8 - - - - - - 433333333		8	$	$ bj((j0177<<GG  G &8 9 99tyk8<<   , , , ,
1 1 1 1 1   ( 8<% % % % %2 ?A8<	+I +I +I +I +I\ HQ<@! ! ! ! !4 >@L L L L L           2    264 4 4 4 4n< < < <^ ^ ^ ^BK K K K K^ z
*TT#(122,''
(
(( r%   