o
    Ni                     @  s>  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m	Z	m
Z
 ddlmZmZmZ ddlmZmZmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ erjddl m!Z!m"Z" ddl#m$Z$ G dd dZ%G dd dZ&G dd dej'Z'dZ(dZ)e(fd$ddZ*G d d! d!ej+Z,G d"d# d#eZ-dS )%z&Custom docutils writer for plain text.    )annotationsN)IterableIteratorSequence)chaingroupbypairwise)TYPE_CHECKINGAnyClassVarcast)nodeswriterscolumn_width)addnodes)_admonitionlabels)SphinxTranslator)ElementText)TextBuilderc                   @  sD   e Zd ZdZddddZdddZdddZdddZdddZdS )CellzVRepresents a cell in a table.
    It can span multiple columns or multiple lines.
        textstrrowspanintcolspanreturnNonec                 C  s(   || _ g | _|| _|| _d | _d | _d S N)r   wrappedr   r   colrow)selfr   r   r    r'   G/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/writers/text.py__init__   s   
zCell.__init__c                 C  s.   d| j d| j d| j d| j d| j dS )Nz<Cell  v/>)r   r%   r   r$   r   r&   r'   r'   r(   __repr__'   s   ,zCell.__repr__c                 C  s   t | j| jfS r"   )hashr$   r%   r.   r'   r'   r(   __hash__,      zCell.__hash__boolc                 C  s   | j dko| jd uo| jd uS Nr   )r   r$   r%   r.   r'   r'   r(   __bool__/   s   zCell.__bool__widthc                 C  s   t | j|| _d S r"   )my_wrapr   r#   )r&   r6   r'   r'   r(   wrap2      z	Cell.wrapN)r   r   r   )r   r   r   r   r   r   r    r!   r    r   )r    r   )r    r3   )r6   r   r    r!   )	__name__
__module____qualname____doc__r)   r/   r1   r5   r8   r'   r'   r'   r(   r      s    


r   c                   @  s   e Zd ZdZd/d0ddZd1d	d
Zd1ddZd2ddZd3ddZd4ddZ	d5ddZ
d6ddZd7dd Zd8d#d$Zed9d&d'Zd1d(d)Zd:d+d,Zd7d-d.ZdS );Tableaj  Represents a table, handling cells that can span multiple lines
    or rows, like::

       +-----------+-----+
       | AAA       | BBB |
       +-----+-----+     |
       |     | XXX |     |
       |     +-----+-----+
       | DDD | CCC       |
       +-----+-----------+

    This class can be used in two ways, either:

    - With absolute positions: call ``table[line, col] = Cell(...)``,
      this overwrites any existing cell(s) at these positions.

    - With relative positions: call the ``add_row()`` and
      ``add_cell(Cell(...))`` as needed.

    Cells spanning multiple rows or multiple columns (having a
    colspan or rowspan greater than one) are automatically referenced
    by all the table cells they cover. This is a useful
    representation as we can simply check
    ``if self[x, y] is self[x, y+1]`` to recognize a rowspan.

    Colwidth is not automatically computed, it has to be given, either
    at construction time, or during the table construction.

    Example usage::

       table = Table([6, 6])
       table.add_cell(Cell("foo"))
       table.add_cell(Cell("bar"))
       table.set_separator()
       table.add_row()
       table.add_cell(Cell("FOO"))
       table.add_cell(Cell("BAR"))
       print(table)
       +--------+--------+
       | foo    | bar    |
       |========|========|
       | FOO    | BAR    |
       +--------+--------+

    Ncolwidthlist[int] | Noner    r!   c                 C  s.   g | _ d| _|d ur|ng | _d| _d| _d S Nr   )lines	separatorr@   current_linecurrent_col)r&   r@   r'   r'   r(   r)   e   s
   
zTable.__init__c                 C  s   |  j d7  _ d| _dS )zAdd a row to the table, to use with ``add_cell()``.  It is not needed
        to call ``add_row()`` before the first ``add_cell()``.
        r   r   N)rE   rF   r.   r'   r'   r(   add_rowl   s   
zTable.add_rowc                 C  s   t | j| _dS )z*Sets the separator below the current line.N)lenrC   rD   r.   r'   r'   r(   set_separators   s   zTable.set_separatorcellr   c                 C  sR   | | j | jf r|  jd7  _| | j | jf s|| | j | jf< |  j|j7  _dS )zAdd a cell to the current line, to use with ``add_row()``.  To add
        a cell spanning multiple lines or rows, simply set the
        ``cell.colspan`` or ``cell.rowspan`` BEFORE inserting it into
        the table.
        r   N)rE   rF   r   )r&   rJ   r'   r'   r(   add_cellw   s
   zTable.add_cellpostuple[int, int]c                 C  s2   |\}}|  |d  | |d  | j| | S Nr   )_ensure_has_line_ensure_has_columnrC   )r&   rL   liner$   r'   r'   r(   __getitem__   s   zTable.__getitem__c                 C  sn   |\}}|  ||j  | ||j  t|jD ]}t|jD ]}|| j||  || < ||_||_q qd S r"   )rO   r   rP   r   rangerC   r%   r$   )r&   rL   rJ   rQ   r$   dlinedcolr'   r'   r(   __setitem__   s   zTable.__setitem__rQ   r   c                 C  s0   t | j|k r| jg  t | j|k sd S d S r"   )rH   rC   append)r&   rQ   r'   r'   r(   rO      s   zTable._ensure_has_liner$   c                 C  s4   | j D ]}t||k r|t  t||k sqd S r"   )rC   rH   rW   r   )r&   r$   rQ   r'   r'   r(   rP      s   
zTable._ensure_has_columnr   c                 C  s   d tt| jS N
)joinmapreprrC   r.   r'   r'   r(   r/      r9   zTable.__repr__source	list[int]c                 C  sd   |j du s
|jdu rd}t|d}t| |j |jf jD ]}|||j|  7 }q||jd d  S )zGive the cell width, according to the given source (either
        ``self.colwidth`` or ``self.measured_widths``).
        This takes into account cells spanning multiple columns.
        N#Cell co-ordinates have not been setr   r      )r%   r$   
ValueErrorrS   r   )r&   rJ   r]   msgr6   ir'   r'   r(   
cell_width   s   zTable.cell_widthIterator[Cell]c                 c  s>    t  }| jD ]}|D ]}|r||vr|V  || qqd S r"   )setrC   add)r&   seenrQ   rJ   r'   r'   r(   cells   s   

