
    zi                      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ZddlZddl	Z	ddlm
Z
 ddl	mZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZ dd
l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$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 er0ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZFmGZG  e)jH        eI          ZJ ejK        dejL                  ZMddddd d!d"d#ZN G d$ d%e          ZO G d& d'e          ZPd|d}d/ZQd(d0d~d5ZRdd8ZS G d9 d:e%          ZT	 d|dd>ZU	 d|ddAZV	 d|ddEZW G dF dG          ZX G dH dIeXe+          ZY G dJ dKeXe,          ZZ G dL dMeXe-          Z[ G dN dOee\e]e]f                            Z^ G dP dQe^          Z_ G dR dSe_          Z` G dT dUe^          Za G dV dWe^          Zb G dX dYe^          Zc G dZ d[ec          Zd G d\ d]ec          Ze G d^ d_ec          Zf G d` dae^          Zg G db dce^          Zh G dd dee/          Zi G df dge/          Zj G dh die'          ZkddpZl G dq dre          Zm G ds dte          ZnddyZodd{ZpdS )zThe Python domain.    )annotationsN)	Parameter)TYPE_CHECKINGAny
NamedTuplecast)nodes)
directives)addnodes)desc_signaturepending_xrefpending_xref_condition)ObjectDescription)DomainIndex
IndexEntryObjType)___)TokenTokenProcessor)XRefRole)logging)FieldGroupedField
TypedField)SphinxDirective)signature_from_str)find_pending_xref_conditionmake_idmake_refnodenested_parse_with_titles)IterableIterator)ElementNode)Inliner)Sphinx)Builder)BuildEnvironment)
OptionSpecTextlikeNodeaM  ^ ([\w.]*\.)?            # class name(s)
          (\w+)  \s*             # thing name
          (?: \[\s*(.*)\s*])?    # optional: type parameters list
          (?: \(\s*(.*)\s*\)     # optional: arguments
           (?:\s* -> \s* (.*))?  #           return annotation
          )? $                   # and nothing more
          modulekeywordoperatorobject	exception	statementzbuilt-in function)r-   r.   r/   r0   r1   r2   builtinc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )ObjectEntrystrdocnamenode_idobjtypeboolaliasedN__name__
__module____qualname____annotations__     `/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/domains/python.pyr5   r5   H   s4         LLLLLLLLLMMMMMrB   r5   c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )	ModuleEntryr6   r7   r8   synopsisplatformr:   
deprecatedNr<   rA   rB   rC   rE   rE   O   sB         LLLLLLMMMMMMrB   rE   F	reftargetr6   suppress_prefixr:   returntuple[str, str, str, bool]c                   d}|                      d          r| dd         } | }d}n{|                      d          r&| dd         } |                     d          d         }n@|r|                     d          d         }n"|                      d          r| d	d         }n| }| d
k    s|                      d          rd}nd}|| ||fS )zLParse a type string and return (reftype, reftarget, title, refspecific flag)F.   NT~typing.   Noneobjclass)
startswithsplit)rI   rJ   refspecifictitlereftypes        rC   parse_reftargetr\   W   s     KC   abbM				c	"	" abbM	$$R(	 $$R(			i	(	( !""Fi229==Iuk11rB   rJ   targetenvr*   addnodes.pending_xrefc                  |r6|j                             d          |j                             d          d}ni }t          | |          \  }} }}|j        j        r@|                    d          d         }t          d|d          t          d|d	          g}nt          j        |          g}t          dg|R d
|| |d|S )z0Convert a type string to a cross reference node.	py:modulepy:class)rb   rc   rN   rQ    resolved	condition*py)	refdomainr[   rI   rY   )
ref_contextgetr\   config!python_use_unqualified_type_namesrX   r   r	   Textr   )	r^   r_   rJ   kwargsr[   rZ   rY   	shortname	contnodess	            rC   type_to_xrefrs   r   s     "22;??!o11*==? ? *9&/*R*R'GVUK
z3 ( KK$$R(	!7IQ[!\!\!\!7ES!Q!Q!Q!S		 Z&&'	 ;Y ; ;"&6$/; ;39; ; ;rB   
annotation
list[Node]c                8   |j         j        dfddfd	 t          j        | d	          }g } |          D ]5}t	          |t
          j                  r|                    |d
                    9t	          |t
          j                  r|	                                r|rt	          |d         t          j                  re|d                                         dk    rG|                                 |                    t          t          |          |d                     |                    t          t          |          |                      |                    |           7|S # t           $ r t          | |          gcY S w xY w)zParse type annotation.nodeast.ASTrK   ru   c                   t          | t          j                  r3t          j         | j                  d          d| j                   gS t          | t          j                  rX | j                  }|	                     | j
                             |	                     | j                             |S t          | t          j                  r:t          j                    t          j        dd          t          j                    gS t          | t          j                  r| j        t"          u rt          j        dd          gS t          | j        t$                    r(t          j        dt)          | j                            gS t          | j        t*                    r(t          j        dt)          | j                            gS t          | j        t.                    r(t          j        dt)          | j                            gS t          j        t)          | j                            gS t          | t          j                  r | j                  S t          | t          j                  rt          j        dd          gS t          | t          j                  rt          j        dd          g}| j        r| j        D ]n}|	                     |                     |                    t          j        dd                     |                    t          j                               o|                                 |                                 |                    t          j        dd	                     |S t          | t          j                  r!tA          fd
| j!        D             g           S t          | t          j"                  rt          j        | j#                  gS t          | t          j$                  r+tK          | j        dd          dv r |           S r%tK          | j        dd          dk    r |           S  | j                  }|                    t          j        dd                     |	                     | j&                             |                    t          j        dd	                     |d         dv rRtO          |dd          d          D ]8\  }}t          |t          j                  rt          j(        dd|          ||<   9|S t          | t          j)                  r! | j
                   | j*                  z   S t          | t          j+                  r| j        rg }| j        D ]n}|	                     |                     |                    t          j        dd                     |                    t          j                               o|                                 |                                 n*t          j        dd          t          j        dd          g}|S tX          )Nr   rN   rd   |z...rP   [,]c              3  .   K   | ]} |          V  d S NrA   ).0eunparses     rC   	<genexpr>z5_parse_annotation.<locals>.unparse.<locals>.<genexpr>   s+      66q

666666rB   id>   UnionOptionalLiteral)r   typing.LiteralrO   )start())-
isinstanceast	Attributer	   ro   valueattrBinOpleftextendoprightBitOrr   desc_sig_spacedesc_sig_punctuationConstantEllipsisr:   desc_sig_keywordreprintdesc_sig_literal_numberr6   desc_sig_literal_stringExprInvertListeltsappendpopModulesumbodyNamer   	Subscriptgetattrslice	enumerateliteralUnaryOpoperandTupleSyntaxError)rw   resultelemisubnode_unparse_pep_604_annotationshort_literalsr   s        rC   r   z"_parse_annotation.<locals>.unparse   s   dCM** 	IJ''$*"5"5a"8FF49FFGGHHdCI&& 	!(!3!3FMM''$'**+++MM''$*--...MdCI&& 	/+--1"c::+--/ / dCL)) 	6zX%% 5b%@@AA$*d++ I 1"d4:6F6FGGHH$*c** P 8T$*=M=MNNOO$*c** 6 8T$*=M=MNNOO 
4
#3#34455dCH%% 	'74:&&&dCJ'' 	<1"c::;;dCH%% 	3B<<=Fy 	 !I = =DMM''$--000MM("?C"H"HIIIMM("9";";<<<<



MM(7C@@AAAMdCJ'' 	<6666DI666;;;dCH%% 	)Jtw''((dCM** 	tz4,,0EEE224888 9'$*dB"?"?9"L"L224888WTZ((FMM(7C@@AAAMM''$*--...MM(7C@@AAA ay999"+F122Ja"@"@"@ C CJAw!'5:66 C$)M"b'$B$Bq	MdCK(( 	<747##ggdl&;&;;;dCI&& 	y 
B I = =DMM''$--000MM("?C"H"HIIIMM("9";";<<<<



"7C@@"7C@@B MrB   ast.Subscriptc                |   | j         }g }t          |t          j                  r|                     |j        d                              |j        dd          D ]O}|                     t          j                                         |                     |                     Pn|                     |                     t          | j        dd          dk    rV|                     t          j                                         |	                    t          j        d                     |S )Nr   rO   r   rd   r   rT   )r   r   r   r   r   r   r   r   r   r   r	   ro   )rw   	subscript	flattenedeltr   s       rC   r   z6_parse_annotation.<locals>._unparse_pep_604_annotation   s+   J	 "	i++ 	1WWY^A%677888 ~abb) / /  !5!5666  ..../
 WWY//0004:tR((J66WWSY[[11222UZ//000rB   T)type_commentsr   rQ   rP   r]   N)rw   rx   rK   ru   )rw   r   rK   ru   )rm   "python_display_short_literal_typesr   parser   r	   r   r   ro   stripr   r   astextr   rs   r6   r   )rt   r_   treer   rw   r   r   r   s        @@@rC   _parse_annotationr      s   ZBNO O O O O O O Ob     &/y4888GDMM 	$ 	$D$.. 
$d1g&&&&D%*-- $$**,, $ @z&*h6STT @r
))++s22JJLLLMM,s4yy#t"T"T"TUUUUMM,s4yy#">">????d#### / / /Z--..../s   EE; ;FFc                  B     e Zd Zd fdZddZddZdd
ZdddZ xZS )_TypeParameterListParsersigr6   rK   rT   c                    |                     dd                                          }t                                          |g           g | _        d S )N
rd   )replacer   super__init__type_params)selfr   	signature	__class__s      rC   r   z!_TypeParameterListParser.__init__	  sL    KKb))//11	)%%% =?rB   list[Token]c                   g }|                                  x}r|                    |           dD ]=\  }}|t          j        |gk    r&||                     t          j        |g          z  } n>|t          j        k    r#||                     t          j                  z  }nP|                    t          j        dgt          j        dgt          j        dg          r|                                 n|                                  x}|S )N))r   r   ){})r{   r}   :=r|   )	fetch_tokenr   tokenOPfetch_untilINDENTDEDENTmatchr   )r   tokenscurrentldelimrdelims        rC   fetch_type_param_specz._TypeParameterListParser.fetch_type_param_spec  s   ))+++g 	MM'""""D 
 
ux000d..&/ABBBFE 1 el**d..u|<<<FF]]3%(C58S/K K JJLLL ))+++g 	 rB   c                   |                                  x}r|t          j        k    r|j                                        }| j        rd| j                            t          j        dgt          j        dg          r1| j        t          j        dgk    rt          j	        }nt          j
        }nt          j        }t          j        }t          j        }|                                  }|r|                    t          j        dgt          j        dg          r|t          j        dgk    r)|                                 }|                     |          }| j        r@| j        t          j        dgk    r)|                                 }|                     |          }|t          j        k    r*|t          j        k    rd|j         d}t#          |          ||||f}| j                            |           |                                  x}d S d S )Nrh   **r   r   z6type parameter bound or constraint is not allowed for z parameters)r   r   NAMEr   r   previousr   r   r   VAR_POSITIONALVAR_KEYWORDPOSITIONAL_OR_KEYWORDemptyr   _build_identifierr   descriptionr   r   r   )	r   r   tp_nametp_kindtp_ann
tp_defaultr   msg
type_params	            rC   r   z_TypeParameterListParser.parse"  s   ))+++g 	4%*$$!---//= >T]%8%8%(C58UYJZ%[%[ >}377"+":"+"7'=G'o"+/
**,, Dw}}eh_uxoNN D58S/11!%!;!;!=!=!%!7!7!?!?| D3(G(G!%!;!;!=!=%)%;%;F%C%C
i===&IOB[B[C")"5C C CC%c***%w
FC
 ''
333= ))+++g 	4 	4 	4 	4 	4rB   r   c           
        ddl m}m fdfd}g }t          |          }|D ]}|                    t
          j        dgt
          j        dgt
          j        dg          s[|                    t
          j        dgt
          j        d	gg          }|                    |                     ||
                      n|                    |j	                   t          t
          j        dddd          }d} | ||||g                    D ]\  }}}	|                     ||
          }
|                    |
           |                    t
          j        dgt
          j        d	g          o|                    t
          j        t
          j        t
          j        t
          j        dgt
          j        dgt
          j        dg          o[|	                    t
          j        t
          j        t
          j        t
          j        dgt
          j        dgt
          j        dg           }d                    |                                          S )Nr   )chainteec                `     |           \  }}t          |d            t          ||          S r   )nextzip)iterableabr   s      rC   pairwisez<_TypeParameterListParser._build_identifier.<locals>.pairwiseF  s/    3x==DAqDMMMq!99rB   c              3  Z   K     |                     D ]\  \  }}\  }}|||fV  d S r   rA   )r   r   _zr   cr   s        rC   
