B
    .Kc                 @   s  U d 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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 yddlmZ W n  ek
r   ddlmZ Y nX ee Z!e"dZ#e"dZ$dddgZ%edd Z&ee'e'f e(d< de&d< e'e'dddZ)d/e'e'e*ddd Z+ed0ee'e*e'd"d#d$Z,ee'e'ed% d&d'd(Z-ee'dd)d*d+Z.ee'dd,d-d.Z/dS )1zreST helper functions.    N)defaultdict)contextmanager)Dict	Generator)east_asian_width)roles)en)
StringList)Reporter)Environment)__)docutilslogging)pass_environment)environmentfilterz:\w+:.*?z([!-\-/:-@\[-`{-~])=-~c               C   s   dS )NWF r   r   r   .lib/python3.7/site-packages/sphinx/util/rst.py<lambda>       r   	WIDECHARSZWFAja)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   )r   	widecharsr   c                s*   t t tddd t fdd| D S )zGet width of text.)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>1   s    ztextwidth.<locals>.<genexpr>)strintsum)r   r!   r   )r%   r!   r   	textwidth)   s    r,   r$   )envr   levelr   c             C   s8   |dkst t|t| j }t|d  }d||| f S )zCreate a heading for *level*.   r$   z%s
%s)AssertionErrorr,   r   languageSECTIONING_CHARS)r-   r   r.   widthZsectioning_charr   r   r   heading4   s    r4   )NNN)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loggerZwarningr   Zunregister_role)r5   r6   Zdummy_reporterZrole_fn_r   r   r   default_role=   s    r=   )contentprologr   c             C   s   |rd}x"| D ]}t |r&|d7 }qP qW |dkrL| |ddd |d7 }x,t| D ]\}}| || |d| qZW | || d ddd dS )z+Prepend a string to content body as prolog.r   r$   r7   z<generated>z<rst_prolog>N)
docinfo_rematchinsert	enumerate
splitlines)r>   r?   poslinelinenor   r   r   prepend_prologL   s    


rH   )r>   epilogr   c             C   sf   |rbdt | k r | d\}}nd}d}| d||d  x&t| D ]\}}| |d| qHW dS )z*Append a string to content body as epilog.r   z<generated>r7   r$   z<rst_epilog>N)leninfoappendrC   rD   )r>   rI   sourcerG   rF   r   r   r   append_epilogb   s    rO   )r   )r$   )0__doc__r   collectionsr   
contextlibr   typingr   r   Zunicodedatar   Zdocutils.parsers.rstr   Zdocutils.parsers.rst.languagesr   r:   Zdocutils.statemachiner	   Zdocutils.utilsr
   Zjinja2r   Zsphinx.localer   Zsphinx.utilr   r   Zjinja2.utilsr   ImportErrorr   Z	getLogger__name__r;   compiler@   r   r2   r   r)   __annotations__r    r*   r,   r4   r=   rH   rO   r   r   r   r   <module>   s<   



