+
    Brh                        R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt. ROt ! R R]P                  4      t	]
! 4       tRtRt ! R R4      t]! R R! 4      t ! R R4      tR	 t ! R
 R]4      tRR/R ltRRRR/R ltR tR tR tRRRRRRR]	P4                  /R ltR tR tR t]P>                  R,          P@                  t!R t"R# )"z3Helpers for introspecting and wrapping annotations.NFormat
ForwardRefc                   &    ] tR t^t^t^t^t^tRtR# )r    N)	__name__
__module____qualname____firstlineno__VALUEVALUE_WITH_FAKE_GLOBALS
FORWARDREFSTRING__static_attributes__r       */usr/local/lib/python3.14/annotationlib.pyr   r      s    EJFr   z!name '{name:.200}' is not definedc            
          a  ] tR t^5t o Rt]tRRRRRRRR/R	 ltR
 tRRRRRRRRR]	P                  /R lt]3R lt]R 4       t]R 4       tR tR tR tR tR tRtV tR# )r   a  Wrapper that holds a forward reference.

Constructor arguments:
* arg: a string representing the code to be evaluated.
* module: the module where the forward reference was created.
  Must be a string, not a module object.
* owner: The owning object (module, class, or function).
* is_argument: Does nothing, retained for compatibility.
* is_class: True if the forward reference was created in class scope.

moduleNowneris_argumentTis_classFc                   \        V\        4      '       g   \        R V: 24      hWn        W@n        WPn        W n        W0n        RV n        RV n	        RV n
        RV n        RV n        R# )z*Forward reference must be a string -- got N)
isinstancestr	TypeError__arg____forward_is_argument____forward_is_class____forward_module__	__owner____globals____cell____extra_names____code____ast_node__)selfargr   r   r   r   s   &&$$$$r   __init__ForwardRef.__init__D   sj     #s##HPQQ'2$$,!"(  #  r   c                   \        R 4      h)zCannot subclass ForwardRefr   )clsargskwdss   "*,r   __init_subclass__ForwardRef.__init_subclass___   s    455r   globalslocalstype_paramsformatc                  T;\         P                  8X  d    V P                  # ;\         P                  8X  d    RpM#\         P                  8X  d   RpM \        V4      hV P                  e    V P                  P                  # Vf   V P                  pVfD   V P                  e6   \        \        P                  P                  V P                  R4      RR4      pVf   V P                  pVf   \!        V\"        4      '       dL   \        VRR4      pV'       d6   \        P                  P                  VR4      pV'       d   \        VRR4      pML\!        V\$        P&                  4      '       d   \        VRR4      pM\)        V4      '       d   \        VRR4      pVf   / pVf3   / p\!        V\"        4      '       d   VP+                  \-        V4      4       Vf   Ve   \        VRR4      pVe#   \/        V4      pV F  p	WV	P0                  &   K  	  V P2                  '       d   / VCV P2                  CpV P                  p
V
P5                  4       '       d   \6        P8                  ! V
4      '       gn   W9   d	   W*,          # W9   d	   W,          # \;        \<        V
4      '       d   \        \<        V
4      # V'       d   V # \?        \@        PC                  V
R7      V
R7      hV PD                  p \G        WVR	7      #   \         d     ELi ; i  \H         d    T'       g   h  Mi ; i\K        / \<        PL                  CTCTTT PN                  TR
7      p \G        YTR	7      pTPQ                  4        T#   \H         d    T u # i ; i)zxEvaluate the forward reference and return the value.

If the forward reference cannot be evaluated, raise an exception.
FTN__dict__r   r   __type_params__)name)r/   r0   r/   r   r   r2   ))r   r   __forward_arg__r
   r   NotImplementedErrorr    cell_contents
