o
    Ni                     @  sZ  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	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	rcddlmZ ddl m!Z! e"e#Z$e%ej&d Z'e%dZ(g dZ)edd Z*de+d< de*d< d8ddZ,d9d:d"d#Z-ed;d<d(d)Z.ed=d-d.Z/d>d3d4Z0d?d6d7Z1dS )@zreST helper functions.    )annotationsN)defaultdict)contextmanager)TYPE_CHECKINGcasteast_asian_width)roles)en)Body)Reporter)Environmentpass_environment)__)docutilslogging)Iterator)
StringListfield_markerz([!-\-/:-@\[-`{-~]))=-~c                   C  s   dS )NWF r   r   r   C/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/util/rst.py<lambda>    s    r   zdict[str, str]	WIDECHARSWFAjatextstrreturnc                 C  s   t d| } tdd| } | S )Nz\\\1z^\.z\.)
symbols_resubre)r   r   r   r   escape$   s   r%   r   	widecharsintc                   s"   ddd t  fdd	| D S )zGet width of text.charr    r&   r!   r'   c                 S  s   t | |v r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>3   s    ztextwidth.<locals>.<genexpr>N)r(   r    r&   r    r!   r'   )sum)r   r&   r   r.   r   	textwidth*   s   
r1   r*   envr   levelc                 C  s:   |dksJ t |t| j }t|d  }| d||  S )zCreate a heading for *level*.   r*   
)r1   r   languageSECTIONING_CHARS)r2   r   r3   widthsectioning_charr   r   r   heading6   s   r:   docnamenameIterator[None]c                 c  s`    |r&t ddd}t|td|\}}|rtd| n
tjtd|| d d V  t	d d S )N    r   zdefault role %s not found)location)
r   r	   roleenglishr   register_roleloggerwarningr   unregister_role)r;   r<   dummy_reporterrole_fn_r   r   r   default_role@   s   rJ   contentr   prologNonec                 C  s   |rHd}| D ]}t |r|d7 }q |dkr#| |ddd |d7 }d}t| D ]\}}| || |d| q+| || d ddd dS 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)rK   rL   poslinelinenor   r   r   prepend_prologO   s   

rW   epilogc                 C  sp   |r4t | dkr| d\}}tt|}nd}d}| d||d  t| D ]\}}| |d| q(dS dS )z*Append a string to content body as epilog.r   rN   r>   r*   z<rst_epilog>N)leninfor   r'   appendrR   rS   )rK   rX   sourcerV   rU   r   r   r   append_epilogf   s   	r^   )r   r    r!   r    )r   )r   r    r&   r    r!   r'   )r*   )r2   r   r   r    r3   r'   r!   r    )r;   r    r<   r    r!   r=   )rK   r   rL   r    r!   rM   )rK   r   rX   r    r!   rM   )2__doc__
__future__r   r$   collectionsr   
contextlibr   typingr   r   unicodedatar   docutils.parsers.rstr	   docutils.parsers.rst.languagesr
   rB   docutils.parsers.rst.statesr   docutils.utilsr   jinja2r   r   sphinx.localer   sphinx.utilr   r   collections.abcr   docutils.statemachiner   	getLogger__name__rD   compilepatternsrO   r"   r7   r   __annotations__r%   r1   r:   rJ   rW   r^   r   r   r   r   <module>   s>    


	