zTable.cellsc                 C  s   | j dd | _| jD ]I}|j| || j d |jsq|jdu s&|jdu r,d}t|t	
tdd |jD |j }t|j|j|j D ]}t| j| || j|< qFqdS )zCall ``cell.wrap()`` on all cells, and measure each column width
        after wrapping (result written in ``self.measured_widths``).
        Nr6   r_   c                 s      | ]}t |V  qd S r"   r   .0xr'   r'   r(   	<genexpr>       zTable.rewrap.<locals>.<genexpr>)r@   measured_widthsri   r8   rd   r#   r%   r$   ra   mathceilmaxr   rS   )r&   rJ   rb   r6   r$   r'   r'   r(   rewrap   s   
 zTable.rewrap
list[Cell]c                 C  s"   d}|D ]
}t |t|j}q|S )zfFor a given line, compute the number of physical lines it spans
        due to text wrapping.
        r   )rt   rH   r#   )r&   rQ   physical_linesrJ   r'   r'   r(   physical_lines_for_line   s   zTable.physical_lines_for_linec                   s*  g }    dd fdd}t jD ]u\}} jr(| jkr(||d	| n||d| t |D ]P}d
g}t|D ]>\}}|j|krJq@||jkrRd}	n|t	|j
kr\d}	n|j
| }	t	|	t|	 }
|d|	 | jd |
  d
  q@|d| q7q||d d|S )N-charr   lineno
int | Noner    c              
     s   g }t  jD ]-\}}|dur+|dkr+ ||f  |d |f u r+|d|d   q|| |d   q|d d dkr?dnd}|d	 d dkrKdnd}d
d t|D }|| |dtt||dd S )zfCalled on the line *before* lineno.
            Called with no *lineno* for the last sep.
            Nr   r   r*      ry   +|c                 S  s0   g | ]\}}|d  dks|d  dkrdndqS )r   ry   r~   r   r'   )rm   leftrightr'   r'   r(   
<listcomp>   s    z3Table.__str__.<locals>.writesep.<locals>.<listcomp>r   F)strict)	enumeraterq   rW   r   rZ   r   from_iterablezip)rz   r{   outcolnor6   headtailgluer.   r'   r(   writesep   s   
zTable.__str__.<locals>.writesep=r   r   r*   r   rY   )ry   N)rz   r   r{   r|   r    r   )ru   r   rC   rD   rW   rS   rx   r$   r%   rH   r#   r   ljustrd   rq   rZ   )r&   r   r   r{   rQ   physical_linelinestrr   rJ   physical_text
adjust_lenr'   r.   r(   __str__   sF   


	
zTable.__str__r"   )r@   rA   r    r!   r    r!   )rJ   r   r    r!   )rL   rM   r    r   )rL   rM   rJ   r   r    r!   )rQ   r   r    r!   )r$   r   r    r!   r:   )rJ   r   r]   r^   r    r   )r    re   )rQ   rv   r    r   )r;   r<   r=   r>   r)   rG   rI   rK   rR   rV   rO   rP   r/   rd   propertyri   ru   rx   r   r'   r'   r'   r(   r?   6   s"    .











	r?   c                      sJ   e Zd ZdZedZdddZdddZd fddZ	dddZ
  ZS )TextWrapperz;Custom subclass that uses a different word separator regex.zf(\s+|(?<=\s)(?::[a-z-]+:)?`\S+|[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))chunks	list[str]r    c                 C  s  g }| j dkrtd| j  |  |rg }d}|r| j}n| j}| j t| }| jr8|d  dkr8|r8|d= |rUt|d }|| |krR||	  ||7 }nn|s:|rgt|d |krg| 
|||| | jrw|rw|d  dkrw|d= |r||d|  |s|S )zThe original _wrap_chunks uses len() to calculate width.

        This method respects wide/fullwidth characters for width adjustment.
        r   zinvalid width %r (must be > 0)r   r   )r6   ra   reversesubsequent_indentinitial_indentr   drop_whitespacestriprW   pop_handle_long_wordrZ   )r&   r   rC   cur_linecur_lenindentr6   lr'   r'   r(   _wrap_chunks  s8   


!zTextWrapper._wrap_chunkswordr   
space_leftr   tuple[str, str]c                 C  sV   d}t |D ] \}}|t|7 }||kr&|d|d  ||d d f  S q|dfS )z1Break line by unicode width instead of len(word).r   Nr   r   )r   r   )r&   r   r   totalrc   cr'   r'   r(   _break_word?  s   $zTextWrapper._break_wordr   c                   sf   d
 fdd}g }||D ]"}t |tD ]\}}|dkr(||d| q|t| qq|S )zOverride original method that only split by 'wordsep_re'.

        This '_split' splits wide-characters into chunks by one character.
        tr   r    r   c                   s   t t| S r"   )superr   _split)r   )	__class__r&   r'   r(   splitN  r2   z!TextWrapper._split.<locals>.splitr   r   N)r   r   r    r   )r   r   extendrZ   list)r&   r   r   r   chunkwgr   r.   r(   r   H  s   zTextWrapper._splitreversed_chunksr   r   r6   r!   c                 C  sX   t || d}| jr| |d |\}}|| ||d< dS |s*||  dS dS )zGOverride original method for using self._break_word() instead of slice.r   r   N)rt   break_long_wordsr   rW   r   )r&   r   r   r   r6   r   r   rr'   r'   r(   r   Z  s   
zTextWrapper._handle_long_word)r   r   r    r   )r   r   r   r   r    r   )r   r   r    r   )
r   r   r   r   r   r   r6   r   r    r!   )r;   r<   r=   r>   recompile
wordsep_rer   r   r   r   __classcell__r'   r'   r   r(   r     s    

.	r   F   r`   r   r   r6   r   kwargsr
   r    r   c                 K  s   t dd|i|}|| S )Nr6   r'   )r   r8   )r   r6   r   r   r'   r'   r(   r7   l  s   
r7   c                      sF   e Zd ZU dZdZi Zded< ded< d fddZdddZ  Z	S )
TextWriter)r   )zNo options here.r   r'   zClassVar[dict[str, Any]]settings_defaultsr   outputbuilderr   r    r!   c                   s   t    || _d S r"   )r   r)   r   )r&   r   r   r'   r(   r)   x  s   