triplewisez>_TypeParameterListParser._build_identifier.<locals>.triplewiseK  sQ      #+8HHX,>,>#?#?  B!QAg rB   r   r{   r   rh   r   )nativerd   )rQ   rQ   z
<sentinel>Fr   r}   r   )	itertoolsr   r   iterr   r   r   r   _pformat_tokenr   r   	ENDMARKERr   NUMBERSTRINGjoinr   )r   r   r   r   identstokis_unpack_operatorstopr   afteridentr   r   s              @@rC   r   z*_TypeParameterListParser._build_identifierC  s?   ((((((((	 	 	 	 	
	 	 	 	 	 "&v,, 	% 	%C99eh_uxo#OO %(YY#D6@R%S%S"d11#>P1QQRRRMM#)$$$$ U_b(HlKK"(jvd|)D)DEE 	 	NCU''4F'GGEMM%    %(C58T*:;; IIej%,$xo#3Q Q WEJel%*XsOeh_uxQToW WA  wwv$$&&&rB   Fr
  r   r  r:   c                d   |r|j         S |                    t          j        t          j                  rdS |                    t          j        dgt          j        dgt          j        dg          r
|j          dS |                    t          j        dgt          j        dgt          j        dgt          j        d	gt          j        d
gt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dgt          j        dg          rd|j          dS |j         S )Nrd   r   r|   # r   rz   &^<>+-rh   r   @/z//%z<<z>>z>>>z<=z>=z==z!=)r   r   r   NEWLINEr  r   )r   r
  r  s      rC   r  z'_TypeParameterListParser._pformat_tokenm  sU    	999U]EO44 	299eh_uxo#GG 	#i???" 99XsOeh_XsOeh_uxo#XsOeh_uxo$?OXsOeh_ux.>3Xtux.50AXtux.40@58TBR
 
 	$ $sy####yrB   )r   r6   rK   rT   )rK   r   rK   rT   )r   r   rK   r6   F)r
  r   r  r:   rK   r6   )	r=   r>   r?   r   r   r   r   r  __classcell__r   s   @rC   r   r     s        ? ? ? ? ? ?   "4 4 4 4B(' (' (' ('T! ! ! ! ! ! ! ! !rB   r   tp_listmulti_line_parameter_list!addnodes.desc_type_parameter_listc                   t          j        |           }||d<   t          |           }|                                 |j        D ]-\  }}}}|t
          j        t
          j        hv rd}	t          |	          t          j	                    }
|t
          j
        k    r|
t          j        dd          z  }
n(|t
          j        k    r|
t          j        dd          z  }
|
t          j        d|          z  }
|t
          j        urt          ||          }|s|
t          j        dd          z  }
|
t          j                    z  }
t          j        ddg|R  }|                    d          r|                    d          rz|                                }|                    d          r|                    d          r|
|z  }
n;|
t          j        dd          z  }
|
|z  }
|
t          j        dd          z  }
n|
|z  }
|t
          j        ur`|
t          j                    z  }
|
t          j        dd	          z  }
|
t          j                    z  }
|
t+          j        d|d
gd          z  }
||
z  }/|S )z5Parse a list of type parameters according to PEP 695.r!  zQpositional-only or keyword-only parameters are prohibited in type parameter listsrd   rh   r   r   r   r   r   default_valueFclassessupport_smartquotes)r   desc_type_parameter_listr   r   r   r   POSITIONAL_ONLYKEYWORD_ONLYr   desc_type_parameterr   desc_sig_operatorr   desc_sig_namer   r   r   r   rW   endswithr   r	   inline)r   r_   r!  r   parserr   r   r   r   r   rw   rt   type_ann_exprtype_ann_texts                 rC   _parse_type_listr3    s   
 3G<<K/HK+, &g..F
LLNNN282D / /.':vy0)2HIII<Cc"""+--i...H.r3777DD	---H.r4888D&r7333((*6377J H1"c:::DH+---D$22r @4>@ @ @M   %% 
&&//#*>*> 
& - 4 4 6 6 ++C00 C]5K5KC5P5P CM)DD H9"cBBBDM)DH9"cBBBDD%Y_,,H+---DH.r3777DH+---DELZ*9):5:< < < <D 	trB   arglistaddnodes.desc_parameterlistc           
        t          j        |           }||d<   t          d| z            }d}|j                                        D ]`}|j        |j        k    r7||j        k    r,|t          j        ddt          j        dd                    z  }|j        |j	        k    r=||j
        |j        dfv r,|t          j        ddt          j        dd                    z  }t          j                    }|j        |j        k    r6|t          j        dd          z  }|t          j        d|j                  z  }nc|j        |j        k    r6|t          j        dd          z  }|t          j        d|j                  z  }n|t          j        d|j                  z  }|j        |j        urYt#          |j        |          }|t          j        dd          z  }|t          j                    z  }|t          j        ddg|R  z  }|j        |j        ur|j        |j        urE|t          j                    z  }|t          j        dd	          z  }|t          j                    z  }n|t          j        dd	          z  }|t+          j        d|j        d