ValueErrorr   r   getattrsysmodulesgetr   r   typetypes
ModuleTypecallableupdatevarsdictr   r!   isidentifierkeyword	iskeywordhasattrbuiltins	NameError_NAME_ERROR_MSGr2   __forward_code__eval	Exception_StringifierDictr4   r   transmogrify)r$   r/   r0   r1   r   r2   is_forwardref_formatmodule_namer   paramr%   code
new_localsresults   &$$$$$        r   evaluateForwardRef.evaluateb   s    +++',$""'+$)&11==$}}222 =NNE?t66B 7 7>
DG ?&&G?%&&%e\4@ [[__[$?F")&*d"CE5#3#344!%T:%!%= ?G>F%&&d5k*5#4 "%):DAK
 "7mG$*/' %77$"6"67F""g&7&7&<&<}{"|#3''x--% 6 6C 6 @sKK((DD&AA  @  + , */8$$//22JdJG '')	  s<   /K; .L ;L
	L
L$ L$#L$M3 3NNc                   ^ RI p^ RIpV\        J d   VP                  R4       RpVP	                  RRRR7       VP                  V VVVVR7      # )	    Nztyping.ForwardRef._evaluatezForwardRef._evaluatez{name} is a private API and is retained for compatibility, but will be removed in Python 3.16. Use ForwardRef.evaluate() or typing.evaluate_forward_ref() instead.)remove)r/   r0   r1   _recursive_guardr   )      )typingwarnings	_sentinel._deprecation_warning_for_no_type_params_passed_deprecatedevaluate_forward_ref)r$   globalnslocalnsr1   recursive_guardra   rb   s   &&&&$  r   	_evaluateForwardRef._evaluate   sp    )#AA- K"c	 	 	
 **#, + 
 	
r   c                    V P                   e   V P                   # V P                  e2   \        P                  ! V P                  4      V n         V P                   # \	        R4      h)NzDAttempted to access '__forward_arg__' on an uninitialized ForwardRef)r   r#   astunparseAssertionErrorr$   s   &r   r8   ForwardRef.__forward_arg__   sR    <<#<<(;;t'8'89DL<<R
 	
r   c                   V P                   e   V P                   # V P                  pVP                  R4      '       d   RV R2pMTp \        VRR4      V n         V P                   #   \         d    \	        RT: 24      hi ; i)N*(z,)[0]z<string>rO   z/Forward reference must be an expression -- got )r"   r8   
startswithcompileSyntaxError)r$   r%   arg_to_compiles   &  r   rN   ForwardRef.__forward_code__   s    ==$== "" >># U^N N	Y#NJGDM }}  	Y OPSwWXX	Ys   A& &Bc                   \        V\        4      '       g   \        # V P                  VP                  8H  ;'       Ed'    V P                  VP                  8H  ;'       Ed    V P
                  VP
                  J ;'       d    V P                  VP                  8H  ;'       d    V P                  VP                  8H  ;'       d    V P                  VP                  8H  ;'       d    V P                  '       d-   \        \        V P                  P                  4       4      4      MR VP                  '       d-   \        \        VP                  P                  4       4      4      MR 8H  # N)r   r   NotImplementedr8   r   r   r   r    r   r!   tuplesorteditemsr$   others   &&r   __eq__ForwardRef.__eq__  s,   %,,!!  E$9$99  ''5+C+CC    E$5$55	 
 ))U-G-GG  /  %//1  AE@T@T@Tvd2288:;<Z^AFAVAVAVve3399;<=\`b	
r   c                6   \        V P                  V P                  \        V P                  4      V P
                  V P                  V P                  V P                  '       d2   \        \        V P                  P                  4       4      4      34      # R 34      # r{   )hashr8   r   idr   r   r    r   r!   r}   r~   r   rp   s   &r   __hash__ForwardRef.__hash__  s      ##t %%MMNN;?;O;O;OE&--33567
  	 VZ
  	r   c                2    \         P                  W3,          # r{   rA   	UnionTyper   s   &&r   __or__ForwardRef.__or__  s    t{++r   c                2    \         P                  W3,          # r{   r   r   s   &&r   __ror__ForwardRef.__ror__!  s    u{++r   c                D   . pV P                   e    VP                  RV P                   : 24       V P                  '       d   VP                  R4       V P                  e    VP                  RV P                  : 24       RV P                  : RP                  V4       R2# )Nz	, module=z, is_class=Truez, owner=zForwardRef( ))r   appendr   r   r8   join)r$   extras   & r   __repr__ForwardRef.__repr__$  s    "".LL9T%<%<$?@A$$$LL*+>>%LL8DNN#567T114RWWU^4DAFFr   )