zTextWriter.__init__c                 C  sB   t | jtjs	J | j| j| j}| j| tt|j| _	d S r"   )

isinstancedocumentr   r   create_translator	walkaboutr   TextTranslatorbodyr   )r&   visitorr'   r'   r(   	translate|  s   zTextWriter.translate)r   r   r    r!   r   )
r;   r<   r=   	supportedsettings_specr   __annotations__r)   r   r   r'   r'   r   r(   r   q  s   
 r   c                      s  e Zd ZU ded< d fddZdddZefdddZ			ddddZdddZ	dd d!Z
dd"d#Zdd$d%Zdd&d'Zdd(d)ZeZeZdd*d+Zdd,d-Zdd.d/Zdd0d1Zdd2d3Zdd4d5Zdd6d7Zdd8d9Zdd:d;Zdd<d=Zdd>d?Zdd@dAZddBdCZddDdEZddFdGZddHdIZ ddJdKZ!ddLdMZ"ddNdOZ#ddPdQZ$ddRdSZ%ddTdUZ&ddVdWZ'ddXdYZ(ddZd[Z)dd\d]Z*dd^d_Z+dd`daZ,ddbdcZ-ddddeZ.ddfdgZ/ddldmZ0ddndoZ1ddpdqZ2ddrdsZ3ddtduZ4ddvdwZ5ddxdyZ6ddzd{Z7dd|d}Z8dd~dZ9dddZ:dddZ;dddZ<dddZ=dddZ>dddZ?dddZ@dddZAdddZBdddZCdddZDdddZEdddZFdddZGdddZHdddZIdddZJdddZKdddZLdddZMdddZNdddZOdddZPdddZQdddZRdddZSdddZTdddZUdddZVdddZWdddZXdddZYdddZZdddÄZ[dddńZ\dddǄZ]dddɄZ^ddd˄Z_ddd̈́Z`dddτZadddфZbdddӄZcdddՄZddddׄZedddلZfdddۄZgddd݄Zhddd߄ZidddZjdddZkdddZldddZmdddZndddZodddZpdddZqdddZrdddZsdddZtdddZudddZvdddZwdddZxdddZydd dZzdddZ{dddZ|dddZ}ddd	Z~dd
dZdddZdddZdddZdddZdddZdddZdddZdddZdddZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZdddZdd d!Zdd"d#Zdd$d%Zdd&d'Zdd(d)Zdd*d+Zdd,d-Zdd.d/Zdd0d1Zdd2d3Zdd4d5Zdd6d7Zdd8d9Zdd:d;Zdd<d=Zdd>d?Zdd@dAZddBdCZddDdEZddFdGZddHdIZddJdKZddLdMZddNdOZddPdQZddRdSZddTdUZddVdWZddXdYZddZd[Zdd\d]Zdd^d_Zdd`daZddbdcZddddeZddfdgZddhdiZddjdkZÐddldmZĐddndoZŐddpdqZƐddrdsZǐddtduZȐddvdwZɐddxdyZʐddzd{Zːdd|d}Z̐dd~dZ͐dddZΐdddZϐdddZАdddZѐdddZҐdddZӐdddZԐdddZՐdddZ֐dddZאdddZؐdddZِdddZڐdddZېdddZܐdddZݐdddZސdddZ߇  ZS (  r   r   r   r   nodes.documentr    r!   c                   s   t  || | jj}|dkrd| _n|dkrtj| _nd| _| jj| _| jj	| _
| jj| _g g| _dg| _g | _d| _d| _|  g | _d S )Nwindowsz
nativerY   r   )r   r)   configtext_newlinesnloslineseptext_sectioncharssectioncharstext_add_secnumbersadd_secnumberstext_secnumber_suffixsecnumber_suffixstatesstateindentlist_countersectionlevellineblocklevelcontext)r&   r   r   newlinesr   r'   r(   r)     s$   



zTextTranslator.__init__r   r   c                 C  s   | j d d|f d S Nr   )r   rW   )r&   r   r'   r'   r(   add_text  s   zTextTranslator.add_textr   r   c                 C  s   | j g  | j| d S r"   )r   rW   r   )r&   r   r'   r'   r(   	new_state  s   zTextTranslator.new_stateTr   Nr8   r3   endSequence[str] | Nonefirst
str | Nonec           
        s   | j  }t| j| j g g d	 fdd}|D ]\}}|dkr/| q!|  | |f g q!|  |d urvrvd d  }d d dgkrbd||gf n|d d d }	d||	gf | j d  d S )
Nr    r!   c                    sP   sd S rt dt d} nd }  r|  7 } | f d S )Nr   rj   )r7   rZ   MAXWIDTH
splitlinesrW   )resr   r   	maxindentresulttoformatr8   r'   r(   	do_format  s   z+TextTranslator.end_state.<locals>.do_formatr   r   r   r   r   )r   r   sumr   rW   insertr   )
r&   r8   r   r   contentr   
itemindentitem	newindentr   r'   r   r(   	end_state  s(   


zTextTranslator.end_statenoder   c                 C     |  d d S rB   r   r&   r   r'   r'   r(   visit_document     zTextTranslator.visit_documentc                 C  s*   |    | jdd | jd D | _d S )Nc                 s  s.    | ]\}}|D ]}|od | | V  qqdS )r*   Nr'   )rm   r   rC   rQ   r'   r'   r(   ro     s    z1TextTranslator.depart_document.<locals>.<genexpr>r   )r   r   rZ   r   r   r   r'   r'   r(   depart_document  s   zTextTranslator.depart_documentc                 C  s    | j | j | _|  jd7  _d S rN   )r   r   _title_charr   r'   r'   r(   visit_section  s   zTextTranslator.visit_sectionc                 C  s   |  j d8  _ d S rN   )r   r   r'   r'   r(   depart_section  r9   zTextTranslator.depart_sectionc                 C  r   rB   r   r   r'   r'   r(   visit_topic  r   zTextTranslator.visit_topicc                 C     |    d S r"   r   r   r'   r'   r(   depart_topic     zTextTranslator.depart_topicc                 C  s   |  d | d d S )Nr   z-[ )r   r   r   r'   r'   r(   visit_rubric     
zTextTranslator.visit_rubricc                 C  s   |  d |   d S )Nz ]-r   r   r   r'   r'   r(   depart_rubric  s   
zTextTranslator.depart_rubricc                 C     d S r"   r'   r   r'   r'   r(   visit_compound     zTextTranslator.visit_compoundc                 C  r  r"   r'   r   r'   r'   r(   depart_compound  r  zTextTranslator.depart_compoundc                 C  r  r"   r'   r   r'   r'   r(   visit_glossary  r  zTextTranslator.visit_glossaryc                 C  r  r"   r'   r   r'   r'   r(   depart_glossary  r  zTextTranslator.depart_glossaryc                 C  s4   t |jtjr| | d  tj| d d S )N: r   )r   parentr   
Admonitionr   astextSkipNoder   r   r'   r'   r(   visit_title  s   zTextTranslator.visit_titlec                 C  sf   t |jtjr1d|jd d  }| jj|}|d u r"| jjd}|d ur1dtt	|| j
 S dS )N#idsr   r   .)r   r  r   sectionr   