gd          z  }||z  }|j        }b|t.          j        k    r,|t          j        ddt          j        dd                    z  }|S )z*Parse a list of arguments using AST parserr!  z(%s)Nrd   r  rh   r   r   r   r$  Fr%  )r   desc_parameterlistr   
parametersvalueskindr)  desc_parameterr,  r*  r   r   r-  namer   rt   r   r   r   r   defaultr	   r/  r   )	r4  r_   r!  paramsr   	last_kindparamrw   childrens	            rC   _parse_arglistrB    s    (11F*CF&'
Vg-
.
.CI&&(( $ $:...9@U3U3Uh-b"h6PQSUX6Y6YZZZF:+++	e>Y>C>S>B>D 1D 1D h-b"h6PQSUX6Y6YZZZF&((:---H.r3777DH*2uz:::DDZ5,,,H.r4888DH*2uz:::DDH*2uz:::D5;..()93??HH1"c:::DH+---DH*2r=H====D=++u{22/11122s;;;/11122s;;;ELU]_<M5:< < < <D 	$J		I---()"b(2LRQT2U2UVVVMrB   signoder   rT   c                   t          j                    }||d<   |g}	 |                    d          D ]R}|                                }dx}}|                    d          rm|                    t          j                               |dxx         |d         z  cc<   |dd                                         }|                    d          m|                    d	          rE|                                 |dd                                         }|                    d	          E|                    d	          r`|                    d
          sK|dz  }|dd                                         }|                    d	          r|                    d
          K|                    d          r6|dz  }|dd                                         }|                    d          6|r7|dxx         t          j	        ddt          j
        ||                    z  cc<   |rC|                    t          j                               |dxx         |d         z  cc<   |dz  }|C|r|                                 |dz  }|Tt          |          dk    rt          	 | |z  } dS # t          $ r4 t          j                    }|t          j	        ||          z  }| |z  } Y dS w xY w)z"Parse" a list of arguments separated by commas.

    Arguments can have "optional" annotations given by enclosing them in
    brackets.  Currently, this will split at any comma, even if it's inside a
    string literal (e.g. default argument value).
    r!  r|   r   r{   rQ   rO   Nr}   z[]rd   )r   r7  rX   r   rW   r   desc_optionalr   r.  r;  r-  len
IndexError)rC  r4  r!  	paramliststackargument	ends_open
ends_closes           rC   _pseudo_parse_arglistrN    s?    +--I-FI)*%;E%c** 	  	 H~~''H%&&I
%%c** 0X355666b			U2Y&			#ABB<--// %%c** 0 %%c** 0		#ABB<--// %%c** 0 ##C(( 11B1B41H1H 1a
#CRC=..00 ##C(( 11B1B41H1H 1 ##C(( 1Q	#CRC=..00 ##C(( 1  Hb			X4H28XFFH H H			 X355666b			U2Y&			Q	     		a
    u::??  	9     /11	X,Wg>>>	9s   JJ( (:K&%K&c                  T     e Zd Zej        ddddfd fdZej        ddddfddZ xZS )PyXrefMixinNrolenamer6   domainr^   	innernodetype[TextlikeNode]contnodeNode | Noner_   BuildEnvironment | NoneinlinerInliner | NonelocationrK   r&   c	           
        t                                          ||||||d d           }	t          |	t                    r|J d|	d<   |j                            d          |	d<   |j                            d          |	d<   t          |          \  }
}}}||k    r.|
|	d<   ||	d<   |	                                 |	 |||          z  }	n|j        j	        r{|	j
        }|	                                 |                    d          d	         } |d
|          }t          d
d
|d          t          d
d
g|R ddig}|	                    |           |	S )N)rX  rZ  TrY   rb   rc   r[   rI   rN   rQ   rd   re   rf   rg   rh   )r   	make_xrefr   r   rk   rl   r\   clearrm   rn   rA  rX   r   r   )r   rQ  rR  r^   rS  rU  r_   rX  rZ  r   r[   rI   reftitler   rA  rq   textnoderr   r   s                     rC   r\  zPyXrefMixin.make_xref;  s    ""8VV#,h#&t # E E fl++ 	)???$(F=!"%/"5"5k"B"BF;!$!4!4Z!@!@F:.=f.E.E+GY!H$$$+y!&/{#))Hh777= )!?"LL--b1	$9R333BHPZ[[[3BUXUUUQTUUW	i(((rB   ru   c	                   d}	t          j        |	          }
t          j        |	|          }t          |o|                                |k              }d}g }t          d |          D ]}|rt          j        |          }|s|
                    |          r"|	                    |p |||                     n/|	                    | 
                    ||||||||                     |dv rd}|S )Nz>(\s*[\[\]\(\),](?:\s*o[rf]\s)?\s*|\s+o[rf]\s+|\s*\|\s*|\.\.\.)F)r   r   z~typing.LiteralT)recompilerX   r:   r   filterr	   ro   r   r   r\  )r   rQ  rR  r^   rS  rU  r_   rX  rZ  delims	delims_resub_targetssplit_contnode
in_literalresults
sub_targets                   rC   
make_xrefszPyXrefMixin.make_xrefsd  s    SJv&&	hvv..hF8??+<+<+FGG
 {33 	" 	"J 2 :j11 \Y__Z88 \xL99Z+L+LMMMMt~~h
.73QY [  [ \ \ \ MMM!
rB   )rQ  r6   rR  r6   r^   r6   rS  rT  rU  rV  r_   rW  rX  rY  rZ  rV  rK   r&   )rQ  r6   rR  r6   r^   r6   rS  rT  rU  rV  r_   rW  rX  rY  rZ  rV  rK   ru   )r=   r>   r?   r	   emphasisr\  rk  r  r  s   @rC   rP  rP  :  s         ). $'+"& $' ' ' ' ' ' '\ ). $'+"& $                 rB   rP  c                      e Zd ZdS )PyFieldNr=   r>   r?   rA   rB   rC   rn  rn            DrB   rn  c                      e Zd ZdS )PyGroupedFieldNro  rA   rB   rC   rr  rr    rp  rB   rr  c                      e Zd ZdS )PyTypedFieldNro  rA   rB   rC   rt  rt    rp  rB   rt  c                     e Zd ZU dZej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        dZded<    e	d e
d          ddd	d
           e	d e
d          dddd
           ed e
d          ddd
           ed e
d          dd           ed e
d          ddd          gZdZd6d"Zd7d$Zd8d(Zd9d+Zd:d.Zd;d1Zd<d2Zd<d3Zd=d4Zd5S )>PyObjectz
    Description of a general Python object.

    :cvar allow_nesting: Class is an object that allows for nested namespaces
    :vartype allow_nesting: bool
    )no-indexno-index-entryno-contents-entryno-typesettingnoindexnoindexentrynocontentsentrysingle-line-parameter-listsingle-line-type-parameter-listr-   	canonicalrt   r+   option_spec	parameter
Parameters)r@  r  argrK  r.   kwargkwparamrV   )	paramtypetypeT)labelnamestyperolename	typenamescan_collapsevariable	Variables)varivarcvar)vartype
exceptionsRaisesexc)raisesraiser1   except)r  rQ  r  r  returnvalueReturnsF)returnsrK   )r  has_argr  
returntypezReturn type)rtype)r  r  r  bodyrolenamer   r6   rK   list[nodes.Node]c                    g S )zTMay return a prefix to put before the object name in the
        signature.
        rA   r   r   s     rC   get_signature_prefixzPyObject.get_signature_prefix  s	     	rB   r:   c                    dS )zqMay return true if an empty argument list is to be generated even if
        the document contains none.
        FrA   r   s    rC   needs_arglistzPyObject.needs_arglist  s	     urB   rC  r   tuple[str, str]c           	     |   t                               |          }|t          |                                \  }}}}}| j                            d| j        j                            d                    }	| j        j                            d          }
|
rid}|rN||
k    s|                    |
dz             r0||z   }|t          |
          d         
                    d          }n:|r|
dz   |z   |z   }n,|
dz   |z   }n#d}|r|                    d          }
||z   }nd}
|}|	|d<   |
|d	<   ||d
<   | j        j        j        p| j        j        j        pd}t          |          }|                    d          }d| j        vo!||d         |d         z
  z
  |cxk    odk    nc }|                    d          }d| j        vo!||d         |d         z
  z
  |cxk    odk    nc }|                     |          }|rNt#          |          t$          u rd| d}t'          |          |t)          j        t%          |          dg|R  z  }|r|t)          j        ||          z  }n2|	r0|r.| j        j        j        r|	dz   }|t)          j        ||          z  }|t)          j        ||          z  }|rP	 |t3          || j        |          z  }n5# t4          $ r(}t6                              d|||           Y d}~nd}~ww xY w|r	 |t;          || j        |          z  }n# t<          $ r t?          |||           Y nvt@          t          f$ r9}t6                              d|||           t?          |||           Y d}~n2d}~ww xY w| !                                r|t)          j"                    z  }|r+tG          || j                  }|t)          j$        |dg|R  z  }| j                            d          }|r@|t)          j        d|z   dt)          j%                    tM          j'        |                    z  }||fS )aJ  Transform a Python signature into RST nodes.

        Return (fully qualified name of the thing, classname if any).

        If inside a class, the current class name is handled intelligently:
        * it is stripped from the displayed name if present
        * it is added to the full name (return value) if not present
        Nr-   rb   rc   FrN   Trd   rV   fullnamer      r~  rO      r  z^Python directive method get_signature_prefix() must return a list of nodes. Return value was 'z'.z could not parse tp_list (%r): %srZ  z could not parse arglist (%r): %srt   r  )(	py_sig_rer   
ValueErrorgroupsoptionsrl   r_   rk   rW   rG  lstriprstriprm   $python_maximum_signature_line_lengthmaximum_signature_line_lengthspanr  r  r6   	TypeErrorr   desc_annotationdesc_addnameadd_module_names	desc_namer3  	ExceptionloggerwarningrB  r   rN  NotImplementedErrorr  r7  r   desc_returnsr   r	   ro   )r   r   rC  mprefixr<  r   r4  retannmodname	classname
add_moduler  max_lensig_lentp_list_spanr!  arglist_spanmulti_line_type_parameter_list
sig_prefixr   nodetextr  rA  annos                            rC   handle_signaturezPyObject.handle_signature  sS    OOC  912.gw ,""8TX-A-E-Ek-R-RSSH(,,Z88	 	 J 26Y..!,,Y_== /!D=I077<< 2 %s?V3d: %s?T1J  "MM#..	!D=	#$&
8?G hoC 	 c((vvayy(< NLOl1o=>'MMMMAMMMM 	" vvayy-T\A NLOl1o=>'MMMMAMMMM 	'
 ..s33
 	RJ3&&<-7< < <  nn$x/JQjQQQQG 	Ax,VV<<<GG 	A 	A(H 	A}Hx,Xx@@@G8%dD111 	11+GTX?]^^^ 1 1 1A7C(/  1 1 1 1 1 1 1 11  	9S>'48=VWWW S S S
 &gw8QRRRRR'4 S S SA7C(/  1 1 1%gw8QRRRRRRRR	S !!## 986888 	D(::Hx,VRC(CCCCG|-- 	Bx/d
B080G0I0I05
40@0@B B BG s6   2K 
K>K99K>L N;N/M??Nsig_nodetuple[str, ...]c                    d|vrdS |                     d          }|d         }|r|g|                    d          R S t          |                    d                    S )Nr  rA   r-   rN   )rl   rX   tuple)r   r  r  r  s       rC   _object_hierarchy_partsz PyObject._object_hierarchy_partsB  sl    X%%2,,x((J' 	.2hnnS11222,,---rB   r  r<  c                $    d}t          |          )z2Return the text for the index entry of the object.z!must be implemented in subclasses)r  )r   r  r<  r   s       rC   get_index_textzPyObject.get_index_textM  s    1!#&&&rB   name_clsrT   c                   | j                             d| j        j                            d                    }|r|dz   nd|d         z   }t	          | j        | j        j        d|          }|d                             |           | j        j                            |           t          t          | j                            d                    }|                    || j        ||           | j                             d	          }|r|                    || j        |d
|           d| j         vr?|                     ||          }	|	r)| j        d                             d|	|dd f           d S d S d S )Nr-   rb   rN   rd   r   idsri   r  r  T)r;   rZ  rx  entriessingle)r  rl   r_   rk   r    statedocumentr   note_explicit_targetr   PythonDomain
get_domainnote_objectr9   r  	indexnode)
r   r  r   rC  r  r  r8   rR  canonical_name	indextexts
             rC   add_target_and_indexzPyObject.add_target_and_indexR  s   ,""8TX-A-E-Ek-R-RSS%,4GcMM"C$(DJ$7XFFg&&&
00999lDH$7$7$=$=>>8T\7WMMM))+66 	1~t|Wd(/  1 1 1 4<//++GX>>I [y)00(IwPRTX1YZZZZZ 0/[ [rB   c                   d}| j         r1| j         d         \  }}| j        r|}n|r|                    d          }|rK|| j        j        d<   | j        r5| j        j                            dg           }|                    |           d| j        v rn| j        j                            dg           }|                    | j        j                            d                     | j        d         | j        j        d<   dS dS )	a  Handle object nesting before content

        :py:class:`PyObject` represents Python language constructs. For
        constructs that are nestable, such as a Python classes, this method will
        build up a stack of the nesting hierarchy so that it can be later
        de-nested correctly, in :py:meth:`after_content`.

        For constructs that aren't nestable, the stack is bypassed, and instead
        only the most recent object is tracked. This object prefix name will be
        removed with :py:meth:`after_content`.
        NrQ   rN   rc   
py:classesr-   
py:modulesrb   )	r  allow_nestingr   r_   rk   
setdefaultr   r  rl   )r   r  r  name_prefixr&  moduless         rC   before_contentzPyObject.before_contentg  s    : 		0
 '+jn#X{! 0! 0$**3// 	'/5DH ,! '(.99,KKv&&&t|##h*55lBGGGNN48/33K@@AAA04X0FDH --- $#rB   c                   | j         j                            dg           }| j        rEt	          j        t                    5  |                                 ddd           n# 1 swxY w Y   t          |          dk    r|d         nd| j         j        d<   d| j	        v rf| j         j                            dg           }|r#|                                | j         j        d<   dS | j         j                            d           dS dS )	a^  Handle object de-nesting after content

        If this class is a nestable object, removing the last nested class prefix
        ends further nesting in the object.

        If this class is not a nestable object, the list of classes should not
        be altered as we didn't affect the nesting levels in
        :py:meth:`before_content`.
        r  Nr   rQ   rc   r-   r  rb   )
r_   rk   r  r  
contextlibsuppressrH  r   rG  r  )r   r&  r  s      rC   after_contentzPyObject.after_content  s<    (&11,CC 	$Z00                 <?w<<!;K;KGBKK15 	Z(t|##h*55lBGGG 64;KKMM$[111$((55555 $#s   A""A&)A&c                v   |                     d          sdS | j        j        j        }|j                             d          }|j        r|dv rd}nd}|d         ^ }}|j        dk    r|                     d|          |z   S |j        dk    r||z   S |j        d	k    rd
                    |||z   gz             S dS )N
_toc_partsrd   r9   >   methodfunction()rR  r  hideallrN   )rl   r_   apprm   parentadd_function_parenthesestoc_object_entries_show_parentsr  )r   r  rm   r9   parensparentsr<  s          rC   _toc_entry_namezPyObject._toc_entry_name  s    ||L)) 	2$/%%i00* 	w:P/P/PFFF!,/$1X==<<
D11F::1V;;&= 1U::88Gtf}o5666rrB   Nr   r6   rK   r  rK   r:   r   r6   rC  r   rK   r  )r  r   rK   r  )r  r6   r<  r  rK   r6   r  r  r   r6   rC  r   rK   rT   r  )r  r   rK   r6   )r=   r>   r?   __doc__r
   flag	unchangedr  r@   rt  r   rr  r   rn  doc_field_typesr  r  r  r  r  r  r  r  r  r  rA   rB   rC   rv  rv    s(          O$/'_$/?"%?&0o+5?&) * K      	[,;")5J"&		( 	( 	(
 	Zqq~~2")\"&	( 	( 	( 	|11X;;G$(	* 	* 	* 	m11Y<<)	+ 	+ 	+AAm$4$4e w	8 	8 	8O& M      v  v  v  v p	. 	. 	. 	.' ' ' '
[ [ [ [*G G G GB6 6 6 60     rB   rv  c                       e Zd ZU dZej                                        Zded<   e                    de	j
        i           dd	ZddZd fdZddZ xZS )
PyFunctionzDescription of a function.r+   r  asyncr   r6   rK   r  c                h    d| j         v r(t          j        dd          t          j                    gS g S )Nr
  rd   )r  r   r   r   r  s     rC   r  zPyFunction.get_signature_prefix  s<    dl""-b'::+--/ / IrB   r:   c                    dS NTrA   r  s    rC   r  zPyFunction.needs_arglist      trB   r  r  rC  r   rT   c                   t                                          |||           d| j        vr| j                            d| j        j                            d                    }|d         d         }|\  }}|r;t          d          ||fz  }| j        d                             d||d	d f           d S d
| d}| j        d                             d||d	d f           d S d S )Nrx  r-   rb   r  r   %s() (in module %s)r  r  rd   zbuilt-in function; r  pair)	r   r  r  rl   r_   rk   r   r  r   )
r   r  r   rC  r  r8   r<  clstextr   s
            rC   r  zPyFunction.add_target_and_index  s    $$XsG<<<4<//l&&x1E1I1I+1V1VWWGenQ'G ID# T.//4/Ay)00(D'2t1TUUUUU5T555y)00&$T1RSSSSS 0/rB   r  c                    dS )Nrd   rA   r   r  r  s      rC   r  zPyFunction.get_index_text  s    rrB   r   r  r  r  r6   r  r  rK   r6   )r=   r>   r?   r  rv  r  copyr@   updater
   r  r  r  r  r  r  r  s   @rC   r	  r	    s         $$&27799K9999         T T T T T T       rB   r	  c                  8     e Zd ZdZd fdZd fd
ZddZ xZS )PyDecoratorFunctionzDescription of a decorator.rK   ru   c                R    d| _         t                                                      S )Nzpy:functionr<  r   runr   r   s    rC   r  zPyDecoratorFunction.run  s    !	ww{{}}rB   r   r6   rC  r   r  c                    t                                          ||          }|                    dt          j        dd                     |S Nr   r  r   r  insertr   r  r   r   rC  retr   s       rC   r  z$PyDecoratorFunction.handle_signature  B    gg&&sG44q(/S99:::
rB   r:   c                    dS NFrA   r  s    rC   r  z!PyDecoratorFunction.needs_arglist      urB   rK   ru   r  r  r=   r>   r?   r  r  r  r  r  r  s   @rC   r  r    su        %%     
     
       rB   r  c                       e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        d           d fdZddZ xZS )
PyVariablezDescription of a variable.r+   r  r  r   r   r6   rC  r   rK   r  c                .   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }| j                            d          }|rc|t          j        |dt          j	                    t          j        dd          t          j	                    t          j        |                    z  }||fS Nr  rd   r   r   r   r   r  r  rl   r   r_   r   r  r   r   r	   ro   	r   r   rC  r  r  typr   r   r   s	           rC   r  zPyVariable.handle_signature  s    7733CAA&lv&& 	Y+C::Kx/R080MbRU0V0V080G0I0IYLWY Y Y YG   )) 	Cx/r080G0I0I080MbRU0V0V080G0I0I05
50A0A	C C CG rB   r  r  c                \    |\  }}|rt          d          ||fz  S t          d          |z  S )N%s (in module %s)z%s (built-in variable))r   )r   r  r  r<  r  s        rC   r  zPyVariable.get_index_text  s?    	c 	6())T7O;;-..55rB   r  r  r=   r>   r?   r  rv  r  r  r@   r  r
   r  r  r  r  r  s   @rC   r,  r,    s         $$&27799K9999$%    
           (6 6 6 6 6 6 6 6rB   r,  c                      e Zd ZU dZej                                        Zded<   e                    de	j
        i           dZdd
ZddZdS )PyClasslikezO
    Description of a class-like object (classes, interfaces, exceptions).
    r+   r  finalTr   r6   rK   r  c                   d| j         v rQt          j        d          t          j                    t          j        | j                  t          j                    gS t          j        | j                  t          j                    gS )Nr8  )r  r	   ro   r   r   r9   r  s     rC   r  z PyClasslike.get_signature_prefix  so    dl""Jw'')@)B)BJt|,,h.E.G.GI I Jt|,,h.E.G.GHHrB   r  r  r  c                    | j         dk    r4|st          d          |d         z  S t          d          |d         |fz  S | j         dk    r|d         S dS )NrV   z%s (built-in class)r   z%s (class in %s)r1   rd   )r9   r   r  s      rC   r  zPyClasslike.get_index_text#  sh    <7"" >.//(1+=='((HQK+AAA\[((A;2rB   Nr   r  )r=   r>   r?   r  rv  r  r  r@   r  r
   r  r  r  r  rA   rB   rC   r7  r7    s           '27799K9999    MI I I I     rB   r7  c                      e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        e	j
        e	j
        e	j
        d           ddZddZddZdS )PyMethodzDescription of a method.r+   r  )abstractmethodr
  classmethodr8  staticmethodrK   r:   c                    dS r  rA   r  s    rC   r  zPyMethod.needs_arglist:  r  rB   r   r6   r  c                f   g }d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               |S )Nr8  r=  abstractr
  r>  r?  staticr  r   r	   ro   r   r   r   r   r  s      rC   r  zPyMethod.get_signature_prefix=  s`   #%dl""MM%*W--...MM(133444t|++MM%*Z00111MM(133444dl""MM%*W--...MM(133444DL((MM%*]33444MM(133444T\))MM%*X..///MM(133444rB   r  r  r  c                   |\  }}	 |                     dd          \  }}|r(| j        j        j        rd                    ||g          }n-# t
          $ r  |rt          d          ||fz  cY S d|z  cY S w xY wd| j        v rt          d          ||fz  S d| j        v rt          d          ||fz  S t          d	          ||fz  S )