r   r#   r    r"   r!   r   r   r   r   r   )r   r   r   r	   __doc___SLOTS	__slots__r&   r-   r   r
   rY   rc   rj   propertyr8   rN   r   r   r   r   r   r   __classdictcell____classdict__s   @r   r   r   5   s     
 I! 	!
 ! ! !66i i 	i
 i i ||iV 8A 
. 
 
  "
$	,,G Gr   c                     a  ] tR tRt o ]tRRR/R lltR tR tR t	RR lt
R	 tR
 tR tR tR tR tR tV 3R lR lt]! ]P(                  ! 4       4      t]! ]P,                  ! 4       4      t]! ]P0                  ! 4       4      t]! ]P4                  ! 4       4      t]! ]P8                  ! 4       4      t]! ]P<                  ! 4       4      t]! ]P@                  ! 4       4      t!]! ]PD                  ! 4       4      t#]! ]PH                  ! 4       4      t%]! ]PL                  ! 4       4      t']! ]PP                  ! 4       4      t)]! ]PT                  ! 4       4      t+]! ]PX                  ! 4       4      t-AV 3R lR lt.].! ]P(                  ! 4       4      t/].! ]P,                  ! 4       4      t0].! ]P0                  ! 4       4      t1].! ]P4                  ! 4       4      t2].! ]P8                  ! 4       4      t3].! ]P<                  ! 4       4      t4].! ]P@                  ! 4       4      t5].! ]PD                  ! 4       4      t6].! ]PH                  ! 4       4      t7].! ]PL                  ! 4       4      t8].! ]PP                  ! 4       4      t9].! ]PT                  ! 4       4      t:].! ]PX                  ! 4       4      t;A.R t<]<! ]Pz                  ! 4       4      t>]<! ]P~                  ! 4       4      t@]<! ]P                  ! 4       4      tB]<! ]P                  ! 4       4      tD]<! ]P                  ! 4       4      tF]<! ]P                  ! 4       4      tHA<R tI]I! ]P                  ! 4       4      tK]I! ]P                  ! 4       4      tM]I! ]P                  ! 4       4      tOAIRtPV tQR# )_Stringifieri2  Nextra_namesc                   \        V\        P                  \        34      '       g   Q hR V n        RV n        W@n        R V n        R V n        Wn	        W n
        Wpn        WPn        W0n        W`n        R # )NF)r   rm   ASTr   r   r   r   r   r"   r#   r   r!   r    r   __stringifier_dict__)r$   noder/   r   r   cellstringifier_dictr   s   &&&&&&$$r   r&   _Stringifier.__init__7  se     $#////',$$,!"& "*$4!r   c                p   \        V\        4      '       df   \        VP                  \        4      '       d.   \        P
                  ! VP                  R 7      VP                  3# VP                  VP                  3# \        V4      \        J d   \        V4      R3# V P                  P                  \        P                  8X  g.   Ve*   \        V4      \        \        \        \         \"        39   d   \        P$                  ! VR7      R3# \        V4      \&        J d   / p. p. pVP)                  4        Fw  w  rVV P+                  V4      w  rxVe   VP-                  V4       VP/                  V4       V P+                  V4      w  rVe   VP-                  V4       VP/                  V	4       Ky  	  \        P0                  ! W44      V3# \        V4      \2        \4        \6        39   d   / p. p
V F<  pV P+                  V4      w  rVe   VP-                  V4       V
P/                  V4       K>  	  \2        \        P8                  \4        \        P:                  \6        \        P<                  /\        V4      ,          pV! V
4      V3# V P                  P?                  4       p\        P
                  ! VR 7      W/3# )r   Nvalue) r   r   r#   r   rm   Namer!   r@   	_Template_template_to_astr   r2   r   r   intfloatboolcomplexConstantrF   r   _Stringifier__convert_to_astrD   r   Dictlistr}   setListTupleSetcreate_unique_name)r$   r   r   keysvalueskeyr   new_keynew_extra_names	new_valueeltseltnew_elt	ast_classr6   s   &&             r   __convert_to_ast_Stringifier.__convert_to_astQ  s$   e\**%,,c22xx5#5#568M8MMM%%u'<'<<<%[I%#E*D00 %%,,=}E{sCg>><<e,d22%[D KDF#kkm
+/+@+@+E(".&&7G$-1-B-B5-I*	".&&7i( , 88D);66%[T5#..KD+/+@+@+E(".&&7G$	 
 sxx		3HeUIT?K//,,??AD88t$tm33r   c                   a a \        V\        4      '       dU   / oVV 3R  lp\        P                  ! V! VP                  4      V! VP
                  4      V! VP                  4      R7      S3# S P                  V4      # )c                 d   < V f   R # SP                  V 4      w  rVe   SP                  V4       V# r{   )r   rD   )objnew_objr   r   r$   s   &  r   conv3_Stringifier.__convert_to_ast_getitem.<locals>.conv  s7    ;+/+@+@+E(".&&7r   )lowerupperstep)r   slicerm   Slicestartstopr   r   )r$   r   r   r   s   f& @r   __convert_to_ast_getitem%_Stringifier.__convert_to_ast_getitem|  sn    eU##K 995;;'5::&%**% 	  ((//r   c                x    V P                   p\        V\        4      '       d   \        P                  ! VR 7      # V# )r   )r#   r   r   rm   r   )r$   r   s   & r   	__get_ast_Stringifier.__get_ast  s.      dC  88t$$r   c           	     V   / pV P                   e   VP                  V P                   4       Ve   VP                  V4       \        TV P                  V P                  V P
                  V P                  T;'       g    R R7      pV P                  P                  P                  V4       V# )N)r   r   )	r!   rD   r   r   r   r   r   stringifiersr   )r$   r   r   r   stringifiers   &&&  r   
__make_new_Stringifier.__make_new  s    +""4#7#78""";/"NN%%!66'//4
 	!!..55kBr   c                    \        V 4      # r{   r   rp   s   &r   r   _Stringifier.__hash__  s    $xr   c                   V P                   R 8X  d   \        h\        V\        4      '       d^   / p. pV F<  pV P	                  V4      w  rVVe   VP                  V4       VP                  V4       K>  	  \        P                  ! V4      pMV P	                  V4      w  r\        V\        P                  4      '       g   Q \        V4      4       hV P                  \        P                  ! V P                  4       V4      V4      # r   )r#   KeyErrorr   r}   $_Stringifier__convert_to_ast_getitemrD   r   rm   r   r   repr_Stringifier__make_new	Subscript_Stringifier__get_ast)r$   r   r   r   r   r   r   s   &&     r   __getitem___Stringifier.__getitem__  s     /NeU##KD+/+H+H+M(".&&7G$	 
 IIdOE!%!>!>u!EE%))64;6)s}}T^^-=uE{SSr   c                j    V P                  \        P                  ! V P                  4       V4      4      # r{   )r   rm   	Attributer   )r$   attrs   &&r   __getattr___Stringifier.__getattr__  s#    s}}T^^-=tDEEr   c                   / p. pV F<  pV P                  V4      w  rgVe   VP                  V4       VP                  V4       K>  	  . pVP                  4        FR  w  rV P                  V
4      w  rVe   VP                  V4       VP                  \        P
                  ! W4      4       KT  	  V P                  \        P                  ! V P                  4       WH4      V4      # r{   )	r   rD   r   r   rm   rH   r   Callr   )r$   r+   kwargsr   ast_argsr%   new_argr   
ast_kwargsr   r   r   s   &*,         r   __call___Stringifier.__call__  s    C'+'<'<S'A$G*""?3OOG$	 
 
 ,,.JC)-)>)>u)E&I*""?3ckk#9:	 )
 sxx(8(OQ\]]r   c              #  x   "   V P                  \        P                  ! V P                  4       4      4      x  R # 5ir{   )r   rm   Starredr   rp   s   &r   __iter___Stringifier.__iter__  s$     oockk$..*:;<<s   8:c                    \        V P                  \        4      '       d   V P                  # \        P                  ! V P                  4      # r{   )r   r#   r   rm   rn   rp   s   &r   r   _Stringifier.__repr__  s6    d''--$$${{4,,--r   c                    \        R 4      h)z8Cannot stringify annotation containing string formattingr)   )r$   format_specs   &&r   
__format___Stringifier.__format__  s    RSSr   c                4   < V ^8  d   QhRS[ P                  /#    oprm   r   )r2   r   s   "r   __annotate___Stringifier.__annotate__  s       r   c                   a  V 3R  lpV# )c                    < V P                  V4      w  r#V P                  \        P                  ! V P	                  4       SV4      V4      # r{   r   r   rm   BinOpr   r$   r   rhsr   r  s   &&  r   binop'_Stringifier._make_binop.<locals>.binop  s@    #44U;C??		$..*B4k r   r   )r  r  s   f r   _make_binop_Stringifier._make_binop  s    	 r   c                4   < V ^8  d   QhRS[ P                  /# r  r  )r2   r   s   "r   r  r	    s       r   c                   a  V 3R  lpV# )c                    < V P                  V4      w  r#V P                  \        P                  ! VSV P	                  4       4      V4      # r{   r  )r$   r   	new_otherr   r  s   &&  r   rbinop)_Stringifier._make_rbinop.<locals>.rbinop  s@    %)%:%:5%A"I??		)R)9:K r   r   )r  r  s   f r   _make_rbinop_Stringifier._make_rbinop  s    	 r   c                   a  V 3R  lpV# )c                    < V P                  V4      w  r#V P                  \        P                  ! V P	                  4       S.V.R 7      V4      # ))leftopscomparators)r   r   rm   Comparer   r  s   &&  r   compare+_Stringifier._make_compare.<locals>.compare  sL    #44U;C??)!$
  r   r   )r  r"  s   f r   _make_compare_Stringifier._make_compare  s    		 r   c                   a  V 3R  lpV# )c                 l   < V P                  \        P                  ! SV P                  4       4      4      # r{   )r   rm   UnaryOpr   )r$   r  s   &r   unary_op-_Stringifier._make_unary_op.<locals>.unary_op'  s$    ??3;;r4>>3C#DEEr   r   )r  r)  s   f r   _make_unary_op_Stringifier._make_unary_op&  s    	F r   )r   r#   r    r"   r!   r   r   r   r   r   r   )NNFNr{   )Rr   r   r   r	   r   r   r&   r   r   r   r   r   r   r   r   r   r   r  r  rm   Add__add__Sub__sub__Mult__mul__MatMult
__matmul__Div__truediv__Mod__mod__LShift
__lshift__RShift
__rshift__BitOrr   BitXor__xor__BitAnd__and__FloorDiv__floordiv__Pow__pow__r  __radd____rsub____rmul____rmatmul____rtruediv____rmod____rlshift____rrshift__r   __rxor____rand____rfloordiv____rpow__r$  Lt__lt__LtE__le__Eqr   NotEq__ne__Gt__gt__GtE__ge__r+  Invert
__invert__UAdd__pos__USub__neg__r   r   r   s   @r   r   r   2  s     I5 54)4V0(&T&F^ =.
T  #'')$G#'')$G#((*%GS[[]+Jcggi(K#'')$GSZZ\*JSZZ\*J%F#**,'G#**,'Gs||~.L#'')$G  CGGI&HCGGI&HCHHJ'Hs{{}-K	*LCGGI&Hszz|,Kszz|,K399;'GCJJL)HCJJL)H 0MCGGI&H 3668$F3779%F3668$F399;'F3668$F3779%F  

-JSXXZ(GSXXZ(Gr   r   c           
         . pV  F  pV\         R c ;e+   w   VP                  \        P                  ! VR7      4       K9    \        P                  ! VP
                  \        P                  ! VP
                  4      VP                  e   \        VP                  4      MRVP                  R8w  d"   \        P                  ! VP                  R7      MRR7      pVP                  V4       K  	  \        P                  ! VR7      # )r   Nr   r   )r   r   
conversionr   )r   )r   r   rm   r   Interpolation
expressionparserd  ordr   TemplateStr)templater   partinterps   &   r   r   r   3  s    Fcll67  **))DOO4  ??6 DOO,  ++r1 4+;+;<! f%) * ??&))r   c                   T   a a ] tR tRt oRRRRRR/V 3R lltR tR	 tR
 tRtVt	V ;t
# )rQ   iM  r/   Nr   r   Fc               ~   < \         SV `  V4       Wn        W n        W0n        W@n        . V n        ^V n        WPn        R# )   N)	superr&   	namespacer/   r   r   r   next_idr2   )r$   rr  r/   r   r   r2   	__class__s   &&$$$$r   r&   _StringifierDict.__init__N  s8    #"
 r   c                    \        VV P                  V P                  V P                  V R 7      pV P                  P                  V4       V# ))r/   r   r   r   )r   r/   r   r   r   r   )r$   r   fwdrefs   && r   __missing___StringifierDict.__missing__X  sB    LL**]]!
 	  (r   c                    V P                    FO  p\        Vn        R Vn        \	        VP
                  \        4      '       g   K7  VP
                  Vn        R Vn        KQ  	  R # r{   )r   r   rt  r   r   r#   r   r   )r$   r   s   & r   rR   _StringifierDict.transmogrifyc  sI    $$C&CM'+C$#**C00!..#'  %r   c                X    R V P                    R2pV ;P                   ^,          un         V# )__annotationlib_name___)rs  )r$   r6   s   & r   r   #_StringifierDict.create_unique_namek  s'    &t||nB7r   )r2   r/   r   rr  rs  r   r   )r   r   r   r	   r&   rx  rR   r   r   r   __classcell__)rt  r   s   @@r   rQ   rQ   M  s3     T   	( r   rQ   r   c                   \        WVRR7      # )zCall an evaluate function. Evaluate functions are normally generated for
the value of type aliases and the bounds, constraints, and defaults of
type parameter objects.
T)r   _is_evaluate)call_annotate_function)rY   r2   r   s   &&$r   call_evaluate_functionr  q  s    
 "(%dSSr   r  Fc          	        V\         P                  8X  d   \        R4      h V ! V4      #   \         d     Mi ; iT\         P                  8X  d   \        / TR7      p\        T\        4      p\        YYTRR7      p\        P                  ! T P                  TTT P                  T P                  R7      pT! \         P                  4      pT'       d   \        T4      # TP                  4        U	U
