§
    ‹Ÿj„  ã                  ó�   — 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„Zd#d„Zd$d„Zd%d„Zd&d„Zd'd(d!„ZdS ))a‡  Machinery for documenting traitlets config options with Sphinx.

This includes:

- A Sphinx extension defining directives and roles for config options.
- A function to generate an rst file given an Application instance.

To make this documentation, first set this module as an extension in Sphinx's
conf.py::

    extensions = [
        # ...
        'traitlets.config.sphinxdoc',
    ]

Autogenerate the config documentation by running code like this before
Sphinx builds::

    from traitlets.config.sphinxdoc import write_doc
    from myapp import MyApplication

    writedoc('config/options.rst',    # File to write
             'MyApp config options',  # Title
             MyApplication()
            )

The generated rST syntax looks like this::

    .. configtrait:: Application.log_datefmt

        Description goes here.

    Cross reference like this: :configtrait:`Application.log_datefmt`.
é    )ÚannotationsN)Údefaultdict)Údedent)Ú	HasTraitsÚ	Undefined)ÚApplication)ÚindentÚappút.AnyÚreturnúdict[str, t.Any]c                ó<   — |                       ddd¬¦  «         dddœS )z„Registers the Sphinx extension.

    You shouldn't need to call this directly; configure Sphinx to use this
    module instead.
    ÚconfigtraitzConfig option)ÚobjnameT)Úparallel_read_safeÚparallel_write_safe)Úadd_object_type)r
   s    úg/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/traitlets/config/sphinxdoc.pyÚsetupr   .   s-   € ð ×Ò˜ }¸oÐÑNÔNÐNØ"&¸tÐDÐDÐDó    ÚdvÚboolc                óš   — | �	| t           u rdS t          | t          t          t          t
          t          f¦  «        rt          | ¦  «        S dS )NFT)r   Ú
isinstanceÚstrÚlistÚtupleÚdictÚsetr   )r   s    r   Úinteresting_default_valuer    8   sA   € Ø
ˆ
˜�i˜˜ØˆuÝ�"•s�D¥%­­sÐ3Ñ4Ô4ð Ý�B‰xŒxˆØˆ4r   Úaliasesú	list[str]r   c                óž   — g }| D ]4}t          |¦  «        dk    rdnd}|                     d|› |› d�¦  «         Œ5d                     |¦  «        S )Né   ú-z--z``ú, )ÚlenÚappendÚjoin)r!   ÚfmtedÚaÚdashess       r   Úformat_aliasesr-   @   se   € Ø€EØð )ð )ˆÝ˜A™œ !š˜��¨ˆØ�ŠÐ'˜&Ð' !Ð'Ð'Ð'Ñ(Ô(Ð(Ð(Ø�9Š9�UÑÔÐr   Úclsútype[HasTraits]Útrait_aliasesc           
     ó^  — g }| j         }t          |                      d¬¦  «                             ¦   «         ¦  «        D �]Ù\  }}|j        j         }|dz   |j        pdz   }|d|z   dgz  }|j                             ¦   «         pd}|                     t          t          |¦  «        ¦  «        dz   ¦  «         d|v rH|                     t          d	d
                     d„ |j        D ¦   «         ¦  «        z   ¦  «        ¦  «         n%|                     t          d|z   ¦  «        ¦  «         t          |j        ¦  «        r…	 |                     ¦   «         }	n# t           $ r d}	Y nw xY w|	�[t#          |	¦  «        dk    r|	dd…         dz   }	|	                     dd¦  «        }	|                     t          d|	z  ¦  «        ¦  «         ||         r:t'          ||         ¦  «        }
|                     t          d|
z   ¦  «        ¦  «         |                     d¦  «         �ŒÛd                     |¦  «        S )zoGenerate rST documentation for this class' config options.

    Excludes traits defined on parent classes.
    T)Úconfigú.Ú z.. configtrait:: zNo descriptionú
