
    R&i                         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mZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZ d
 Zd Zd Zd ZdS )zMain implementation.   )_hacks    N)Server)__version__)SPHINX_BUILD_OPTIONSget_builder)
get_ignore)find_free_portc                    g }t           D ]U\  }}t          | |          }|sd| }||                    |g|z             9|D ]}|                    ||g           V|                    t          j                            | j                  t          j                            | j                  g           |                    | j                   d | j	        D             }||fS )N-c                 6    g | ]}t          j        |          S  )shlexsplit).0cmd_strs     a/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx_autobuild/cli.py
<listcomp>z#_get_build_args.<locals>.<listcomp>"   s"    MMM7%+g..MMM    )
r   getattrextendospathrealpath	sourcediroutdir	filenames	pre_build)args
build_argsargmetavaloptvpre_build_commandss           r   _get_build_argsr'      s   J) 	, 	,	TdC   	#ii<seck**** , ,!!3(++++, rw''779I9I$+9V9VWXXXdn%%%MMdnMMM)))r   c                    | j         d d          }|                    t          j                            | j                             | j        r=|                    t          j                            | j        d                              | j        r=|                    t          j                            | j        d                              | j        }t          ||          S )Nr   )
ignoreappendr   r   r   r   wd	re_ignorer	   )r   regularregex_baseds      r   _get_ignore_handlerr0   &   s    k!!!nGNN27##DK00111v 4rw''q	22333v 4rw''q	22333.Kg{+++r   c                  ~    G d dt           j        t           j                  } t          j        |           }|                    dt
          dd           |                    dt          d	d
           |                    ddg d           |                    ddg d           |                    ddddd           |                    ddddd           |                    ddt
          dd           |                    ddd g d!d"#           |                    d$dd%g d&'           |                    d(d)d*                    t                    +           d,	                    d- t          D                       }|                    d.d/|           }t          D ]S\  }}|&|                    d1| d2t           j        3           -|                    d1| dt           j        |4           T|                    d5d67           |                    d8d97           |                    d:d;d<=           |S )>zGet the application's argument parser.

    Note: this also handles SPHINX_BUILD_OPTIONS, which later get forwarded to
    sphinx-build as-is.
    c                       e Zd ZdS )8get_parser.<locals>.RawTextArgumentDefaultsHelpFormatterN)__name__
__module____qualname__r   r   r   $RawTextArgumentDefaultsHelpFormatterr3   9   s         	r   r7   )formatter_classz--porti@  z@port to serve documentation on. 0 means find and use a free port)typedefaulthelpz--hostz	127.0.0.1z"hostname to serve documentation onz--re-ignorer*   zAregular expression for files to ignore, when watching for changes)actionr:   r;   z--ignorez>glob expression for files to ignore, when watching for changesz--no-initialno_initial_build
store_trueFzskip the initial build)destr<   r:   r;   z--open-browseropenbrowserz-open the browser after building documentationz--delaydelay   z+how long to wait before opening the browser)r?   r9   r:   r;   z--watchDIRzadditional directories to watchadditional_watched_dirs)r<   metavarr:   r;   r?   z--pre-buildCOMMANDz@additional command(s) to run prior to building the documentation)r<   rE   r:   r;   z	--versionversionzsphinx-autobuild {})r<   rG   z, c              3   :   K   | ]\  }}|d| nd| d| V  d S )Nr   =r   )r   r!   r"   s      r   	<genexpr>zget_parser.<locals>.<genexpr>   sY       ! !C \	C			'73'7'7'7'7! ! ! ! ! !r   zsphinx's argumentsznThe following arguments are forwarded as-is to Sphinx. Please look at `sphinx --help` for more information.
  Nr   count)r<   r;   )r<   r;   rE   r   zsource directory)r;   r   z(output directory for built documentationr   *z%specific files to rebuild on each run)nargsr;   )argparseArgumentDefaultsHelpFormatterRawTextHelpFormatterArgumentParseradd_argumentintstrformatr   joinr   add_argument_groupSUPPRESS)r7   parsersphinx_argumentssphinx_parserr!   r"   s         r   
get_parserr\   2   s`       .0M  
 $<  F O	     1	     P	     M	     %     <     :     .&     O     I/D/K/KK/X/X     yy ! !-! ! !   --K8HK K M *  	T<&&C		'0A '     &&C		(1BD '     *<===
'QRRR
3%L     Mr   c                     t          j                     t                      } |                                 }t          j                            |j                  }t          j                            |j                  }t          j        	                    |          st	          j
        |           |j        pt                      }t                      }t          |          \  }}t          |j        ||j        ||          }t%          |          }	|                    |||	           |j        D ]9}
t          j                            |
          }
|                    |
||	           :|                    ||	           |j        s
 |             |j        du r%|                    ||j        ||j                   dS |                    ||j        |           dS )zActual application logic.)hostportr&   )r)   T)r_   r^   rootopen_url_delay)r_   r^   r`   N)coloramainitr\   
parse_argsr   r   r   r   r   existsmakedirsr_   r
   r   r'   r   watcherr^   r0   watchrD   r=   r@   serverA   )rY   r   srcdirr   portnserverr    r&   builderignore_handlerdirpaths              r   mainrp      s   MOOO\\FDWdn--FWdk**F7>>&!! 
FI)))EXXF%4T%:%:"J"Y-  G )..N
LLL888/ > >'""7++Wgn====
LLL///  			4%difTZXXXXX%dif=====r   )__doc__ r   rN   r   r   rb   
livereloadr   r   buildr   r   r)   r	   utilsr
   r'   r0   r\   rp   r   r   r   <module>rv      s             				               4 4 4 4 4 4 4 4       ! ! ! ! ! !* * *(	, 	, 	,j j jZ%> %> %> %> %>r   