u/ uF  w  rT	\        T
4      bK  	  up
p	# u up
p	i T\         P                   8X  Ed   / T P"                  CT P$                  Cp\        T\        4      p\        TT P$                  TTTR7      p\        YYTRR7      p\        P                  ! T P                  TTT P                  T P                  R7      p T! \         P                  4      pTP'                  4        T#   \(         d     Mi ; i\        / T P$                  TTTR7      p\        YYTRR7      p\        P                  ! T P                  TTT P                  T P                  R7      pT! \         P                  4      pTP'                  4        T'       d9   \        T\*        4      '       d!   TP-                  \         P                   R7      # T# TP                  4        U	U
u/ uF>  w  rT	\        T
\*        4      '       d!   T
P-                  \         P                   R7      MT
bK@  	  up
p	# u up
p	i T\         P.                  8X  d   \1        R4      h\        R	T: 24      h)
aZ  Call an __annotate__ function. __annotate__ functions are normally
generated by the compiler to defer the evaluation of annotations. They
can be called with any of the format arguments in the Format enum, but
compiler-generated __annotate__ functions only support the VALUE format.
This function provides additional functionality to call __annotate__
functions with the FORWARDREF and STRING formats.

*annotate* must be an __annotate__ function, which takes a single argument
and returns a dict of annotations.