ÚEnumz
:options: r&   c              3  ó    K  — | ]	}d |z  V — Œ
dS )z``%r``N© )Ú.0Úxs     r   ú	<genexpr>z'class_config_rst_doc.<locals>.<genexpr>[   s&   è è € Ð8\Ð8\È!¸ÀA¹Ð8\Ð8\Ð8\Ð8\Ð8\Ð8\r   z:trait type: Né@   é=   z...z\nz\\nz:default: ``%s``z:CLI option: )Ú__name__ÚsortedÚclass_traitsÚitemsÚ	__class__ÚnameÚhelpÚrstripr(   r	   r   r)   Úvaluesr    Údefault_valueÚdefault_value_reprÚ	Exceptionr'   Úreplacer-   )r.   r0   ÚlinesÚ	classnameÚ_ÚtraitÚttypeÚfullnamerD   ÚdvrÚfmt_aliasess              r   Úclass_config_rst_docrS   H   s7  € ð
 €EØ”€IÝ˜3×+Ò+°4Ð+Ñ8Ô8×>Ò>Ñ@Ô@ÑAÔAð $ñ $‰ˆˆ5Ø”Ô(ˆà˜s‘? e¤jÐ&6°BÑ7ˆØÐ%¨Ñ0°"Ð5Ñ5ˆàŒz× Ò Ñ"Ô"Ð6Ð&6ˆØ�Š•V�F 4™LœLÑ)Ô)¨DÑ0Ñ1Ô1Ð1ð �Uˆ?ˆ?à�LŠL� ¨t¯yªyÐ8\Ð8\ÈuÌ|Ð8\Ñ8\Ô8\Ñ/\Ô/\Ñ \Ñ]Ô]Ñ^Ô^Ð^Ð^à�LŠL� °%Ñ 7Ñ8Ô8Ñ9Ô9Ð9õ % UÔ%8Ñ9Ô9ð 
	?ðØ×.Ò.Ñ0Ô0��øÝð ð ð Ø���ðøøøàˆÝ�s‘8”8˜b’=�=Ø˜c˜r˜cœ( UÑ*�Cà—k’k %¨Ñ1Ô1�Ø—’�VÐ$6¸Ñ$<Ñ=Ô=Ñ>Ô>Ð>ð ˜Ô"ð 	@Ý(¨°xÔ)@ÑAÔAˆKØ�LŠL� °+Ñ =Ñ>Ô>Ñ?Ô?Ð?ð 	�Š�RÑÔÐÑà�9Š9�UÑÔÐs   Ä=EÅE!Å E!r   údict[str, list[str]]c                ó  — t          t          ¦  «        }| j                             ¦   «         D ] \  }}||                              |¦  «         Œ!| j                             ¦   «         D ]™\  }\  }}t          |¦  «        dk    r~t          t          |¦  «        ¦  «        }||         }t          |¦  «        dk    rGt          t          |¦  «        ¦  «        }	||	         du r!||dz   |	z                                 |¦  «         Œš|S )zBProduce a mapping of trait names to lists of command line aliases.r$   Tr3   )	r   r   r!   rA   r(   Úflagsr'   ÚnextÚiter)
r
   ÚresÚaliasrN   ÚflagÚcfgrM   rL   Úcls_cfgÚ	traitnames
             r   Úreverse_aliasesr_   x   s÷   € å
•dÑ
Ô
€CØœ×)Ò)Ñ+Ô+ð !ð !‰ˆˆuØˆEŒ
×Ò˜%Ñ Ô Ð Ð ð œ)Ÿ/š/Ñ+Ô+ð Bð B‰ˆ‰hˆs�AÝˆs‰8Œ8�qŠ=ˆ=Ý�T #™YœY™œˆIØ˜)”nˆGÝ�7‰|Œ|˜qÒ Ð Ý ¥ g¡¤Ñ/Ô/�	Ø˜9Ô%¨Ð-Ð-Ø˜	 C™¨)Ñ3Ô4×;Ò;¸DÑAÔAÐAøà€Jr   ÚpathÚtitleÚpreambleú
str | NoneÚNonec                óô  — t          |¦  «        }t          | d¦  «        5 }|                     |dz   ¦  «         |                     dt          |¦  «        z  dz   ¦  «         |                     d¦  «         |�|                     |dz   ¦  «         |                     ¦   «         D ]:}|                     t          ||¦  «        ¦  «         |                     d¦  «         Œ;	 ddd¦  «         dS # 1 swxY w Y   dS )a�  Write a rst file documenting config options for a traitlets application.

    Parameters
    ----------
    path : str
        The file to be written
    title : str
        The human-readable title of the document
    app : traitlets.config.Application
        An instance of the application class to be documented
    preamble : str
        Extra text to add just after the title (optional)
    Úwr5   ú=Nz

)r_   ÚopenÚwriter'   Ú_classes_inc_parentsrS   )r`   ra   r
   rb   r0   ÚfÚcs          r   Ú	write_docrm   Œ   s2  € õ $ CÑ(Ô(€MÝ	ˆd�C‰Œð 	˜AØ	�Š�˜‘ÑÔÐØ	�Š�•s˜5‘z”zÑ! TÑ)Ñ*Ô*Ð*Ø	�Š�‰ŒˆØÐØ�GŠG�H˜vÑ%Ñ&Ô&Ð&à×)Ò)Ñ+Ô+ð 	ð 	ˆAØ�GŠGÕ(¨¨MÑ:Ô:Ñ;Ô;Ð;Ø�GŠG�D‰MŒMˆMˆMð	ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s    B?C-Ã-C1Ã4C1)r
   r   r   r   )r   r   r   r   )r!   r"   r   r   )r.   r/   r0   r   r   r   )r
   r   r   rT   )N)
r`   r   ra   r   r
   r   rb   rc   r   rd   )Ú__doc__Ú
__future__r   ÚtypingÚtÚcollectionsr   Útextwrapr   Ú	traitletsr   r   Útraitlets.config.applicationr   Útraitlets.utils.textr	   r   r    r-   rS   r_   rm   r8   r   r   ú<module>rw      s  ðð!ð !ðD #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðEð Eð Eð Eðð ð ð ðð ð ð ð-ð -ð -ð -ð`ð ð ð ð(ð ð ð ð ð ð r   