
    -PhH`                    f   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
m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mZ d dlmZ er"d dlmZmZ d dl
mZ d dlmZm Z  d dlm!Z! d dl"m#Z# 	 d4d5dZ$ddd6dZ%d7d!Z& G d" d#e          Z'	 	 d8d9d)Z(	 	 d8d:d,Z)d;d.Z*d;d/Z+	 	 d8d<d3Z,dS )=    )annotationsN)deque)	Parameter)TYPE_CHECKING)nodes)addnodes)pending_xrefpending_xref_condition)_)TokenTokenProcessor)signature_from_str)IterableIterator)Any)ElementNode)desc_signature)BuildEnvironmentF	reftargetstrsuppress_prefixbool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~ztyping.   Noneobjclass)
startswithsplit)r   r   refspecifictitlereftypes        b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/python/_annotations.pyparse_reftargetr+      s     KC   abbM				c	"	" abbM	$$R(	 $$R(			i	(	( !""Fi229==Iuk11    r   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)r2   r3   r   r     resolved)	condition*py)	refdomainr)   r   r'   )
ref_contextgetr+   config!python_use_unqualified_type_namesr&   r
   r   Textr	   )	r.   r/   r   kwargsr)   r(   r'   	shortname	contnodess	            r*   type_to_xrefrB   9   s	     ,,[99++J77
 

 *9&/*R*R'GVUK
z3 
( KK$$R(	"2yJGGG"2u<<<!
		
 Z&&'	
	      r,   
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.ASTr   rD   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                  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                   r1tC          j"        tF          j$        fd| j%        D             g           S t          | t          j&                  rt          j        | j'                  gS t          | t          j(                  r+tS          | j        dd          dv r 	|           S 
r%tS          | j        dd          dk    r 	|           S  | j                  }|                    t          j        dd                     |	                     | j*                             |                    t          j        dd
                     |d         dv rRtW          |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 t          | t          j0                  rug }| j1        D ]^}| |          z  }|                    t          j        dd	                     |                    t          j                               _| j2        D ]}|                    t          j3        |j4        |j4                             |                    t          j5        dd                     | |j                  z  }|                    t          j        dd	                     |                    t          j                               g  | j6                  t          j        dd          |d d         t          j        dd          }|S d|  }to          |          )Nr   r   r4   |z...r   -[,]c              3  .   K   | ]} |          V  d S )N ).0eunparses     r*   	<genexpr>z5_parse_annotation.<locals>.unparse.<locals>.<genexpr>   s+      3R3R1GGAJJ3R3R3R3R3R3Rr,   id>   UnionOptionalLiteral>   typing.LiteralrW   r   )start()=zunsupported syntax: )8
isinstanceast	Attributer   r>   valueattrBinOpleftextendoprightBitOrr   desc_sig_spacedesc_sig_punctuationConstantEllipsisr   desc_sig_keywordreprintdesc_sig_literal_numberr   desc_sig_literal_stringExprInvertUSubListeltsappendpopModule	functoolsreduceoperatoriaddbodyNamerT   	Subscriptgetattrslice	enumerateliteralUnaryOpoperandTupleCallargskeywordsdesc_sig_nameargdesc_sig_operatorfuncSyntaxError)rF   resultelemisubnoder   r   kwdmsg_unparse_pep_604_annotationshort_literalsrR   s            r*   rR   z"_parse_annotation.<locals>.unparseb   s   dCM** 	IJ''$*"5"5a"8FF49FFGGHHdCI&& 	!(!3!3FMM''$'**+++MM''$*--...MdCI&& 	'))-b#66')) 
 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%% 	<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'' 	X#HM3R3R3R3R	3R3R3RTVWWW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  I = =DMM''$--000MM("?C"H"HIIIMM("9";";<<<<



 1"c::1"c::
 MdCH%% 	 Dy 7 7$H9"cBBCCCH3556666} 7 7H237CGDDEEEH6r3??@@@	***H9"cBBCCCH3556666##-b#66 crc -b#66	F M+T++#r,   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   r   rT   r4   rV   r"   )r   r^   r_   r   re   rv   rh   r   ra   rw   r   r>   )rF   	subscript	flattenedeltrR   s       r*   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r,   T)type_commentsr   r    r   r-   N)rF   rG   r   rD   )rF   r   r   rD   )r<   "python_display_short_literal_typesr_   parser^   r   r   rw   r>   stripr   rj   astextrx   rB   r   r   )rC   r/   treer   rF   r   r   rR   s        @@@r*   _parse_annotationr   ^   s   ZBNk k k k k k k kZ     &/y4888GDMM 	$ 	$D$.. $d1g&&&&D%*-- $$**,, $@"6":x/LMM@ 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sigr   r   r"   c                    |                     dd                                          }t                                          |g           g | _        d S )N
r4   )replacer   super__init__type_params)selfr   	signature	__class__s      r*   r   z!_TypeParameterListParser.__init__   sL    KKb))//11	)%%% =?r,   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))rZ   r[   ){})rK   rM   :r\   rL   )	fetch_tokenrw   tokenOPfetch_untilINDENTDEDENTmatchrx   )r   tokenscurrentldelimrdelims        r*   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]]EHc?UXsOehPS_UU JJLLL ))+++g 	 r,   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 )Nr7   **r   r\   z6type parameter bound or constraint is not allowed for z parameters)r   r   NAMEra   r   previousr   r   r   VAR_POSITIONALVAR_KEYWORDPOSITIONAL_OR_KEYWORDemptyr   _build_identifierr   descriptionr   r   rw   )	r   r   tp_nametp_kindtp_ann
tp_defaultr   r   
type_params	            r*   r   z_TypeParameterListParser.parse  s   ))+++g %	4%*$$!---//= >T]%8%8XsOeh%5& & > }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
 y>>>)/11@&2@ @ @  &c***%w
FC
 ''
333K ))+++g %	4 %	4 %	4 %	4 %	4r,   r   c           
        ddl m}m 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isliceiterableIterable[Token]r   Iterator[tuple[Token, ...]]c              3     K   t          |           }t           |d          d          }t          |          dk    rt          |          V  |D ](}|                    |           t          |          V  )d S )N   )maxlen)iterr   lentuplerw   )r   itwindowxr   s       r*   
triplewisez>_TypeParameterListParser._build_identifier.<locals>.triplewise=  s      hB66"a==333F6{{aFmm### $ $a   Fmm####$ $r,   rZ   rK   r   r7   r   )nativer4   )r    r    z
<sentinel>Fr[   rM   r   )r   r   r   r   )	itertoolsr   r   r   r   r   r   rw   _pformat_tokenra   r   	ENDMARKERr   NUMBERSTRINGjoinr   )r   r   r   r   identstokis_unpack_operatorstoprf   afteridentr   s              @r*   r   z*_TypeParameterListParser._build_identifier:  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%    "$58S/EHd;K!L!L "		JLLXsOXsOXsO   KKJLLXsOXsOXsO R& wwv$$&&&r,   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 )Nr4   r   rL   # r\   rI   &^<>+rJ   r7   r   @/z//%z<<z>>z>>>z<=z>=z==z!=)ra   r   r   NEWLINEr   r   )r   r   r   s      r*   r   z'_TypeParameterListParser._pformat_tokeno  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r,   )r   r   r   r"   )r   r   )r   r"   )r   r   r   r   F)r   r   r   r   r   r   )	__name__
__module____qualname__r   r   r   r   r   __classcell__)r   s   @r*   r   r      s        ? ? ? ? ? ?    &4 &4 &4 &4P3' 3' 3' 3'j! ! ! ! ! ! ! ! !r,   r   Ttp_listmulti_line_parameter_listtrailing_comma!addnodes.desc_type_parameter_listc                   t          j        |           }||d<   ||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   multi_line_trailing_commazQpositional-only or keyword-only parameters are prohibited in type parameter listsr4   r7   r   r   rZ   r[   r\   default_valueFclassessupport_smartquotes)r   desc_type_parameter_listr   r   r   r   POSITIONAL_ONLYKEYWORD_ONLYr   desc_type_parameterr   r   r   r   r   r   rj   ri   r%   endswithr   r   inline)r   r/   r   r   r   parserr   r   r   r   r   rF   rC   type_ann_exprtype_ann_texts                  r*   _parse_type_listr    s    3G<<K/HK+,/=K+, &g..F
LLNNN060B 0 0,*fy0)2HIII9  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GJGGGM   %% 
&&//#*>*> 
& - 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J(9u   D 	tr,   arglistaddnodes.desc_parameterlistc                6   t          j        |           }||d<   ||d<   t          d| z            }d}|j                                        D ]*}|j        |j        k    r||j        k    r|t                      z  }|j        |j        k    r"||j	        |j        dhv r|t                      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        },|t2          j        k    r|t                      z  }|S )z*Parse a list of arguments using AST parserr   r  z(%s)Nr4   r7   r   r   r\   r  Fr  )r   desc_parameterlistr   
parametersvalueskindr	  _positional_only_separatorr
  r   _keyword_only_separatordesc_parameterr   r   r   namer   rC   r   r   rj   ri   defaultr   r  r   )
r  r/   r   r   paramsr   	last_kindparamrF   childrens
             r*   _parse_arglistr"    s    (11F*CF&'*8F&'
Vg-
.
.CI&&(( % %:...9@U3U3U0222F:+++	'!>
 1
 1

 -///F&((:---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EMO+<RW   D 	$J		I---,...Mr,   addnodes.desc_parameterc                     t          j        ddt          d                    } t          j        dd| dg          }t          j        dd|          S )Nr   z-Positional-only parameter separator (PEP 570)explanationr4   zpositional-only-separatorr  r   abbreviationr   r   r   r  )positional_only_abbrpositional_only_ops     r*   r  r    sj     -Sa OPP   "3R%0K/L   "3,>???r,   c                     t          j        ddt          d                    } t          j        dd| dg          }t          j        dd|          S )Nr7   z,Keyword-only parameters separator (PEP 3102)r%  r4   zkeyword-only-separatorr'  r(  )keyword_only_abbrkeyword_only_ops     r*   r  r    sh    *Sa NOO   0R"-E,F  O "3O<<<r,   signoder   r"   c                   t          j                    }||d<   ||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  rL   r   rK   r]   r    r   NrM   z[]r4   )r   r  r&   r   r%   rw   desc_optionalrx   r  r  r   r   
IndexError)	r/  r  r   r   	paramliststackargument	ends_open
ends_closes	            r*   _pseudo_parse_arglistr8  $  sH    +--I-FI)*-;I)*%;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  b			X4H28XFF  			  X355666b			U2Y&			Q	     		a
    u::??  	9     /11	X,Wg>>>	9s   JJ- -:K+*K+r   )r   r   r   r   r   r   )r.   r   r/   r   r   r   r   r0   )rC   r   r/   r   r   rD   )FT)
r   r   r/   r   r   r   r   r   r   r  )
r  r   r/   r   r   r   r   r   r   r  )r   r#  )
r/  r   r  r   r   r   r   r   r   r"   )-
__future__r   r_   rz   r|   r   collectionsr   inspectr   typingr   docutilsr   sphinxr   sphinx.addnodesr	   r
   sphinx.localer   sphinx.pycode.parserr   r   sphinx.util.inspectr   collections.abcr   r   r   docutils.nodesr   r   r   sphinx.environmentr   r+   rB   r   r   r  r"  r  r  r8  rO   r,   r*   <module>rF     s   " " " " " " 



                                           @ @ @ @ @ @ @ @       6 6 6 6 6 6 6 6 2 2 2 2 2 2 422222222,,,,,,,,......333333 -22 2 2 2 2: DI" " " " " "JX/ X/ X/ X/vW W W W W~ W W Wz ',	? ? ? ? ?J ',	6 6 6 6 6r@ @ @ @= = = = ',	6 6 6 6 6 6 6r,   