*format* must be a member of the Format enum or one of the corresponding
integer values.

*owner* can be the object that owns the annotations (i.e., the module,
class, or function that the __annotate__ function derives from). With the
FORWARDREF format, it is used to provide better evaluation capabilities
on the generated ForwardRef objects.

;The VALUE_WITH_FAKE_GLOBALS format is for internal use only)r2   F)allow_evaluation)closureargdefs
kwdefaultsr7   Tz/annotate function does not support VALUE formatzInvalid format: )r   r   r;   r9   r   rQ   r   r@   _build_closurerA   FunctionTyper"   __defaults____kwdefaults___stringify_singler   r   __builtins__r   rR   rP   r   rY   r
   RuntimeError)annotater2   r   r  r/   r   r  funcannosr   valrr  rX   s   &&$$         r   r  r  y  s   ( ///VWW  #2f5eT* X
 !!))..
 V334$U++ "KKM
) "3'')
 	
 
 
6$$	$$ Fx,,E0D0DE	eT*"((
 !X
 !!))..
	&889F   "M	  		 #((
 !X
 !!))..
 f445&*--f.?.?@@ !' !/HC !#z22 LL(9(9L:
 !/   
6<<	 LMM+F:677s+   * 880D3G G)(G)ALc          
         V P                   '       g   R # V P                  P                  p. p\        V P                   4       F  w  rxV\	        V4      8  d
   WW,          p	MRp	R p
