HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/sphinx/util/__pycache__/docfields.cpython-310.pyc
o

�$�as@�@s�dZddlmZmZmZmZmZmZmZm	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZerNddlmZe�e�Zdejd
e fdd�Z!Gdd�d�Z"Gdd�de"�Z#Gdd�de#�Z$Gdd�d�Z%dS)a8
    sphinx.util.docfields
    ~~~~~~~~~~~~~~~~~~~~~

    "Doc fields" are reST field lists in object descriptions that will
    be domain-specifically transformed to a more appealing presentation.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�)�
TYPE_CHECKING�Any�Dict�List�Tuple�Type�Union�cast)�nodes)�Node)�Inliner)�addnodes)�BuildEnvironment)�__)�logging)�TextlikeNode)�ObjectDescription�node�returncCsXt|�dkrdSt|�dkr |dd�D]}t|tj�sdSqt|dtj�r*dSdS)zCTrue if the node only contains one paragraph (and system messages).rF�NT)�len�
isinstancer
�system_message�	paragraph)r�subnode�r�7/usr/lib/python3/dist-packages/sphinx/util/docfields.py�_is_single_paragraphs�rc@s0eZdZdZdZdZ		d#dedeedfd	ed
ededed
dfdd�Z	e
jddddfdedededee
dedededed
efdd�Ze
jddddfdedededee
dedededed
eefdd�Zdedeed
eeeeffdd�Z		d$deeeefded edededed
ejfd!d"�ZdS)%�Fielda�A doc field that is never grouped.  It can have an argument or not, the
    argument can be linked using a specified *rolename*.  Field should be used
    for doc fields that usually don't occur more than once.

    The body can be linked using a specified *bodyrolename* if the content is
    just a single inline or text node.

    Example::

       :returns: description of the return value
       :rtype: description of the return type
    FrNT�name�names.�label�has_arg�rolename�bodyrolenamercCs(||_||_||_||_||_||_dS�N)rr r!r"r#r$)�selfrr r!r"r#r$rrr�__init__:s
zField.__init__�domain�target�	innernode�contnode�env�inliner�locationc	Cs|dusJ�|du|duksJ||f��|s|p|||�S|�|��|�}	|	dus-|durc|	durF|durFd}
|
d7}
tjt|
�|||d�tjd|d||d�}||pW|||�7}|�|��|�|St�	|�d}|	|||||ig�\}
}t
j|dg|
�R�S)Nz(Problem in %s domain: field is supposed z5to use role '%s', but that role is not in the domain.)r.�F)�	refdomain�refexplicit�reftype�	reftargetr)�
get_domain�role�logger�warningrr
�pending_xref�process_field_xrefr�get_source_liner
�inline)r&r#r(r)r*r+r,r-r.r5�msg�refnode�lineno�ns�messagesrrr�	make_xrefCs&
�zField.make_xrefc		
Cs|�||||||||�gSr%)rA)	r&r#r(r)r*r+r,r-r.rrr�
make_xrefs]s�zField.make_xrefs�fieldarg�contentcCs||fSr%r)r&rCrDrrr�
make_entrydszField.make_entry�types�itemcCs�|\}}t�d|j�}	|r%|	t�d�7}	|	�|j|j||tj|||d��t|�dkr`t|dtj�sMt|dtj	�r`t|d�dkr`t|ddtj�r`|j|j
||d��|d|||d�}t�dtj
ddg|�R��}
t�d|	|
�S)Nr/� �r,r-r.rr)r+r,r-r.)r
�
field_namer!�Text�extendrBr#rrr;r$�astext�
field_bodyr�field)r&rFr(rGr,r-r.rCrD�	fieldname�	fieldbodyrrr�
make_fieldgs,����
�zField.make_field)rNTNN�NNN)�__name__�
__module__�__qualname__�__doc__�
is_grouped�is_typed�strr�boolr'r
�literal_emphasisrrrrrrArrBrErr
rOrRrrrrr*sz����
�
������
�������
�&������rcs�eZdZdZdZejZ		ddede	edfd	ed
ede
ddf�fd
d�
Z		ddeee
efdede	dedededejfdd�Z�ZS)�GroupedFielda�
    A doc field that is grouped; i.e., all fields of that type will be
    transformed into one field with its body being a bulleted list.  It always
    has an argument.  The argument can be linked using the given *rolename*.
    GroupedField should be used for doc fields that can occur more than once.
    If *can_collapse* is true, this field will revert to a Field if only used
    once.

    Example::

       :raises ErrorClass: description when it is raised
    TrNFrr .r!r#�can_collapsercst��|||d|�||_dS)NT)�superr'r^)r&rr r!r#r^��	__class__rrr'�s