secnumbersgetrZ   r[   r   r   )r&   r   
anchornamenumbersr'   r'   r(   get_section_number_string  s   z(TextTranslator.get_section_number_stringc                 C  s   t |jtjr| j}nd}d}ddd | j D }| jr&| 	|| }| j
  d|d|t|  dg}t| jdkrLt| jd dkrL|d | jd d|f d S )	N^r   c                 s  s$    | ]}|d  dkr|d V  qdS )r   r   r   Nr'   rl   r'   r'   r(   ro     s   " z.TextTranslator.depart_title.<locals>.<genexpr>z%sr}   r   r   )r   r  r   r  r  rZ   r   r   r   r"  r   r   rH   rW   )r&   r   rz   r   titler'   r'   r(   depart_title  s   
 
zTextTranslator.depart_titlec                 C  r  r"   r'   r   r'   r'   r(   visit_subtitle"  r  zTextTranslator.visit_subtitlec                 C  r  r"   r'   r   r'   r'   r(   depart_subtitle%  r  zTextTranslator.depart_subtitlec                 C  r   )Nz-- r   r   r'   r'   r(   visit_attribution(  r   z TextTranslator.visit_attributionc                 C  r  r"   r'   r   r'   r'   r(   depart_attribution+  r  z!TextTranslator.depart_attributionc                 C  r  r"   r'   r   r'   r'   r(   
visit_desc5  r  zTextTranslator.visit_descc                 C  r  r"   r'   r   r'   r'   r(   depart_desc8  r  zTextTranslator.depart_descc                 C  r   rB   r   r   r'   r'   r(   visit_desc_signature;  r   z#TextTranslator.visit_desc_signaturec                 C  s   | j dd d d S )NFr8   r   r  r   r'   r'   r(   depart_desc_signature>  s   z$TextTranslator.depart_desc_signaturec                 C  r  r"   r'   r   r'   r'   r(   visit_desc_signature_lineB  r  z(TextTranslator.visit_desc_signature_linec                 C  r   rX   r(  r   r'   r'   r(   depart_desc_signature_lineE  r   z)TextTranslator.depart_desc_signature_linec                 C  s   |    | | j d S r"   )r   r   r   r   r'   r'   r(   visit_desc_contentH  s   z!TextTranslator.visit_desc_contentc                 C  r  r"   r  r   r'   r'   r(   depart_desc_contentL  r	  z"TextTranslator.depart_desc_contentc                 C  r  r"   r'   r   r'   r'   r(   visit_desc_inlineO  r  z TextTranslator.visit_desc_inlinec                 C  r  r"   r'   r   r'   r'   r(   depart_desc_inlineR  r  z!TextTranslator.depart_desc_inlinec                 C  r  r"   r'   r   r'   r'   r(   visit_desc_nameX  r  zTextTranslator.visit_desc_namec                 C  r  r"   r'   r   r'   r'   r(   depart_desc_name[  r  zTextTranslator.depart_desc_namec                 C  r  r"   r'   r   r'   r'   r(   visit_desc_addname^  r  z!TextTranslator.visit_desc_addnamec                 C  r  r"   r'   r   r'   r'   r(   depart_desc_addnamea  r  z"TextTranslator.depart_desc_addnamec                 C  r  r"   r'   r   r'   r'   r(   visit_desc_typed  r  zTextTranslator.visit_desc_typec                 C  r  r"   r'   r   r'   r'   r(   depart_desc_typeg  r  zTextTranslator.depart_desc_typec                 C  r   )Nz -> r(  r   r'   r'   r(   visit_desc_returnsj  r   z!TextTranslator.visit_desc_returnsc                 C  r  r"   r'   r   r'   r'   r(   depart_desc_returnsm  r  z"TextTranslator.depart_desc_returnsparameter_grouptype[Element]sig_open_parensig_close_parenc                   sz   |  | d| _d| _d| _d| _ fdd|jD | _t| j| _d| _	|
dd| _| jr5| j	 | _	| j| dS )	zVisit a signature parameters or type parameters list.

        The *parameter_group* value is the type of a child node acting as a required parameter
        or as a set of contiguous optional parameters.
        Tr   c                   s   g | ]}t | qS r'   )r   rm   r   r>  r'   r(   r     s    
z<TextTranslator._visit_sig_parameter_list.<locals>.<listcomp>, multi_line_parameter_listFN)r   is_first_paramoptional_param_levelparams_left_at_levelparam_group_indexchildrenlist_is_required_paramr   required_params_leftparam_separatorr  rE  rstripr   rW   )r&   r   r>  r@  rA  r'   rC  r(   _visit_sig_parameter_listp  s   

z(TextTranslator._visit_sig_parameter_listc                 C  s   | j  }| | d S r"   )r   r   r   )r&   r   rA  r'   r'   r(   _depart_sig_parameter_list  r  z)TextTranslator._depart_sig_parameter_listc                 C     |  |tjdd d S )N())rO  r   desc_parameterr   r'   r'   r(   visit_desc_parameterlist     z'TextTranslator.visit_desc_parameterlistc                 C     |  | d S r"   rP  r   r'   r'   r(   depart_desc_parameterlist  r   z(TextTranslator.depart_desc_parameterlistc                 C  rQ  )N[])rO  r   desc_type_parameterr   r'   r'   r(   visit_desc_type_parameter_list  rV  z-TextTranslator.visit_desc_type_parameter_listc                 C  rW  r"   rX  r   r'   r'   r(   depart_desc_type_parameter_list  r   z.TextTranslator.depart_desc_type_parameter_listc                 C  s  | j }|r| jr| jdks|   | jrd| _n|s#| js#| | j | jdkr0|  jd8  _n|  jd8  _| |  | j	| j
 }|rxt| j	}| j