NrN   rO   r  z%s()r>  z%s() (%s class method)r?  z%s() (%s static method)z%s() (%s method))rsplitr_   rm   r  r  r  r   r  )r   r  r  r<  r  clsnamemethnames          rC   r  zPyMethod.get_index_textP  s   	c	% $C 3 3GX 748?; 7((GW#566 	% 	% 	% %.//4/AAAA}$$$		% DL((-..(G1DDDt|++.//8W2EEE'((Hg+>>>s   AA  A5-A54A5Nr  r   r  )r=   r>   r?   r  rv  r  r  r@   r  r
   r  r  r  r  rA   rB   rC   r<  r<  .  s         ""&27799K9999$/!"          &? ? ? ? ? ?rB   r<  c                  b     e Zd ZU dZej                                        Zded<   d fdZ xZ	S )PyClassMethodzDescription of a classmethod.r+   r  rK   ru   c                f    d| _         d| j        d<   t                                                      S )N	py:methodTr>  r<  r  r   r  r  s    rC   r  zPyClassMethod.runi  s(    	&*]#ww{{}}rB   r)  
r=   r>   r?   r  rv  r  r  r@   r  r  r  s   @rC   rK  rK  d  se         ''&27799K9999         rB   rK  c                  b     e Zd ZU dZej                                        Zded<   d fdZ xZ	S )PyStaticMethodzDescription of a staticmethod.r+   r  rK   ru   c                f    d| _         d| j        d<   t                                                      S )NrM  Tr?  rN  r  s    rC   r  zPyStaticMethod.runu  s(    	'+^$ww{{}}rB   r)  rO  r  s   @rC   rQ  rQ  p  se         ((&27799K9999         rB   rQ  c                  8     e Zd ZdZd fdZd fd
ZddZ xZS )PyDecoratorMethodz!Description of a decoratormethod.rK   ru   c                R    d| _         t                                                      S )NrM  r  r  s    rC   r  zPyDecoratorMethod.run  s    	ww{{}}rB   r   r6   rC  r   r  c                    t                                          ||          }|                    dt          j        dd                     |S r   r!  r#  s       rC   r  z"PyDecoratorMethod.handle_signature  r%  rB   r:   c                    dS r'  rA   r  s    rC   r  zPyDecoratorMethod.needs_arglist  r(  rB   r)  r  r  r*  r  s   @rC   rT  rT  |  su        ++          
       rB   rT  c                       e Zd ZU dZej                                        Zded<   e                    e	j
        e	j
        d           d fdZddZ xZS )PyAttributeDescription of an attribute.r+   r  r-  r   r6   rC  r   rK   r  c                .   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }| j                            d          }|rc|t          j        |dt          j	                    t          j        dd          t          j	                    t          j        |                    z  }||fS r/  r0  r1  s	           rC   r  zPyAttribute.handle_signature  s    7733CAA&lv&& 	>+C::Kx/R080MbRU0V0V080G0I0I> 2=> > > >G
   )) 	Cx/r080G0I0I080MbRU0V0V080G0I0I05
