
    O&iK                     L   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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e$         de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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e$         ddfd*Z+	 	 d;d+ee$         dede$d!e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Z0	 d:d/e$d)ee$         ded!ee$         dee$         f
d2Z1d#e$d)ee$         de%fd3Z2dej3        fd4Z4ej5        d5d         fd6ee$         de6fd7Z7e8d8k    r e7             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Optional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      ^/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/ext/apidoc.py	is_initpyr%   .   sR    }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_packagedirr:   =   sA    }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?   fnamer5   s         r$   
write_filerH   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renderrH   )rI   r   r=   rJ   optionsrO   contextr<   s           r$   create_module_filerY   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 )rL   c                 z    g | ]7}t          t          j        |                    &t          |          8S  )is_skipped_packager   r*   r,   )r4   pkgnamer`   r[   r=   rZ   r\   s     r$   
<listcomp>z'create_package_file.<locals>.<listcomp>r   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)r4   subr`   r=   rZ   s     r$   rf   z'create_package_file.<locals>.<listcomp>v   sb     & & &*49T3+?+?xPP&nn&#))C..# & & &r&   c                 2    g | ]}t          |          S rc   )r,   )r4   modnamer[   r\   s     r$   rf   z'create_package_file.<locals>.<listcomp>z   s5     - - - ngw?? - - -r&   rM   )	re   subpackages
submodulesr_   modulefirstseparatemodulesrP   rN   maxdepthzpackage.rst_tN)r    setr   rQ   rR   rS   r,   ro   rp   rT   rq   r   rU   rV   rH   rY   )rZ   r[   r\   r]   r=   r^   r_   r`   rJ   rm   rn   rW   re   rX   r<   	submodules   ``` `  `        r$   create_package_filert   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)   )headerrq   docnamesz	toc.rst_t)	sort
startswithremoverx   rq   r   rU   rV   rH   )ru   r=   r;   rJ   prev_modulemodulerX   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 r1   r2   r3   s     r$   r6   z%is_skipped_package.<locals>.<genexpr>   s-      ;;ill;!;;;;;;r&   Tc              3   ^   K   | ]'}t          t          j        |                    V  (d S r1   )is_excludedr   r*   )r4   r5   r-   r`   s     r$   r6   z%is_skipped_package.<locals>.<genexpr>   s9      
G
GA;ty!,,h77
G
G
G
G
G
Gr&   )r   isdirglobr*   r9   implicit_namespacesall)r-   r=   r`   r.   regular_packages   ` `  r$   rd   rd      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   r{   rR   )r   r=   r`   s      r$   rh   rh      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.followlinksFrR   )r   c              3      K   | ]C}|                     t                    t          t          j        |                    ?|V  Dd S r1   )endswithr!   r   r   r*   )r4   r5   r`   rZ   s     r$   r6   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 r1   )r{   r   r   r*   )r4   rj   exclude_prefixesr`   rZ   s     r$   r6   zwalk.<locals>.<genexpr>   so       J JCNNCS4T4T J(4)=)=xHHJ J J J J J Jr&   N)r@   r7   walkr    )	r   r`   r=   r   rR   r^   r.   r   rZ   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@   r:   ri   r   sepr   r%   r|   insertr"   rd   lstripreplacer   rt   rS   r,   rh   r*   rY   )r   r`   r=   rJ   r   root_package	toplevelsrZ   r^   r.   is_pkgr_   r5   
subpackagepy_filer~   s                   r$   recurse_treer      sv    "$(=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                 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   )rZ   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storerA   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
--maxdepthrq      z;maximum depth of submodules to show in the TOC (default: 4))r   r   typedefaultr   z-fz--forcerD   zoverwrite existing filesz-lz--follow-linksr   FzNfollow symbolic links. Powerful when combined with collective.recipe.omelette.)r   r   r   r   z-nz	--dry-runrB   z%run the script without creating filesz-ez
--separaterp   z1put documentation for each module on its own pagez-Pz	--privaterR   zinclude "_private" modulesz	--tocfiletocfileru   z0filename of table of contents (default: modules)z-Tz--no-tocstore_falsez%don't create a table of contents filez-Ez--no-headingsrT   zedon't create headings for the module/package packages (e.g. when the docstrings already contain them)z-Mz--module-firstro   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-projectrx   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   
extensionsrS   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.rw   localesphinxNr   r)   r   z%s is not a directory.)filec                 6    g | ]}t          j        |          S rc   )r   abspath)r4   r   s     r$   rf   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_consoler7   r   r*   r   r   
parse_argsr   r   rx   ri   r   r#   r{   r   rC   r   sysstderrexitrB   r   rA   r   r   r   r   
sphinx.cmdr   rz   r   r   r   rq   r   r   extendr?   r|   generaterD   r   r   )r   r   argsr   r`   ru   qsr}   r<   r~   dr   s               r$   mainr     s   
MFM2...
Mrw||KBBHMMM\\FT""D|D,--H {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czz,&&s+++,&&syy~~666{ 	6KK$$*$($4  6 6 6	 Ot|T=MNNN1r&   __main__)NNr1   )ru   N)9__doc__r   r   r   r7   r   r   r   importlib.machineryr   r   typingr   r	   r
   r   r   sphinx.localer   r   r   sphinx.cmd.quickstartr   r   sphinx.util.osutilr   r   sphinx.util.templater   environri   rQ   tupler!   r*   rU   strboolr%   r,   r:   rH   rY   rt   r   rd   rh   r   r   r   r   r   r   r   r   r   __name__rc   r&   r$   <module>r     sh  	 	    				 



             2 2 2 2 2 2       8 8 8 8 8 8 8 8 8 8 8 8 8 8     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 18C= 1c8K 1W[ 1 1 1 1S  3 4    ( ;?% % %s %# %*23-%CG% % % %( /1UY%I %Ic %I3 %I %IPTUXPY %I!%I)-c%IBF%I"&s)%IEMc]%I "%I %I %I %IP HQ?C! !T#Y !c ! !/7}!HL! ! ! !* GI   3 $s) T    &	 	3 	$s) 	 	 	 	 	 3  $s)  3  c49d3i78$DE       2s d3i s t     593 33 3$s) 33 3$,SM3=A#Y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&   