V'       d    VP
                   Tp
V
fM   \        V	VVV P                  VVR7      pVP                  P                  V4       \        P                  ! V4      p
VP                  V
4       K  	  \        V4      #   \         d     L}i ; i)Nr    )r   r   r/   r   r   )__closure__r"   co_freevars	enumeratelenr:   r;   r   r   r   r   rA   CellTyper}   )r  r   r   r   r  freevarsnew_closureir   r6   new_cellrw  s   &&&&$       r   r  r    s      ,,HKX112s8};DD ""  ! ,,!!1F ))008~~f-H8$1 32 !  s   -C++C98C9c                     V R J d   R# \        V \        4      '       d   V # \        V \        4      '       d    \        P                  ! \        V 4      4      # \        V 4      # )....)r   r   r   rm   rn   r   r   )annos   &r   r  r  '  sJ    s{	D#			D)	$	${{+D122Dzr   c                \     V R,          #   \          d    T P                  RR4      u # i ; i)zRetrieve the annotate function from a class namespace dictionary.

Return None if the namespace does not contain an annotate function.
This is useful in metaclass ``__new__`` methods to retrieve the annotate function.
r  __annotate_func__N)r   r?   )r   s   &r   !get_annotate_from_class_namespacer  3  s3    2>"" 2ww*D112s    ++r/   r0   eval_strr2   c          
     0   V'       d!   V\         P                  8w  d   \        R4      hT;\         P                  8X  d    \        V 4      pVf   \	        W4      pM;\         P
                  8X  d9     \        V 4      pVe   \        V4      #  \	        W4      pVf   \        V 4      pMy;\         P                  8X  d6    \	        W4      pVe   \        V4      # \        V 4      pVe;   \        V4      # \         P                  8X  d   \        R4      h \        RV: 24      hVf9   \        V \        4      '       g   \        V 4      '       d   / # \        V : R24      hV'       g   / # V'       g   \        V4      # Ve   VEfs   \        V \        4      '       dd   Rp\        V RR4      pV'       d6   \         P"                  P%                  VR4      pV'       d   \        VRR4      p\        \'        V 4      4      p	T p