50A0A	C C CG rB   r  r  c                   |\  }}	 |                     dd          \  }}|r(| j        j        j        rd                    ||g          }n*# t
          $ r |rt          d          ||fz  cY S |cY S w xY wt          d          ||fz  S )NrN   rO   r4  z%s (%s attribute)rG  r_   rm   r  r  r  r   r   r  r  r<  r  rH  attrnames          rC   r  zPyAttribute.get_index_text  s    	c	 $C 3 3GX 748?; 7((GW#566 	 	 	 ,--w????		 $%%7(;;;   AA  A2-A21A2r  r  r5  r  s   @rC   rY  rY    s         &&&27799K9999$%    
           *< < < < < < < <rB   rY  c                       e Zd ZdZej                                        Ze                    ej	        ej	        ej
        d           d fd	ZddZddZ xZS )
PyPropertyrZ  )r=  r>  r  r   r6   rC  r   rK   r  c           	     0   t                                          ||          \  }}| j                            d          }|rQt	          || j                  }|t          j        |dt          j        dd          t          j	                    g|R  z  }||fS )Nr  rd   r   )
r   r  r  rl   r   r_   r   r  r   r   )r   r   rC  r  r  r2  r   r   s          rC   r  zPyProperty.handle_signature  s     7733CAA&lv&& 	>+C::Kx/R080MbRU0V0V080G0I0I> 2=> > > >G
 rB   r  c                   g }d| j         v rM|                    t          j        d                     |                    t	          j                               d| j         v rM|                    t          j        d                     |                    t	          j                               |                    t          j        d                     |                    t	          j                               |S )Nr=  rB  r>  rV   propertyrD  rE  s      rC   r  zPyProperty.get_signature_prefix  s    #%t|++MM%*Z00111MM(133444DL((MM%*W--...MM(133444ej,,---h-//000rB   r  r  c                   |\  }}	 |                     dd          \  }}|r(| j        j        j        rd                    ||g          }n*# t
          $ r |rt          d          ||fz  cY S |cY S w xY wt          d          ||fz  S )NrN   rO   r4  z%s (%s property)r]  r^  s          rC   r  zPyProperty.get_index_text  s    	c	 $C 3 3GX 748?; 7((GW#566 	 	 	 ,--w????		 #$$'':::r`  r  r   r  )r=   r>   r?   r  rv  r  r  r  r
   r  r  r  r  r  r  r  s   @rC   rb  rb    s        &&&++--K$/!$                  ; ; ; ; ; ; ; ;rB   rb  c            	          e Zd ZU dZdZdZdZdZd d ej	        ej	        ej	        ej	        ej	        ej	        dZ
d	ed
<   ddZdS )PyModulez8
    Directive to mark description of a new module.
    TrO   r   Fc                    | S r   rA   xs    rC   <lambda>zPyModule.<lambda>      a rB   c                    | S r   rA   rj  s    rC   rl  zPyModule.<lambda>  rm  rB   )rG   rF   rw  ry  rz  r{  r}  rH   r+   r  rK   ru   c           	        t          t          | j                            d                    }| j        d                                         }d| j        v pd| j        v }|| j        j        d<   t          j	                    }| j
        j        |_        t          | j
        | j        || j                   g }|s#t          | j        | j
        j        d|          }t          j        dd|gd	          }|                     |           | j
        j                            |           |                    ||| j                            d
