
    FeF                       U d Z ddlm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 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 ddlmZmZ e	rddlmZ ddlm Z   ejB                  e"      Z# ejH                  ejJ                  d         Z& ejH                  d      Z'g dZ( ed       Z)de*d<   de)d<   ddZ+d d!dZ,ed"d#d       Z-ed$d       Z.d%dZ/d&dZ0y)'zreST helper functions.    )annotationsN)defaultdict)contextmanager)TYPE_CHECKINGeast_asian_width)roles)en)Body)Reporter)Environmentpass_environment)__)docutilslogging)	Generator)
StringListfield_markerz([!-\-/:-@\[-`{-~]))=-~c                      y)NWF r       1/usr/lib/python3/dist-packages/sphinx/util/rst.py<lambda>r       s    r   zdict[str, str]	WIDECHARSWFAjac                `    t         j                  d|       } t        j                  dd|       } | S )Nz\\\1z^\.z\.)
symbols_resubre)texts    r   escaper&   $   s)    >>'4(D66&%&DKr   c                8    ddt        fd| D              S )zGet width of text.c                     t        |       |v ryy)N      r   )char	widecharss     r   	charwidthztextwidth.<locals>.charwidth,   s    D!Y.r   c              3  0   K   | ]  } |        y w)Nr   ).0cr-   r,   s     r   	<genexpr>ztextwidth.<locals>.<genexpr>2   s     51yI&5s   )r+   strr,   r2   returnint)sum)r%   r,   r-   s    `@r   	textwidthr6   *   s     5555r   c                v    |dk  sJ t        |t        | j                           }t        |dz
     }| d||z   S )zCreate a heading for *level*.   r*   
)r6   r   languageSECTIONING_CHARS)envr%   levelwidthsectioning_chars        r   headingr@   5   sJ     A::dIcll34E&uqy1OV2o-.//r   c              #    K   |rft        ddd      }t        j                  |t        d|      \  }}|rt	        j
                  d|       n!t        j                  t        d      ||        d  t	        j                  d       y w)N    r   zdefault role %s not found)location)
r   r	   roleenglishr   register_roleloggerwarningr   unregister_role)docnamenamedummy_reporterrole_fn_s        r   default_rolerP   >   sk     !"a+ZZgq.A
""2w/NN29:D7NS	R s   BBc                8   |rd}| D ]  }t         j                  |      r|dz  } n |dkD  r| j                  |ddd       |dz  }d}t        |j	                               D ]  \  }}| j                  ||z   |d|        | j                  ||z   dz   ddd       yy)z+Prepend a string to content body as prolog.r   r*   rB   <generated>z<rst_prolog>N)FIELD_NAME_REmatchinsert	enumerate
splitlines)contentprologposlinelinenos        r   prepend_prologr]   M   s     	D""4(q		 7NN3M151HC %f&7&7&9: 	GLFDNN3<~vF	G 	sV|a']A>% r   c                    |rrt        |       dkD  r| j                  d      \  }}nd}d}| j                  d||dz          t        |j	                               D ]  \  }}| j                  |d|        yy)z*Append a string to content body as epilog.r   rR   rB   r*   z<rst_epilog>N)leninfoappendrV   rW   )rX   epilogsourcer\   r[   s        r   append_epilogre   d   sw    w<!$\\"-NFF"FFr66A:.%f&7&7&9: 	9LFDNN48	9 r   )r%   r2   r3   r2   )r   )r%   r2   r,   r2   r3   r4   )r*   )r<   r   r%   r2   r=   r4   r3   r2   )rK   r2   rL   r2   r3   zGenerator[None, None, None])rX   r   rY   r2   r3   None)rX   r   rc   r2   r3   rf   )1__doc__
__future__r   r$   collectionsr   
contextlibr   typingr   unicodedatar   docutils.parsers.rstr	   docutils.parsers.rst.languagesr
   rF   docutils.parsers.rst.statesr   docutils.utilsr   jinja2r   r   sphinx.localer   sphinx.utilr   r   collections.abcr   docutils.statemachiner   	getLogger__name__rH   compilepatternsrS   r"   r;   r   __annotations__r&   r6   r@   rP   r]   re   r   r   r   <module>r{      s     " 	 # %   ( & 8 , # 0  ))0			8	$

4==89RZZ./
"  (5	> 5	$6 0 0 ! !?.
9r   