MY\        V \(        P*                  4      '       d   \        V R4      pRp	Rp
M(\        V 4      '       d   \        V RR4      pRp	T p
MR;p;rV
e    \-        V
R	4      '       d   V
P.                  p
K!  \         P"                  P%                  R
4      ;p'       d*   \        WP0                  4      '       d   V
P2                  p
Kq   \-        T
R4      '       d   T
P4                  pVf   TpVf   T	p\        V RR4      ;p'       d*   Vf   / pV Uu/ uF  qP6                  VbK  	  upV,          pVP9                  4        UUu/ uF*  w  rT\        V\:        4      '       g   TM\=        WV4      bK,  	  pppV#   \         d     ELi ; iu upi u uppi )a  Compute the annotations dict for an object.

obj may be a callable, class, module, or other object with
__annotate__ or __annotations__ attributes.
Passing any other object raises TypeError.

The *format* parameter controls the format in which annotations are returned,
and must be a member of the Format enum or its integer equivalent.
For the VALUE format, the __annotations__ is tried first; if it
does not exist, the __annotate__ function is called. The
FORWARDREF format uses __annotations__ if it exists and can be
evaluated, and otherwise falls back to calling the __annotate__ function.
The SOURCE format tries __annotate__ first, and falls back to
using __annotations__, stringified using annotations_to_string().

This function handles several details for you:

  * If eval_str is true, values of type str will
    be un-stringized using eval().  This is intended
    for use with stringized annotations
    ("from __future__ import annotations").
  * If obj doesn't have an annotations dict, returns an
    empty dict.  (Functions and methods always have an
    annotations dict; classes, modules, and other types of
    callables may not.)
  * Ignores inherited annotations on classes.  If a class
    doesn't have its own annotations dict, returns an empty dict.
  * All accesses to object members and dict values are done
    using getattr() and dict.get() for safety.
  * Always, always, always returns a freshly-created dict.

eval_str controls whether or not values of type str are replaced
with the result of calling eval() on those values:

  * If eval_str is true, eval() is called on values of type str.
  * If eval_str is false (the default), values of type str are unchanged.

globals and locals are passed in to eval(); see the documentation
for eval() for more information.  If either globals or locals is
None, this function may replace that value with a context-specific
default, contingent on type(obj):

  * If obj is a module, globals defaults to obj.__dict__.
  * If obj is a class, globals defaults to
    sys.modules[obj.__module__].__dict__ and locals
    defaults to the obj class namespace.
  * If obj is a callable, globals defaults to obj.__globals__,
    although if obj is a wrapped function (using
    functools.update_wrapper()) it is first unwrapped.
z8eval_str=True is only supported with format=Format.VALUENr  zUnsupported format z does not have annotationsr   r4   r   __wrapped__	functoolsr5   r   )r   r
   r;   _get_dunder_annotations_get_and_call_annotater   rF   rP   r   annotations_to_stringr   r   r@   rC   r   r<   r=   r>   r?   rE   rA   rB   rJ   r  partialr  r   r   r   r   rO   )r   r/   r0   r  r2   annobj_globalsrT   r   