d          | j                            dd          d| j        v            |                    |d||           d| }t-          j        d||dd fg          }	|                    |	           |                    |           |                    |j                   |S )Nri   r   rw  r{  rb   r-   rd   T)r  ismodrF   rG   rH   r  zmodule; r  )r  )r   r  r_   r  	argumentsr   r  rk   r	   sectionr  r  r"   contentcontent_offsetr    r^   set_source_infor  note_modulerl   r  r   indexr   r   rA  )
r   rR  r  no_indexcontent_noder$  r8   r^   r  inodes
             rC   r  zPyModule.run   s   lDH$7$7$=$=>>.#))++-Jdl1J,3[) % $
 3 T\<I\]]] 	dh
(;XwOOG\"bwitDDDF  (((J44V<<<w&#|//
B??#|//
B??+t|;	= = =
 w'FKKK -7,,INVYT,R+STTTEJJuJJv

<()))
rB   Nr)  )r=   r>   r?   r  has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer
   r  r  r@   r  rA   rB   rC   rh  rh    s           K %KKO'_$/?%? o	 	K 	 	 	 	# # # # # #rB   rh  c                  :    e Zd ZU dZdZdZdZdZi Zde	d<   dd	Z
d
S )PyCurrentModulez
    This directive is just to tell Sphinx that we're documenting
    stuff in module foo, but links to module foo won't lead here.
    FrO   r   r+   r  rK   ru   c                    | j         d                                         }|dk    r!| j        j                            dd            n|| j        j        d<   g S )Nr   rT   rb   )rq  r   r_   rk   r   )r   r  s     rC   r  zPyCurrentModule.run2  sW    .#))++fH $$[$777707DH -	rB   Nr)  )r=   r>   r?   r  r{  r|  r}  r~  r  r@   r  rA   rB   rC   r  r  &  s^          
 K % K         rB   r  c                      e Zd ZddZdS )
PyXRefRoler_   r*   refnoder%   has_explicit_titler:   rZ   r6   r^   rK   r  c                   |j                             d          |d<   |j                             d          |d<   |sj|                    d          }|                    d          }|dd         dk    r2|dd          }|                    d          }|dk    r||dz   d          }|dd         dk    r|dd          }d|d	<   ||fS )
Nrb   rc   rN   rP   r   rO   rQ   TrY   )rk   rl   r  rfind)r   r_   r  r  rZ   r^   dots          rC   process_linkzPyXRefRole.process_link<  s    "22;??!o11*==
! 		,LL%%E]]3''F QqSzS  abb	kk#&&"99!#'((OE !A#;#ABBZF%)GM"f}rB   N)r_   r*   r  r%   r  r:   rZ   r6   r^   r6   rK   r  )r=   r>   r?   r  rA   rB   rC   r  r  ;  s(             rB   r  r  r(   rR  r9   rs  r%   c                   |dk    rdS |D ]}t          |t          j                  rt          t          t          j                 |          }t          |          D ]v}t          t          j        |d                                                   	                                }|dk    s|
                    d          r|                    |           wdS )z+Filter ``:meta:`` field from its docstring.ri   Nr   metazmeta )r   r	   
field_listr   listfieldreversed
field_bodyr   r   rW   remove)r  rR  r9   rs  rw   fieldsr  
field_names           rC   filter_meta_fieldsr  R  s    ~~ ' 'dE,-- 	'$u{+T22F!&)) ' '!%"2E!H==DDFFLLNN
'':+@+@+I+I'KK&&&' 'rB   c                  L    e Zd ZdZdZ ed          Z ed          Zddd
ZdS )PythonModuleIndexz<
    Index subclass to provide the Python module index.
    modindexzPython Module Indexr  NdocnamesIterable[str] | NonerK   /tuple[list[tuple[str, list[IndexEntry]]], bool]c                <   i }| j         j        j        d         }t          |t          d          }t          | j         j        d                                         d           }d}d}|D ]v\  }\  }}	}
}}|r||vr|D ]2}|                    |          r|t	          |          d          }|} n3d}|s|d}}|                    |d         	                                g           }|
                    d	          d         }||k    r||k    rG|rD|d
         }t          |d         d|d         |d         |d         |d         |d                   |d