d |k}| o\| j	| j
d  }| jdk}|sj|rw|sj|rw| | j | jdd d n	| jr| | j |r|  j
d7  _
tj)Nr   Fr   r.  )rE  rF  rG  r   rL  r   rM  rH  r  rK  rI  rH   r   r   r  )r&   r   on_separate_lineis_requiredlen_lirpis_last_groupnext_is_requiredopt_param_left_at_levelr'   r'   r(   visit_desc_parameter  sL   




z#TextTranslator.visit_desc_parameterc                 C  rW  r"   )re  r   r'   r'   r(   visit_desc_type_parameter  r   z(TextTranslator.visit_desc_type_parameterc                 C  s   t dd |jD | _|  jd7  _| j| _| jrR| jr'|   | d d S | j	r>| | j
 | d | jdd d d S | d | | j
 | jdd d d S | d d S )Nc                 s  s    | ]	}t |tjV  qd S r"   )r   r   rT  rB  r'   r'   r(   ro     s    
z5TextTranslator.visit_desc_optional.<locals>.<genexpr>r   rZ  Fr.  )r   rJ  rH  rG  max_optional_param_levelrE  rF  r   r   rL  rM  r   r   r'   r'   r(   visit_desc_optional  s"   


z"TextTranslator.visit_desc_optionalc                 C  s~   |  j d8  _ | jr*| j | jd kr| | j | d | j dkr)| jdd d n| d | j dkr=|  jd7  _d S d S )Nr   r[  r   Fr.  )rG  rE  rg  r   rM  r   rI  r   r'   r'   r(   depart_desc_optional  s   



z#TextTranslator.depart_desc_optionalc                 C  r  r"   r'   r   r'   r'   r(   visit_desc_annotation  r  z$TextTranslator.visit_desc_annotationc                 C  r  r"   r'   r   r'   r'   r(   depart_desc_annotation  r  z%TextTranslator.depart_desc_annotationc                 C  r  r"   r   r   r'   r'   r(   visit_figure  r	  zTextTranslator.visit_figurec                 C  r  r"   r  r   r'   r'   r(   depart_figure   r	  zTextTranslator.depart_figurec                 C  r  r"   r'   r   r'   r'   r(   visit_caption  r  zTextTranslator.visit_captionc                 C  r  r"   r'   r   r'   r'   r(   depart_caption  r  zTextTranslator.depart_captionc                 C  s   |    tttj |}dd |D }tdd |D }d }|D ]0}|d r7| |d |d  |d }n|d urF| ddt|   | |	 | j
  q | jdd	 tj)
