o
    d                     @   sh   d 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Z
dZd	Zd
ZG dd deZdd ZdS )a  
    pygments.sphinxext
    ~~~~~~~~~~~~~~~~~~

    Sphinx extension to generate automatic documentation of lexers,
    formatters and filters.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)nodes)ViewList)	Directive)nested_parse_with_titlesz
.. module:: %s

%s
%s
zX
.. class:: %s

    :Short names: %s
    :Filenames:   %s
    :MIME types:  %s

    %s

zA
.. class:: %s

    :Short names: %s
    :Filenames: %s

    %s

z'
.. class:: %s

    :Name: %s

    %s

c                   @   sL   e Zd ZdZdZdZdZdZi Zdd Z	dd Z
d	d
 Zdd Zdd ZdS )PygmentsDoczn
    A directive to collect all lexers/formatters/filters and generate
    autoclass directives for them.
    F   r   c                 C   s   t  | _| jd dkr|  }n(| jd dkr|  }n| jd dkr(|  }n| jd dkr4|  }ntdt	 }t
|ddd	}t| j|| | jD ]}| jjjj| qO|jS )
Nr   lexers
formattersfiltersZlexers_overviewz,invalid argument for "pygmentsdoc" directive
 )source)set	filenames	argumentsdocument_lexersdocument_formattersdocument_filtersdocument_lexers_overview	Exceptionr   Zcompoundr   splitr   statedocumentsettingsZrecord_dependenciesaddchildren)selfoutnodeZvlfn r    R/app/.heroku/python/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.pyrunE   s    




zPygmentsDoc.runc              
      s\  ddl m} ddlm} g }g dd }t| dd dD ]9\}}||d	 }|j|j }||d	 |j	d

|ddddpEdd

|d |d  d| d qg d}	fdd|	D   fdd fdd}
||
  |dddd ||
  D ]}||d |d |d d |d!  d" q||
  d#
|S )$zGenerate a tabular overview of all lexers.

        The columns are the lexer name, the extensions handled by this lexer
        (or "None"), the aliases and a link to the lexer class.r   LEXERS)find_lexer_classc                 S   s   |rd|  d| dS | S )N`z <z>`_r    )nameurlr    r    r!   format_linkc   s   z9PygmentsDoc.document_lexers_overview.<locals>.format_linkc                 S   s   | d d   S )Nr   )lowerxr    r    r!   <lambda>h   s    z6PygmentsDoc.document_lexers_overview.<locals>.<lambda>keyr   , *\*_\None   .)r'   
extensionsaliasesclassc                    s"   g | ] t  fd dD qS )c                    s    g | ]}|  rt |  qS r    )len).0rowcolumnr    r!   
<listcomp>t   s     zCPygmentsDoc.document_lexers_overview.<locals>.<listcomp>.<listcomp>)max)r<   )tabler>   r!   r@   t   s    z8PygmentsDoc.document_lexers_overview.<locals>.<listcomp>c                     sF   g }t  | D ]\}}|r||| q|d|  qd|S )zFormat a table row )zipappendljustjoin)columnsr   lc)column_lengthsr    r!   	write_roww   s   
z7PygmentsDoc.document_lexers_overview.<locals>.write_rowc                     s   dd  D } |  S )zWrite a table separator rowc                 S   s   g | ]}d | qS )=r    )r<   rJ   r    r    r!   r@      s    zQPygmentsDoc.document_lexers_overview.<locals>.write_seperator.<locals>.<listcomp>r    )sep)rK   rL   r    r!   write_seperator   s   z=PygmentsDoc.document_lexers_overview.<locals>.write_seperatorNamezExtension(s)zShort name(s)zLexer classr'   r8   r9   z	:class:`~r:   r&   r   )$pip._vendor.pygments.lexers._mappingr$   pip._vendor.pygments.lexersr%   sorteditemsr   alias_filenamesrE   r(   rG   replace)r   r$   r%   r   r)   	classnamedataZ	lexer_clsr8   Zcolumn_namesrO   r=   r    )rK   rB   rL   r!   r   X   s@   


z$PygmentsDoc.document_lexers_overviewc              
   C   s  ddl m} g }i }i }t| dd dD ]r\}}|d }t|d d |g}| j|j t||}	|	j	s;t
d|  |	j	}
t|
trH|
d}
||g |d|d	 pWd
d|d ddddpgd
d|d pod
|
f ||vr|j	}t|tr|d}|||< qt| dd dD ]8\}}|| d u rtd|f ||  d  d}|t||dt| f  |D ]	}|t|  qqd|S )Nr   r#   c                 S      | d S Nr   r    r+   r    r    r!   r-          z-PygmentsDoc.document_lexers.<locals>.<lambda>r.   z&Warning: %s does not have a docstring.utf8r0   r6   r5      r1   r2   r3   r4      c                 S   rY   rZ   r    r+   r    r    r!   r-      r[   zMissing docstring for %sr7   -r   )rQ   r$   rS   rT   
__import__r   r   __file__getattr__doc__print
isinstancebytesdecode
setdefaultrE   rG   rV   r   
splitlinesstriprstrip	MODULEDOCr;   LEXERDOC)r   r$   r   modulesZmoduledocstringsrW   rX   modulemodcls	docstringZmoddocr   headingr    r    r!   r      sH   


 


zPygmentsDoc.document_lexersc           
   
   C   s   ddl m} g }t| dd dD ]I\}}|d }t|d d |g}| j|j t||}|j	}t
|tr;|d}|j}	|t|	d|d pJd	d|d
 ddpVd	|f  qd|S )Nr   )
FORMATTERSc                 S   rY   rZ   r    r+   r    r    r!   r-      r[   z1PygmentsDoc.document_formatters.<locals>.<lambda>r.   r\   r0   r6   r5   r]   r1   r2   r   )Zpip._vendor.pygments.formattersrt   rS   rT   r`   r   r   ra   rb   rc   re   rf   rg   __name__rE   FMTERDOCrG   rV   )
r   rt   r   rW   rX   ro   rp   rq   rr   rs   r    r    r!   r      s    




zPygmentsDoc.document_formattersc                 C   sr   ddl m} g }| D ]'\}}| jtj|j j |j	}t
|tr(|d}|t|j||f  qd|S )Nr   )FILTERSr\   r   )pip._vendor.pygments.filtersrw   rT   r   r   sysrn   
__module__ra   rc   re   rf   rg   rE   	FILTERDOCru   rG   )r   rw   r   r'   rq   rr   r    r    r!   r      s   


zPygmentsDoc.document_filtersN)ru   rz   __qualname__rc   Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespaceZoption_specr"   r   r   r   r   r    r    r    r!   r   :   s    <%r   c                 C   s   |  dt d S )NZpygmentsdoc)Zadd_directiver   )Zappr    r    r!   setup   s   r}   )rc   ry   Zdocutilsr   Zdocutils.statemachiner   Zdocutils.parsers.rstr   Zsphinx.util.nodesr   rl   rm   rv   r{   r   r}   r    r    r    r!   <module>   s    

 