<   n@|                    |          s+|                    t          ||z   dddddd                     d}n|dz  }d}|rt          d          nd}|                    t          ||z   |||	|||
                     |}xt	          |          |z
  |k     }t          |                                          }||fS )Nmodindex_common_prefixT)keyreverser  c                6    | d                                          S )Nr   )lowerrj  s    rC   rl  z,PythonModuleIndex.generate.<locals>.<lambda>r  s    qtzz|| rB   )r  rd   r   rN   rQ   rO      r  r        
Deprecated)rR  r_   rm   sortedrG  dataitemsrW   r  r  rX   r   r   r   )r   r  rs  ignoresr  prev_modnamenum_toplevelsr  r7   r8   rF   	platformsrH   ignorestrippedr  packagelastsubtype	qualifiercollapsesorted_contents                         rC   generatezPythonModuleIndex.generatej  s   /1![_34LMc4888))4::<<335 5 5 LS &	# &	#HGHgw)Z G833!  %%f-- %c&kkll3G%HE
   1$,b(()9)9););R@@GmmC((+G'!!7** L&r{&0a!T!Wd1g15a$q'47'L 'L%0099 ZNN:h.@!RRQSUW#X#XYYY"+5=,2INN:h&8'7&-y)XO O P P P"LL
 w<<-/-?  00x''rB   r   )r  r  rK   r  )	r=   r>   r?   r  r<  r   	localnamerq   r  rA   rB   rC   r  r  a  s[          D'((I)I<( <( <( <( <( <( <(rB   r  c                  H   e Zd ZU dZdZdZ e ed          dd           e ed          dd           e ed          dd	d           e ed
          d	dd           e ed          dd           e ed          dd           e ed          dd           e ed          dd           e ed          ddd           e ed          dd          d
Zde	d<   e
eeeeeeeeeeeedZ e             e             ed           e             e             e             ed           e             e            d	Zi i dZde	d<   egZedWd!            Z	 dXdYd-ZedZd/            Zd[d3Z d\d5Z!d]d:Z"	 d^d_dEZ#d`dOZ$dadQZ%dbdSZ&dcdUZ'dddVZ(d#S )er  zPython language domain.ri   Pythonr  funcrU   r  rV   r  r1   r  methzclass methodzstatic method	attributer   re  _propr-   mod)
r  r  rV   r1   r  r>  r?  r  re  r-   zdict[str, ObjType]object_types)r  r  rV   r1   r  r>  r?  r  re  r-   currentmodule	decoratordecoratormethodT)
fix_parens)	r  r  r  rV   constr   r  r  rU   )objectsr  z dict[str, dict[str, tuple[Any]]]initial_datarK   dict[str, ObjectEntry]c                8    | j                             di           S )Nr  r  r  r  s    rC   r  zPythonDomain.objects      y##Ir222rB   FNr<  r6   r9   r8   r;   r:   rZ  r   rT   c                   || j         v rV| j         |         }|j        r|du rn=|j        du r|rdS t                              t	          d          ||j        |           t          | j        j        |||          | j         |<   dS )zQNote a python object for cross reference.

        .. versionadded:: 2.1
        FNzXduplicate object description of %s, other instance in %s, use :no-index: for one of themr  )r  r;   r  r  r   r7   r5   r_   )r   r<  r9   r8   r;   rZ  others          rC   r  zPythonDomain.note_object  s     4<L&E} 
GE!1!1%''G' r #Y  Z  Z#U]X  G G G ))97GWUUTrB   dict[str, ModuleEntry]c                8    | j                             di           S )Nr  r  r  s    rC   r  zPythonDomain.modules  r  rB   rF   rG   rH   c                P    t          | j        j        ||||          | j        |<   dS )zQNote a python module for cross reference.

        .. versionadded:: 2.1
        N)rE   r_   r7   r  )r   r<  r8   rF   rG   rH   s         rC   rv  zPythonDomain.note_module  s2     ))97)18ZI ITrB   r7   c                   t          | j                                                  D ]\  }}|j        |k    r| j        |= t          | j                                                  D ]\  }}|j        |k    r| j        |= d S r   )r  r  r  r7   r  )r   r7   r  rU   r  r  s         rC   	clear_doczPythonDomain.clear_doc  s    !$,"4"4"6"677 	+ 	+MHc{g%%L* !3!3!5!566 	* 	*LGS{g%%L)	* 	*rB   r  	list[str]	otherdatadict[str, Any]c                    |d                                          D ]\  }}|j        |v r
|| j        |<   |d                                          D ]\  }}|j        |v r
|| j        |<   d S )Nr  r  )r  r7   r  r  )r   r  r  r  rU   r  r  s          rC   merge_domaindatazPythonDomain.merge_domaindata
  s    &y17799 	- 	-MHc{h&&),X&%i06688 	, 	,LGS{h&&(+W%	, 	,rB   r   r_   r*   r  r  r  
str | None
searchmoder   list[tuple[str, ObjectEntry]]c                   
 |dd         dk    r
|dd         }|sg S g }d}|dk    r|t           j                  
n                     |          

|r/|r-|dz   |z   dz   |z   }	|	 j        v r j        |	         j        
v r|	}|sn|r2|dz   |z    j        v r# j        |dz   |z            j        
v r	|dz   |z   }n| j        v r j        |         j        
v r|}nd|z   
 fd j        D             }no| j        v r|}nc|dk    rg S |r|dz   |z    j        v r	|dz   |z   }nA|r|dz   |z    j        v r	|dz   |z   }n'|r%|r#|dz   |z   dz   |z    j        v r|dz   |z   dz   |z   }|"|                    | j        |         f           |S )zFind a Python object for "name", perhaps using the given module
        and/or classname.  Returns a list of (name, object entry) tuples.
        rE  Nr  rO   rN   c                    g | ]:}|                               r#j        |         j        v +|j        |         f;S rA   )r.  r  r9   )r   onameobjtypes
searchnamer   s     rC   
<listcomp>z)PythonDomain.find_obj.<locals>.<listcomp>6  s[     #L #L #LE&+nnZ&@&@#L#'<#6#>(#J#J %*4<+>#?#J#J#JrB   r  )r  r  objtypes_for_roler  r9   r   )r   r_   r  r  r<  r  r  matchesnewnamer  r  r  s   `         @@rC   find_objzPythonDomain.find_obj  s}    99D 	I13??|-1$2C-D-D11$77# +y +&}y83>EH4<//DL4J4RV^4^4^"* L 
L7S=4#74<#G#G|GcMD$89AXMM")C-$"6--$,t2D2LPX2X2X"& &)4Z
#L #L #L #L #L #LT\ #L #L #L
 t|##	 Ay35EE#c/D0 AWs]T1T\AA!C-$. AY AcMI-3d:dlJJ!C-)3c9D@NNGT\'%:;<<<rB   fromdocnamebuilderr)   r^   rw   r   rU  r%   Element | Nonec                "   |                     d          }|                     d          }	|                    d          rdnd}
|                     |||	|||
          }|s |dk    r|                     |||	|d|
          }|s |dk    r|                     |||	|d|
          }|sd S t          |          dk    rld	 |D             }t          |          dk    r|}nJt                              t          d
          |d                    d |D                       dd|           |d         \  }}|d         dk    r|                     ||||          S t          |d          }|r|j
        }n|g}t          |||d         |d         ||          S )Nrb   rc   rY   rO   r   r   r  r  c                ,    g | ]}|d          j         |S )rO   )r;   )r   r  s     rC   r  z-PythonDomain.resolve_xref.<locals>.<listcomp>d  s#    AAAAaDLA!AAArB   z5more than one target found for cross-reference %r: %sz, c              3  &   K   | ]}|d          V  dS )r   NrA   )r   r   s     rC   r   z,PythonDomain.resolve_xref.<locals>.<genexpr>i  s&      0O0Oeq0O0O0O0O0O0OrB   refpython)r  r  rZ  r  r-   re   )rl   hasattrr  rG  r  r  r   r  _make_module_refnoder   rA  r!   )r   r_   r  r  r  r^   rw   rU  r  rH  r  r  