obj_localsunwrapr  r1   rU   r   r   return_values   &$$$$            r   get_annotationsr  ?  s2   j Ffll*STT
V\\)#.C {,S9V%-c2 ?9$ # )5C{ .c2V]](5CCy )#.C,S11++Z[[26*=>>
{c4  HSMMI3'!;<==	Cy&.c4  K!#|T:Kd;")&*d"CKd3iJFU--..!#z2KJFc]] "#}d;KJF044K4*6=11#//F # <<9<!&*;*;<<!' v}--$00?!G>F
 c#4b99{9>F5@A[E..%'[AFJ ))+%JC 	*UC00Ud566RR%   }  p Bs   2M; N0N;N
	N
c                p   \        V \        \        P                  \        P                  34      '       d9   V P
                  R8X  d   V P                  # V P
                   RV P                   2# \        V \        4      '       d"   \        V 4      p\        P                  ! V4      # V RJ d   R# \        V 4      # )a  Convert a Python value to a format suitable for use with the STRING format.

This is intended as a helper for tools that support the STRING format but do
not have access to the code that originally produced the annotations. It uses
repr() for most objects.

rK   ..r  )r   r@   rA   r  BuiltinFunctionTyper   r   r   r   rm   rn   r   )r   trees   & r   	type_reprr    s     %$ 2 2E4M4MNOOz)%%%""#1U%7%7$899	E9	%	%&{{4  |;r   c           	         V P                  4        UUu/ uF)  w  rT\        V\        4      '       d   TM
\        V4      bK+  	  upp# u uppi )zwConvert an annotation dict containing values to approximately the STRING format.

Always returns a fresh a dictionary.
)r   r   r   r  )annotationsnts   &  r   r  r    sK      %%''DA 	

1c""1	!4'  s   /Ac                    \        V RR4      pVe5   \        W!V R7      p\        V\        4      '       g   \	        V : R24      hV# R# )zOGet the __annotate__ function and call it.

May not return a fresh dictionary.
r  N)r   z!.__annotate__ returned a non-dict)r<   r  r   rF   r;   )r   r2   r  r  s   &&  r   r  r    sL    
 sND1H$XSA#t$$w&GHII
r   __annotations__c                    \        V \        4      '       d    \        V 4      pM\	        V RR4      pVf   R# \        V\
        4      '       g   \        V : R24      hV#   \         d     R# i ; i)zmReturn the annotations for an object, checking that it is a dictionary.

Does not return a fresh dictionary.
Nr  z+.__annotations__ is neither a dict nor None)r   r@   _BASE_GET_ANNOTATIONSAttributeErrorr<   rF   r;   )r   r  s   & r   r  r    sr     #t	',C
 c,d3;c4  C7"MNOOJ  		s   A A-,A-)r   r   r  r  r  r  r  r  )r   r   r   __weakref__r   r   r!   r"   r#   r    r   r   )r   r   )#r   rm   rK   enumrH   r=   rA   __all__IntEnumr   objectrc   rM   r   r   r@   r   r   r   rF   rQ   r  r  r  r  r  r
   r  r  r  r  r4   __get__r  r  r   r   r   <module>r     s   9 
    
 	T\\  H	5
 wG wGt I	~ ~B*4!t !HTd TJ8d J8 J8ZB		2bb!%b05b>DllbJ( &78@@ r   