U
    \Sh                     @  sx  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 ddlmZmZ ddlmZ ddlmZmZ ee Z!e"ej#d Z$e"dZ%dddgZ&edd Z'de(d< de'd< dddddZ)d5ddd d!d"d#Z*ed6d%dd dd&d'd(Z+eddd)d*d+d,Z,d-dd.d/d0d1Z-d-dd.d2d3d4Z.dS )7zreST helper functions.    )annotationsN)defaultdict)contextmanager)	Generatoreast_asian_width)roles)en)Body)
StringList)Reporter)Environmentpass_environment)__)docutilsloggingZfield_markerz([!-\-/:-@\[-`{-~])=-~c                   C  s   dS )NWF r   r   r   B/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/util/rst.py<lambda>       r   zdict[str, str]	WIDECHARSZWFAjastr)textreturnc                 C  s   t d| } tdd| } | S )Nz\\\1z^\.z\.)
symbols_resubre)r   r   r   r   escape    s    r"   r   int)r   	widecharsr   c                   s*   dddddd t  fdd| D S )zGet width of text.r   r#   )charr$   r   c                 S  s   t | |krdS dS d S )N      r   )r%   r$   r   r   r   	charwidth(   s    ztextwidth.<locals>.charwidthc                 3  s   | ]} |V  qd S )Nr   ).0cr(   r$   r   r   	<genexpr>.   s     ztextwidth.<locals>.<genexpr>)sum)r   r$   r   r+   r   	textwidth&   s    r.   r'   r   )envr   levelr   c                 C  s:   |dkst t|t| j }t|d  }| d||  S )zCreate a heading for *level*.   r'   
)AssertionErrorr.   r   languageSECTIONING_CHARS)r/   r   r0   widthZsectioning_charr   r   r   heading1   s    r7   zGenerator[(None, None, None)])docnamenamer   c                 c  s^   |rJt ddd}t|td|\}}|r6td| ntjtd|| d d V  t	d d S )N    r   zdefault role %s not found)location)
r   r   Zroleenglishr   Zregister_roleloggerwarningr   Zunregister_role)r8   r9   Zdummy_reporterZrole_fn_r   r   r   default_role:   s    rA   r   None)contentprologr   c                 C  s   |rd}| D ]}t |r$|d7 }q q*q|dkrJ| |ddd |d7 }d}t| D ]\}}| || |d| qZ| || d ddd dS )z+Prepend a string to content body as prolog.r   r'   r:   <generated>z<rst_prolog>N)FIELD_NAME_REmatchinsert	enumerate
splitlines)rC   rD   poslinelinenor   r   r   prepend_prologI   s    

rN   )rC   epilogr   c                 C  sb   |r^t | dkr | d\}}nd}d}| d||d  t| D ]\}}| |d| qFdS )z*Append a string to content body as epilog.r   rE   r:   r'   z<rst_epilog>N)leninfoappendrI   rJ   )rC   rO   sourcerM   rL   r   r   r   append_epilog`   s    rU   )r   )r'   )/__doc__
__future__r   r!   collectionsr   
contextlibr   typingr   unicodedatar   Zdocutils.parsers.rstr   Zdocutils.parsers.rst.languagesr	   r=   Zdocutils.parsers.rst.statesr
   Zdocutils.statemachiner   Zdocutils.utilsr   Zjinja2r   r   Zsphinx.localer   Zsphinx.utilr   r   	getLogger__name__r>   compilepatternsrF   r   r5   r   __annotations__r"   r.   r7   rA   rN   rU   r   r   r   r   <module>   s8   