canonicalsr<  rU   rs  rA  s                    rC   resolve_xrefzPythonDomain.resolve_xrefK  s    ((;''((:&&,,}55<QQ1
--Wgv $j2 2  	W46>> mmC'66:VVG 	X46>> mmC'67JWWG 		L4\\AAAWAAAJ:!##$r"YZZ%tyy0O0Ow0O0O0O'O'O$)8d  L L L AJ	cq6X,,Wk4RRR 2$
CCG &"+ %:c!fc!fhPTUUUrB   list[tuple[str, Element]]c                0   |                     d          }|                     d          }g }	|                     ||||d d          }
t          |
          dk    }|
D ]\  }}|r|j        r|d         dk    r.|	                    d|                     ||||          f           It          |d          }|r|j        }n|g}d|                     |d                   z   }|	                    |t          |||d	         |d         ||          f           |	S )
Nrb   rc   rO   r  r-   zpy:modre   zpy:r   )
rl   r  rG  r;   r   r  r   rA  role_for_objtyper!   )r   r_   r  r  r^   rw   rU  r  rH  ri  r  multiple_matchesr<  rU   rs  rA  roles                    rC   resolve_any_xrefzPythonDomain.resolve_any_xrefz  sp    ((;''((:&&-/ --WgvtQGGw<<!+  	E 	EID# CK 1v!! $ 9 9';:>!J !J K L L L L
 6dJGG *&/HH !)zHt44SV<<<l7KQQTUVQW3;T'C 'C  D E E E ErB   r&   c                    | j         |         }|}|j        r|d|j        z   z  }|j        r|t          d          z  }|j        r|d|j        z   dz   z  }t          |||j        |j        ||          S )Nz: z (deprecated)z (r   )r  rF   rH   r   rG   r!   r7   r8   )r   r  r  r<  rU  r-   rZ   s          rC   r  z!PythonDomain._make_module_refnode  s     d#? 	,TFO++E 	(Q'''E? 	2TFO+c11EG[&.&.$e- - 	-rB   -Iterator[tuple[str, str, str, str, str, int]]c              #  8  K   | j                                         D ]\  }}||d|j        |j        dfV  | j                                        D ]J\  }}|j        dk    r:|j        r|||j        |j        |j        dfV  1|||j        |j        |j        dfV  Kd S )Nr-   r   rQ   rO   )r  r  r7   r8   r  r9   r;   )r   r  r  refnamerU   s        rC   get_objectszPythonDomain.get_objects  s       L..00 	L 	LLGSGXs{CKKKKKK L..00 	W 	WLGS{h&&; W"GS[#+s{TVWWWWW"GS[#+s{TUVVVV	W 	WrB   c                    |                     d          }|                     d          }|                     d          }|d S d                    t          d |||g                    S )Nrb   rc   rI   rN   )rl   r  rc  )r   rw   r  rH  r^   s        rC   get_full_qualified_namez$PythonDomain.get_full_qualified_name  sb    ((;''((:&&+&&>488F4'7F)CDDEEErB   )rK   r  )FN)r<  r6   r9   r6   r8   r6   r;   r:   rZ  r   rK   rT   )rK   r  )r<  r6   r8   r6   rF   r6   rG   r6   rH   r:   rK   rT   )r7   r6   rK   rT   )r  r  r  r  rK   rT   )r   )r_   r*   r  r6   r  r6   r<  r6   r  r  r  r   rK   r  )r_   r*   r  r6   r  r)   r  r6   r^   r6   rw   r   rU  r%   rK   r  )r_   r*   r  r6   r  r)   r^   r6   rw   r   rU  r%   rK   r  )
r  r)   r  r6   r<  r6   rU  r&   rK   r%   )rK   r  )rw   r%   rK   r  ))r=   r>   r?   r  r<  r  r   r   r  r@   r	  r,  r7  r<  rK  rQ  rY  rb  rh  r  r  rT  r
   r  rolesr  r  indicesre  r  r  r  rv  r  r  r  r  r  r  r  r  rA   rB   rC   r  r    sY        !!DE*FEBB&		FEBB'

GUEJJ+E7EJJ(FEBB. 1 1FEBB/ 2 2FEBB+FEBB*FGUKK(E5AA( (L     &%&&#()&%#*., J  t,,,t,,,
 
E 6 6L    
 	G 3 3 3 X3 <@V V V V V* 3 3 3 X3I I I I* * * *, , , , AB6 6 6 6 6p-V -V -V -V^! ! ! !F- - - -	W 	W 	W 	WF F F F F FrB   r  rw   r   rU  r  c                n   dd}|                     d          dk    rdS |                     d	          d
v r|                     d          dk    r|S |                     d	          dv rL|                     d          }t          j        t          t          |d                    r|S  ||          r|S dS )z1Do not emit nitpicky warnings for built-in types.sr6   rK   r:   c                    |                      d          r|                     dd          d         } | t          j        v S )NrR   rN   rO   )rW   rX   typing__all__)r  s    rC   istypingz"builtin_resolver.<locals>.istyping  s9    <<	"" 	#Q"AFN""rB   rj   ri   Nr[   )rV   rU   rI   rT   )rV   rU   r  )r  r6   rK   r:   )rl   inspectisclassr   builtins)r  r_   rw   rU  r  rI   s         rC   builtin_resolverr    s    # # # # xx$$t	)		 0	0	0TXXk5J5Jf5T5T	)		 7	7	7HH[))	?78Y==>> 	O8I 	O4rB   r  c                z   |                      d           |                     t                     |                     ddd           |                     dd dt          d h           |                     ddd           |                     dt                     |                     d	t          d
           dddddS )Nzsphinx.directivesrn   Fr_   r  )typesr   zobject-description-transformzmissing-referencei  )priorityr3   r  T)versionenv_versionparallel_read_safeparallel_write_safe)setup_extension
add_domainr  add_config_valuer   connectr  r  )r  s    rC   setupr    s    +,,,NN<   <eUKKK?u #T{  , , ,=ueLLLKK.0BCCCKK#%5KDDD "#	  rB   r  )rI   r6   rJ   r:   rK   rL   )r^   r6   r_   r*   rJ   r:   rK   r`   )rt   r6   r_   r*   rK   ru   )r   r6   r_   r*   r!  r:   rK   r"  )r4  r6   r_   r*   r!  r:   rK   r5  )rC  r   r4  r6   r!  r:   rK   rT   )
r  r(   rR  r6   r9   r6   rs  r%   rK   rT   )
r  r(   r_   r*   rw   r   rU  r%   rK   r  )r  r(   rK   r  )qr  
__future__r   r   r  r  r  ra  r   r   r   r   r   r   r   docutilsr	   docutils.parsers.rstr
   sphinxr   sphinx.addnodesr   r   r   sphinx.directivesr   sphinx.domainsr   r   r   r   sphinx.localer   r   sphinx.pycode.parserr   r   sphinx.rolesr   sphinx.utilr   sphinx.util.docfieldsr   r   r   sphinx.util.docutilsr   sphinx.util.inspectr   sphinx.util.nodesr   r    r!   r"   collections.abcr#   r$   docutils.nodesr%   r&   docutils.parsers.rst.statesr'   sphinx.applicationr(   sphinx.buildersr)   sphinx.environmentr*   sphinx.util.typingr+   r,   	getLoggerr=   r  rb  VERBOSEr  pairindextypesr5   rE   r\   rs   r   r   r3  rB  rN  rP  rn  rr  rt  r  r6   rv  r	  r  r,  r7  r<  rK  rQ  rT  rY  rb  rh  r  r  r  r  r  r  r  rA   rB   rC   <module>r,     s     " " " " " " 



       				         7 7 7 7 7 7 7 7 7 7 7 7       + + + + + +       P P P P P P P P P P / / / / / / = = = = = = = = = = = =         6 6 6 6 6 6 6 6 ! ! ! ! ! !       A A A A A A A A A A 0 0 0 0 0 0 2 2 2 2 2 2             	<22222222,,,,,,,,333333))))))''''''333333;;;;;;;;		8	$	$ BJ z 	 "     *       *   2 2 2 2 28 */; ; ; ; ; ;4y/ y/ y/ y/xF F F F F~ F F FV ',; ; ; ; ;~ LQ2 2 2 2 2l NS1 1 1 1 1lJ J J J J J J JZ	 	 	 	 	k5 	 	 		 	 	 	 	[, 	 	 		 	 	 	 	;
 	 	 	^ ^ ^ ^ ^ sCx1 ^ ^ ^B	# # # # # # # #L    *   ""6 "6 "6 "6 "6 "6 "6 "6J    (   <3? 3? 3? 3? 3?x 3? 3? 3?l	 	 	 	 	H 	 	 		 	 	 	 	X 	 	 	        *< *< *< *< *<( *< *< *<Z0; 0; 0; 0; 0; 0; 0; 0;f7 7 7 7 7 7 7 7t    o   *       .' ' ' 'E( E( E( E( E( E( E( E(PTF TF TF TF TF6 TF TF TFn   2     rB   