Nc                 s  s    | ]}|d  V  qdS )	tokennameNr'   )rm   
productionr'   r'   r(   ro     rp   z6TextTranslator.visit_productionlist.<locals>.<genexpr>c                 s  rk   r"   rH   )rm   namer'   r'   r(   ro     rp   rp  z ::=z%s    r*   Fr8   )r   r   r   r   rq  rt   r   r   rH   r  r   r   r   r  )r&   r   productionlistnamesmaxlenlastnamerq  r'   r'   r(   visit_productionlist	  s   
z#TextTranslator.visit_productionlistc                 C  s6   t tj|d }|  | _| t| jd  d S )Nr   r`   )r   r   labelr  r   	_footnoter   rH   )r&   r   rz  r'   r'   r(   visit_footnote  s   zTextTranslator.visit_footnotec                 C     | j d| j d d S Nz[%s] r   )r   r{  r   r'   r'   r(   depart_footnote  rV  zTextTranslator.depart_footnotec                 C  sF   t |rt|d tjr|d  | _nd| _| t | jd  d S )Nr   r   r`   )rH   r   r   rz  r  	_citlabelr   r   r'   r'   r(   visit_citation!  s   zTextTranslator.visit_citationc                 C  r}  r~  )r   r  r   r'   r'   r(   depart_citation(  rV  zTextTranslator.depart_citationc                 C     t jr"   r   r  r   r'   r'   r(   visit_label+     zTextTranslator.visit_labelc                 C  r  r"   r'   r   r'   r'   r(   visit_legend.  r  zTextTranslator.visit_legendc                 C  r  r"   r'   r   r'   r'   r(   depart_legend1  r  zTextTranslator.depart_legendc                 C  r  r"   r'   r   r'   r'   r(   visit_option_list6  r  z TextTranslator.visit_option_listc                 C  r  r"   r'   r   r'   r'   r(   depart_option_list9  r  z!TextTranslator.depart_option_listc                 C  r   rB   r   r   r'   r'   r(   visit_option_list_item<  r   z%TextTranslator.visit_option_list_itemc                 C  r  r"   r  r   r'   r'   r(   depart_option_list_item?  r	  z&TextTranslator.depart_option_list_itemc                 C  s
   d| _ d S )NT)_firstoptionr   r'   r'   r(   visit_option_groupB     
z!TextTranslator.visit_option_groupc                 C  r   )Nz     r(  r   r'   r'   r(   depart_option_groupE  r   z"TextTranslator.depart_option_groupc                 C  s   | j rd| _ d S | d d S )NFrD  )r  r   r   r'   r'   r(   visit_optionH  s   
zTextTranslator.visit_optionc                 C  r  r"   r'   r   r'   r'   r(   depart_optionN  r  zTextTranslator.depart_optionc                 C  r  r"   r'   r   r'   r'   r(   visit_option_stringQ  r  z"TextTranslator.visit_option_stringc                 C  r  r"   r'   r   r'   r'   r(   depart_option_stringT  r  z#TextTranslator.depart_option_stringc                 C  s   |  |d  d S )N	delimiterr(  r   r'   r'   r(   visit_option_argumentW  r9   z$TextTranslator.visit_option_argumentc                 C  r  r"   r'   r   r'   r'   r(   depart_option_argumentZ  r  z%TextTranslator.depart_option_argumentc                 C  r  r"   r'   r   r'   r'   r(   visit_description]  r  z TextTranslator.visit_descriptionc                 C  r  r"   r'   r   r'   r'   r(   depart_description`  r  z!TextTranslator.depart_descriptionc                 C  r  r"   r  r   r'   r'   r(   visit_tabular_col_specc  r  z%TextTranslator.visit_tabular_col_specc                 C  s   | j j|d  tj)Nr@   )tabler@   rW   r   r  r   r'   r'   r(   visit_colspecf     zTextTranslator.visit_colspecc                 C  r  r"   r'   r   r'   r'   r(   visit_tgroupj  r  zTextTranslator.visit_tgroupc                 C  r  r"   r'   r   r'   r'   r(   depart_tgroupm  r  zTextTranslator.depart_tgroupc                 C  r  r"   r'   r   r'   r'   r(   visit_theadp  r  zTextTranslator.visit_theadc                 C  r  r"   r'   r   r'   r'   r(   depart_theads  r  zTextTranslator.depart_theadc                 C     | j   d S r"   )r  rI   r   r'   r'   r(   visit_tbodyv  r   zTextTranslator.visit_tbodyc                 C  r  r"   r'   r   r'   r'   r(   depart_tbodyy  r  zTextTranslator.depart_tbodyc                 C  s   | j jr| j   d S d S r"   )r  rC   rG   r   r'   r'   r(   	visit_row|  s   zTextTranslator.visit_rowc                 C  r  r"   r'   r   r'   r'   r(   
depart_row  r  zTextTranslator.depart_rowc                 C  s4   t |ddd |ddd d| _| d d S )Nmorerowsr   r   morecols)r   r   )r   r  entryr   r   r'   r'   r(   visit_entry  s
   zTextTranslator.visit_entryc                   sH    j  fdd j D } j  | j_ j j  `d S )Nc                 3  s     | ]} j |d  V  qdS )r   N)r   rZ   rl   r.   r'   r(   ro     s    z.TextTranslator.depart_entry.<locals>.<genexpr>)	r   rZ   r   r   r   r  r   r  rK   r&   r   r   r'   r.   r(   depart_entry  s
    
zTextTranslator.depart_entryc                 C  s,   t | drd}t|| d t | _d S )Nr  z Nested tables are not supported.r   )hasattrNotImplementedErrorr   r?   r  )r&   r   rb   r'   r'   r(   visit_table  s
   

zTextTranslator.visit_tablec                 C  s$   |  t| j | `| jdd d S NFrt  )r   r   r  r   r   r'   r'   r(   depart_table  s   zTextTranslator.depart_tablec                 C  sV   t tj|d }t ttj |}| d | ddd |D d  |   tj	)Nr   rD  c                 s  s    | ]}|  V  qd S r"   )r  )rm   nr'   r'   r(   ro     rp   z,TextTranslator.visit_acks.<locals>.<genexpr>r  )
r   r   bullet_listr   	list_itemr   r   rZ   r   r  )r&   r   r  
list_itemsr'   r'   r(   
visit_acks  s   
zTextTranslator.visit_acksc                 C  s4   d|j v r| td|d   | td tj)Naltz[image: %s]z[image])
attributesr   r   r   r  r   r'   r'   r(   visit_image  s   
zTextTranslator.visit_imagec                 C  s4   t | j}| d | dt|   |   tj)Nr   r   )r   r   r   r   r   r   r   r  )r&   r   r   r'   r'   r(   visit_transition  s
   

zTextTranslator.visit_transitionc                 C     | j d d S r   r   rW   r   r'   r'   r(   visit_bullet_list  r2   z TextTranslator.visit_bullet_listc                 C  r  r"   r   r   r   r'   r'   r(   depart_bullet_list  r   z!TextTranslator.depart_bullet_listc                 C  s   | j |ddd  d S )Nstartr   )r   rW   r  r   r'   r'   r(   visit_enumerated_list  s   z$TextTranslator.visit_enumerated_listc                 C  r  r"   r  r   r'   r'   r(   depart_enumerated_list  r   z%TextTranslator.depart_enumerated_listc                 C  r  )Nr  r   r'   r'   r(   visit_definition_list  r2   z$TextTranslator.visit_definition_listc                 C  r  r"   r  r   r'   r'   r(   depart_definition_list  r   z%TextTranslator.depart_definition_listc                 C  s`   | j d dkr| d d S | j d dkrd S | j d  d7  < | tt| j d d  d S )Nr   r}   r  r   )r   r   rH   r   r   r'   r'   r(   visit_list_item  s    zTextTranslator.visit_list_itemc                 C  sJ   | j d dkr| jdd d S | j d dkrd S | jd| j d  d d S )Nr   z* r  r  z%s. )r   r   r   r'   r'   r(   depart_list_item  s
   zTextTranslator.depart_list_itemc                 C  s   t t|tj| _d S r"   )rH   r   findallr   
classifier_classifier_count_in_lir   r'   r'   r(   visit_definition_list_item  s   z)TextTranslator.visit_definition_list_itemc                 C  r  r"   r'   r   r'   r'   r(   depart_definition_list_item  r  z*TextTranslator.depart_definition_list_itemc                 C  r   rB   r   r   r'   r'   r(   
visit_term  r   zTextTranslator.visit_termc                 C  s   | j s| jd d d S d S )Nr   r  r   r   r'   r'   r(   depart_term  s   zTextTranslator.depart_termc                 C  r   )Nz : r(  r   r'   r'   r(   visit_classifier  r   zTextTranslator.visit_classifierc                 C  s(   |  j d8  _ | j s| jd d d S d S )Nr   r  r  r   r'   r'   r(   depart_classifier  s   z TextTranslator.depart_classifierc                 C  r  r"   r   r   r'   r'   r(   visit_definition  r	  zTextTranslator.visit_definitionc                 C  r  r"   r  r   r'   r'   r(   depart_definition  r	  z TextTranslator.depart_definitionc                 C  r  r"   r'   r   r'   r'   r(   visit_field_list  r  zTextTranslator.visit_field_listc                 C  r  r"   r'   r   r'   r'   r(   depart_field_list  r  z TextTranslator.depart_field_listc                 C  r  r"   r'   r   r'   r'   r(   visit_field  r  zTextTranslator.visit_fieldc                 C  r  r"   r'   r   r'   r'   r(   depart_field  r  zTextTranslator.depart_fieldc                 C  r   rB   r   r   r'   r'   r(   visit_field_name  r   zTextTranslator.visit_field_namec                 C  s   |  d | jd d d S )N:r  r  r   r'   r'   r(   depart_field_name  s   
z TextTranslator.depart_field_namec                 C  r  r"   r   r   r'   r'   r(   visit_field_body  r	  zTextTranslator.visit_field_bodyc                 C  r  r"   r  r   r'   r'   r(   depart_field_body	  r	  z TextTranslator.depart_field_bodyc                 C  r  r"   r'   r   r'   r'   r(   visit_centered  r  zTextTranslator.visit_centeredc                 C  r  r"   r'   r   r'   r'   r(   depart_centered  r  zTextTranslator.depart_centeredc                 C  r  r"   r'   r   r'   r'   r(   visit_hlist  r  zTextTranslator.visit_hlistc                 C  r  r"   r'   r   r'   r'   r(   depart_hlist  r  zTextTranslator.depart_hlistc                 C  r  r"   r'   r   r'   r'   r(   visit_hlistcol  r  zTextTranslator.visit_hlistcolc                 C  r  r"   r'   r   r'   r'   r(   depart_hlistcol  r  zTextTranslator.depart_hlistcolc                 C  r   rB   r   r   r'   r'   r(   visit_admonition  r   zTextTranslator.visit_admonitionc                 C  r  r"   r  r   r'   r'   r(   depart_admonition!  r	  z TextTranslator.depart_admonitionc                 C  r   )Nr}   r   r   r'   r'   r(   _visit_admonition$  r   z TextTranslator._visit_admonitionc                 C  s   t |j }t| jt| }t| jd dkrK| jd d d dkrKt| tdd | jd d d D krK| jd  t|7  < | j|d d d S | jd dd| j	gf | j|d d d S )	Nr   r   r   c                 s  rk   r"   rr  )rm   sr'   r'   r(   ro   -  rp   z4TextTranslator._depart_admonition.<locals>.<genexpr>r  r  r  )
r   tagnamer   r   rH   r   r   r   r   r   )r&   r   rz  r   r'   r'   r(   _depart_admonition'  s   
(z!TextTranslator._depart_admonitionc                 C  r   rB   r   r   r'   r'   r(   visit_versionmodifiedL  r   z$TextTranslator.visit_versionmodifiedc                 C  r  r"   r  r   r'   r'   r(   depart_versionmodifiedO  r	  z%TextTranslator.depart_versionmodifiedc                 C  r  r"   r   r   r'   r'   r(   visit_literal_blockR  r	  z"TextTranslator.visit_literal_blockc                 C     | j dd d S r  r  r   r'   r'   r(   depart_literal_blockU  r2   z#TextTranslator.depart_literal_blockc                 C  r   rB   r   r   r'   r'   r(   visit_doctest_blockX  r   z"TextTranslator.visit_doctest_blockc                 C  r  r  r  r   r'   r'   r(   depart_doctest_block[  r2   z#TextTranslator.depart_doctest_blockc                 C  s   |    |  jd7  _d S rN   )r   r   r   r'   r'   r(   visit_line_block^  s   zTextTranslator.visit_line_blockc                 C  s4   |  j d8  _ | jdd d | j s| d d S d S )Nr   Fr.  rY   )r   r   r   r   r'   r'   r(   depart_line_blockb  s
   z TextTranslator.depart_line_blockc                 C  r  r"   r'   r   r'   r'   r(   
visit_lineh  r  zTextTranslator.visit_linec                 C  r   rX   r(  r   r'   r'   r(   depart_linek  r   zTextTranslator.depart_linec                 C  r  r"   r   r   r'   r'   r(   visit_block_quoten  r	  z TextTranslator.visit_block_quotec                 C  r  r"   r  r   r'   r'   r(   depart_block_quoteq  r	  z!TextTranslator.depart_block_quotec                 C  r  r"   r'   r   r'   r'   r(   visit_compact_paragrapht  r  z&TextTranslator.visit_compact_paragraphc                 C  r  r"   r'   r   r'   r'   r(   depart_compact_paragraphw  r  z'TextTranslator.depart_compact_paragraphc                 C  s.   t |jtjrt |jtjr| d d S d S rB   )r   r  r   r  r   seealsor   r   r'   r'   r(   visit_paragraphz  s   zTextTranslator.visit_paragraphc                 C  s,   t |jtjrt |jtjr|   d S d S r"   )r   r  r   r  r   r  r   r   r'   r'   r(   depart_paragraph  s   zTextTranslator.depart_paragraphc                 C  r  r"   r  r   r'   r'   r(   visit_target  r  zTextTranslator.visit_targetc                 C  r  r"   r  r   r'   r'   r(   visit_index  r  zTextTranslator.visit_indexc                 C  r  r"   r  r   r'   r'   r(   visit_toctree  r  zTextTranslator.visit_toctreec                 C  r  r"   r  r   r'   r'   r(   visit_substitution_definition  r  z,TextTranslator.visit_substitution_definitionc                 C  r  r"   r'   r   r'   r'   r(   visit_pending_xref  r  z!TextTranslator.visit_pending_xrefc                 C  r  r"   r'   r   r'   r'   r(   depart_pending_xref  r  z"TextTranslator.depart_pending_xrefc                 C  s@   | j r|d}|d ur| dtt|| j  d S d S d S )N	secnumberr  )r   r  r   rZ   r[   r   r   )r&   r   r!  r'   r'   r(   visit_reference  s   
 zTextTranslator.visit_referencec                 C  r  r"   r'   r   r'   r'   r(   depart_reference  r  zTextTranslator.depart_referencec                 C  s"   t |dd}| | t j)Nr$  r  )r   r   r  
visit_Textr  r  r'   r'   r(   visit_number_reference  s   
z%TextTranslator.visit_number_referencec                 C  r  r"   r'   r   r'   r'   r(   visit_download_reference  r  z'TextTranslator.visit_download_referencec                 C  r  r"   r'   r   r'   r'   r(   depart_download_reference  r  z(TextTranslator.depart_download_referencec                 C  r   N*r(  r   r'   r'   r(   visit_emphasis  r   zTextTranslator.visit_emphasisc                 C  r   r
  r(  r   r'   r'   r(   depart_emphasis  r   zTextTranslator.depart_emphasisc                 C  r   r
  r(  r   r'   r'   r(   visit_literal_emphasis  r   z%TextTranslator.visit_literal_emphasisc                 C  r   r
  r(  r   r'   r'   r(   depart_literal_emphasis  r   z&TextTranslator.depart_literal_emphasisc                 C  r   Nz**r(  r   r'   r'   r(   visit_strong  r   zTextTranslator.visit_strongc                 C  r   r  r(  r   r'   r'   r(   depart_strong  r   zTextTranslator.depart_strongc                 C  r   r  r(  r   r'   r'   r(   visit_literal_strong  r   z#TextTranslator.visit_literal_strongc                 C  r   r  r(  r   r'   r'   r(   depart_literal_strong  r   z$TextTranslator.depart_literal_strongc                 C  r   r4   r(  r   r'   r'   r(   visit_abbreviation  r   z!TextTranslator.visit_abbreviationc                 C  s$   | dr| d|d   d S d S )Nexplanationz (%s))r  r   r   r'   r'   r(   depart_abbreviation  s   
z"TextTranslator.depart_abbreviationc                 C  
   |  |S r"   )r  r   r'   r'   r(   visit_manpage  r  zTextTranslator.visit_manpagec                 C  r  r"   )r  r   r'   r'   r(   depart_manpage  r  zTextTranslator.depart_manpagec                 C  r   r
  r(  r   r'   r'   r(   visit_title_reference  r   z$TextTranslator.visit_title_referencec                 C  r   r
  r(  r   r'   r'   r(   depart_title_reference  r   z%TextTranslator.depart_title_referencec                 C  r   N"r(  r   r'   r'   r(   visit_literal  r   zTextTranslator.visit_literalc                 C  r   r  r(  r   r'   r'   r(   depart_literal  r   zTextTranslator.depart_literalc                 C  r   )Nr   r(  r   r'   r'   r(   visit_subscript  r   zTextTranslator.visit_subscriptc                 C  r  r"   r'   r   r'   r'   r(   depart_subscript  r  zTextTranslator.depart_subscriptc                 C  r   )Nr#  r(  r   r'   r'   r(   visit_superscript  r   z TextTranslator.visit_superscriptc                 C  r  r"   r'   r   r'   r'   r(   depart_superscript  r  z!TextTranslator.depart_superscriptc                 C     |  d|   tjNz[%s]r   r  r   r  r   r'   r'   r(   visit_footnote_reference  r  z'TextTranslator.visit_footnote_referencec                 C  r%  r&  r'  r   r'   r'   r(   visit_citation_reference  r  z'TextTranslator.visit_citation_referencer   c                 C  s   |  |  d S r"   )r   r  r   r'   r'   r(   r    r9   zTextTranslator.visit_Textc                 C  r  r"   r'   r   r'   r'   r(   depart_Text  r  zTextTranslator.depart_Textc                 C  r  r"   r'   r   r'   r'   r(   visit_generated  r  zTextTranslator.visit_generatedc                 C  r  r"   r'   r   r'   r'   r(   depart_generated  r  zTextTranslator.depart_generatedc                 C  *   d|d v sd|d v r|  d d S d S Nxrefclassestermr  r(  r   r'   r'   r(   visit_inline     zTextTranslator.visit_inlinec                 C  r-  r.  r(  r   r'   r'   r(   depart_inline  r3  zTextTranslator.depart_inlinec                 C  r  r"   r'   r   r'   r'   r(   visit_container  r  zTextTranslator.visit_containerc                 C  r  r"   r'   r   r'   r'   r(   depart_container
  r  zTextTranslator.depart_containerc                 C  r   )Nz>>r(  r   r'   r'   r(   visit_problematic  r   z TextTranslator.visit_problematicc                 C  r   )Nz<<r(  r   r'   r'   r(   depart_problematic  r   z!TextTranslator.depart_problematicc                 C  s*   |  d | d|   |   tj)Nr   z<SYSTEM MESSAGE: %s>)r   r   r  r   r   r  r   r'   r'   r(   visit_system_message  s   
z#TextTranslator.visit_system_messagec                 C  r  r"   r  r   r'   r'   r(   visit_comment  r  zTextTranslator.visit_commentc                 C  r  r"   r  r   r'   r'   r(   
visit_meta  s   zTextTranslator.visit_metac                 C  s>   d| dd v r| d | |  | jdd tj)Nr   formatr   r   Frt  )r  r   r   r   r  r   r   r  r   r'   r'   r(   	visit_raw   s
   
zTextTranslator.visit_rawc                 C  r  r"   r'   r   r'   r'   r(   
visit_math'  r  zTextTranslator.visit_mathc                 C  r  r"   r'   r   r'   r'   r(   depart_math*  r  zTextTranslator.depart_mathc                 C  r  r"   r   r   r'   r'   r(   visit_math_block-  r	  zTextTranslator.visit_math_blockc                 C  r  r"   r  r   r'   r'   r(   depart_math_block0  r	  z TextTranslator.depart_math_block)r   r   r   r   r    r!   )r   r   r    r!   )r   r   r    r!   )Tr   N)r8   r3   r   r   r   r   r    r!   )r   r   r    r!   )r   r   r    r   )
r   r   r>  r?  r@  r   rA  r   r    r!   )r   r   r    r!   )r;   r<   r=   r   r)   r   	STDINDENTr   r   r   r  r  r  r  r  visit_sidebardepart_sidebarr
  r  r  r  r  r  r  r"  r%  r&  r'  r)  r*  r+  r,  r-  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  rO  rP  rU  rY  r]  r^  re  rf  rh  ri  rj  rk  rl  rm  rn  ro  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  visit_attentiondepart_attentionvisit_cautiondepart_cautionvisit_dangerdepart_dangervisit_errordepart_error
visit_hintdepart_hintvisit_importantdepart_important
visit_notedepart_note	visit_tip
depart_tipvisit_warningdepart_warningvisit_seealsodepart_seealsor  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r(  r)  r  r*  r+  r,  r2  r4  r5  r6  r7  r8  r9  r:  r;  r=  r>  r?  r@  rA  r   r'   r'   r   r(   r     s  
 *	

)r   )r   r   r6   r   r   r
   r    r   ).r>   
__future__r   rr   r   r   textwrapcollections.abcr   r   r   	itertoolsr   r   r   typingr	   r
   r   r   docutilsr   r   docutils.utilsr   sphinxr   sphinx.localer   r   sphinx.util.docutilsr   docutils.nodesr   r   sphinx.builders.textr   r   r?   r   r   rB  r7   Writerr   r   r'   r'   r'   r(   <module>   s4     Ra