zGroupedField.__init__rFr(�itemsr,r-r.cCs�t�d|j�}|��}|D],\}	}
t��}|�|j|j||	tj	|||d��|t�
d�7}||
7}|t�d|�7}q
t|�dkrZ|j
rZttj|d�}t�d|d�}
t�d||
�St�d|�}
t�d||
�S)Nr/rI� -- rr)r
rJr!�	list_typerrLrBr#r
�literal_strongrK�	list_itemrr^r	rNrO)r&rFr(rbr,r-r.rP�listnoderCrD�parrfrQrrrrR�s"�zGroupedField.make_field)rNNFrS)rTrUrVrWrXr
�bullet_listrdrZrr[r'rrrrrrOrR�
__classcell__rrr`rr]}s4����������r]cs�eZdZdZdZ			ddedeedfd	eedfd
ededed
eddf�fdd�
Z		dde	ee
efdededede
dedejfdd�Z�ZS)�
TypedFieldaa
    A doc field that is grouped and has type information for the arguments.  It
    always has an argument.  The argument can be linked using the given
    *rolename*, the type using the given *typerolename*.

    Two uses are possible: either parameter and type description are given
    separately, using a field from *names* and one from *typenames*,
    respectively, or both are given using a field from *names*, see the example.

    Example::

       :param foo: description of parameter foo
       :type foo:  SomeClass

       -- or --

       :param SomeClass foo: description of parameter foo
    TrNFrr .�	typenamesr!r#�typerolenamer^rcs$t��|||||�||_||_dSr%)r_r'rlrm)r&rr rlr!r#rmr^r`rrr'�s
zTypedField.__init__rFr(rbr,r-r.c
s�dtdtdtjf������fdd�}t�d�j�}t|�dkr/�jr/|d\}	}
||	|
�}n���}|D]\}	}
|t�d||	|
��7}q5t�	d|�}t�
d||�S)	NrCrDrcs�t��}|��j�j�|tj�d��|�vrT|t�d�7}��|�}t	|�dkrIt
|dtj�rI|d��}|��j�j�|tj
���d��n||7}|t�d�7}|t�d�7}||7}|S)N)r,z (rrrI�)rc)r
rrLrBr#r
rerK�poprrrMrmr\)rCrDrh�	fieldtype�typename�r(r,r-r.r&rFrr�handle_item�s$�

�z*TypedField.make_field.<locals>.handle_itemr/rr)rZr
rrJr!rr^rdrfrNrO)
r&rFr(rbr,r-r.rsrPrCrD�bodynoderQrrrrrR�s&zTypedField.make_field)rrNNNFrS)rTrUrVrWrYrZrr[r'rrrrrr
rOrRrjrrr`rrk�s< ������������rkc@s\eZdZUdZeeeeeffe	d<ddd�Z
d	ejddfd
d�Z
d	ejddfdd
�ZdS)�DocFieldTransformerz�
    Transforms field lists in "doc field" syntax into better-looking
    equivalents, using the field type definitions given on a domain.
    �typemap�	directiverrNcCs||_|��|_dSr%)rw�get_field_type_maprv)r&rwrrrr'�szDocFieldTransformer.__init__rcCs$|D]
}t|tj�r|�|�qdS)z,Transform all field list children of a node.N)rr
�
field_list�	transform)r&r�childrrr�
transform_all�s

��z!DocFieldTransformer.transform_allc!
Cs�|j}g}i}i}tttj|�D�]z}t|�dksJ�ttj|d�}ttj|d�}z|���	dd�\}	}
Wnt
yH|��d}	}
Ynw|�|	d�\}}t|�rattj
|d�}
|
j}n|j}|duso|jt|
�kr�|	dd���|	dd�}|
r�|d|
7}t�|�|d<|�|�|r�|r�|r�t|�dkr�t|dtj�r�tt|�}|d��}|j|j|jj||d|jjjjjd�}t|�r�ttj
|d�}
|
��|
�|�n|��|tj
ddg|�R�7}q|j }|�rd	d
�|D�}|�r||�!|i�|
<q|j"�r+z
|
�#dd�\}}Wn
t
�yYnwt�|�g|�!|i�|<|}
tj$|j%dd�}|j&j|_|j&j'|_'|j&j(|_(||7}|j)�r}||v�r^tt*t+tt,f|||�}nt|�||<|g|f}|�|�|�-|
|g�}|d�|�q|�-|
|g�}|�|||f�qt�.�}|D]7}t|tj��r�||7}�q�|\}}}|�|j i�}|jjjjj}|jjj/} ||j0||jj||| |d
�7}�q�|�1|�dS)z%Transform a single field list *node*.�rrNr/)NNrH)r+r,cSs(g|]}t|tj�st|tj�r|�qSr)rr
�InlinerK)�.0�nrrr�
<listcomp>?s

�z1DocFieldTransformer.transform.<locals>.<listcomp>T)�translatablerI)2rvr	rr
rOrrJrNrM�split�
ValueError�getrr�childrenr"r[�upperrK�appendrrkrBrmrwr(�state�document�settingsr,�clearrLr�
setdefaultrY�rsplitr;�	rawsource�parent�source�linerXrrrrEryr-rR�replace_self)!r&rrv�entries�groupindicesrFrOrJrN�fieldtype_namerC�typedesc�is_typefieldrrD�
new_fieldname�typed_fieldr)�xrefsrq�argtype�argname�translatable_content�group�	new_entry�new_list�entryrprbr.�
fieldtypesr,r-rrrrz�s��

��
��







�zDocFieldTransformer.transform)rwrrN)rTrUrVrWrrZrrr[�__annotations__r'r
�desc_contentr|r
ryrzrrrrru�s

ruN)&rW�typingrrrrrrrr	�docutilsr
�docutils.nodesr�docutils.parsers.rst.statesr�sphinxr
�sphinx.environmentr�
sphinx.localer�sphinx.utilr�sphinx.util.typingr�sphinx.directiver�	getLoggerrTr6rNr[rrr]rkrurrrr�<module>s$(


S,A