+
    –°³jÀI ã                   ó  a € RÐ tê0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ^ RIHtHt ^ RIt^ RIHtHtHtHtHtHt ^RIHtHtHt ^RIHtHtHtHtHtHt ^RI H!t!H"t" ^RI#H$t$ ^R	I%H&t&H't'H(t(H)t)H*t* ^R
I+H,t, ]'       d   ^RI-H.t. R R lt/R R lt0]	! RR7      R R l4       t1R R lt2R R lt3]
! ]2]Ph                  R7      t5]
! ]2]Pl                  R7      t7]
! ]2]Pp                  R7      t9]
! ]2]Pt                  R7      t;]
! ]2]Px                  R7      t=]
! ]2]P|                  R7      t?]
! ]2]P€                  R7      tA]
! ]2]P„                  R7      tC]
! ]3]Pˆ                  R7      tE]
! ]3]PŒ                  R7      tG]
! ]3]P�                  R7      tI]
! ]3]Pˆ                  R7      tER R ltJ]
! ]J]P–                  R7      tL]
! ]J]Pš                  R7      tN]
! ]J]Pž                  R7      tP]
! ]J]P¢                  R7      tR]
! ]J]P¦                  R7      tT]
! ]J]Pª                  R7      tV]
! ]J]P®                  R7      tX]
! ]J]P²                  R7      tZ]
! ]J]P¶                  R7      t\]
! ]J]Pº                  R7      t^]
! ]J]P¾                  R7      t`]
! ]J]PÂ                  R7      tb]
! ]J]PÆ                  R7      td]
! ]J]PÊ                  R7      tf]
! ]J]PÎ                  R7      th]
! ]J]PÒ                  R7      tj]
! ]J]PÖ                  R7      tl]
! ]J]PÚ                  R7      tn]
! ]J]PÞ                  R7      tp]
! ]J]Pâ                  R7      tr]
! ]J]Pæ                  R7      tt]
! ]J]Pê                  R7      tv]
! ]J]Pî                  R7      tx]
! ]J]Pò                  R7      tz]
! ]J]Pö                  R7      t|]
! ]J]Pú                  R7      t~]
! ]J]Pþ                  R7      t€]
! ]J]EP                  R7      t‚]
! ]J]EP                  R7      t„]
! ]J]EP
                  R7      t†]
! ]J]EP                  R7      tˆ]
! ]J]EP                  R7      tŠ]
! ]J]EP                  R7      tŒ]
! ]J]EP                  R7      tŽR R lt�R R lt�R R  lt‘R! R" lt’R# R$ lt“R% R& lt”R' R( lt•R) R* lt–R+ R, lt—R- R. lt˜R/ R0 lt™R1 R2 ltšR3 R4 lt›]œ! 4       t�] ^ k R5 R6 ltžR7 R8 ltŸR9 R: lt R; R< lt¡R= R> lt¢R? R@ lt£RA RB lt¤RC RD lt¥RE RF lt¦RG RH lt§RI RJ lt¨RK RL lt©RM RN ltª]«3RO RP llt¬RQ RR lt­RS RT lt®RU RV lt¯RW RX lt°RY RZ lt±R[ R\ lt²R] R^ lt³R_ R` lt´Ra Rb ltµ/ Rc]P¾                  bRd]Pî                  bRe]Pò                  bRf]PÂ                  bRg]PÎ                  bRh]Pþ                  bRi]Pš                  bRj]PÞ                  bRk]P–                  bRl]PÚ                  bRm]Pž                  bRn]Pâ                  bRo]EP                  bRp]EP                  bRq]PÆ                  bRr]Pö                  bRs]PÊ                  bRt]Pú                  Ru]EP                  Rv]EP
                  Rw]EP                  Rx]EP                  Ry]P¢                  Rz]Pæ                  R{]EPl                  R|]P¦                  R}]Pê                  /
Ct·R~ R lt¸R€ R� lt¹R‚ Rƒ ltºR„ R… lt»R† R‡ lt¼Rˆ R‰ lt½RŠ R‹ lt¾RŒ R� lt¿RŽ R� ltÀR� R‘ ltÁR’ R“ ltÂR” R• ltÃR– R— ltÄR˜ R™ ltÅRš R› ltÆRœ R� ltÇRž RŸ ltÈRÑR  R¡ lltÉR¢ R£ ltÊRÑR¤ R¥ lltËR¦ R§ ltÌ]¸tÍR¨ R© ltÎRª R« ltÏR¬R­R­R¬R®R¯R¯R®R°R°R±R±/tÐ] ^k R¬R²R®R³R°R´R±RµR­R¶R¯R·/tÑ] ^k R¸ R¹ ltÒRº R» ltÓR¼ R½ ltÔR¾ R¿ ltÕRÀ RÁ ltÖ]EP®                  ]EP°                  EP²                  ]EP´                  3tÛ] ^k RÂ RÃ ltÜ]Ý! 4       tÞ]tßRÄ RÅ ltàRÆ RÇ ltá]EPÄ                  ]EPÆ                  ]EPÈ                  3tåRÈ RÉ ltæRÊ RË ltçRÌ RÍ ltè]Þ3RÎ RÏ lltéR# )ÒaK  
Dynamo implementations of CPython's PyObject_* default slot algorithms.

Analogous to CPython's Objects/object.c, this module holds the general
dispatch machinery that is independent of any specific type.
Per-type hook implementations (nb_bool_impl, tp_richcompare_impl, tp_getattro_impl,
etc.) live in their respective VT files.
N)Ú	lru_cacheÚpartial)ÚNoReturnÚTYPE_CHECKING)Úget_type_slotsÚhas_slotÚPyMappingSlotsÚPyNumberSlotsÚPySequenceSlotsÚPyTypeSlots)Úgraph_break_hintsÚ	polyfillsÚ	variables)Úhandle_observed_exceptionÚObservedTypeErrorÚraise_observed_exceptionÚraise_type_errorÚUnhandledDescriptorErrorÚunimplemented)Ú
AttrSourceÚSource)Úistype)Ú#AsPythonConstantNotImplementedErrorÚAttrMutationKindÚmaybe_get_python_typeÚNO_SUCH_SUBOBJÚVariableTracker©ÚConstantVariable)ÚInstructionTranslatorBasec                ó4   € V ^8„  d   QhR\         R\         RR/# )é   ÚleftÚrightÚreturnúVariableTracker | None©r   )Úformats   "Úh/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/variables/object_protocol.pyÚ__annotate__r)   6   s&   € ÷ 7ñ 7Ü
ð7äð7ð ñ7ó    c                óP  € WJ d   \         P                  ! R4      # V P                  4       pVP                  4       pV\        JpV\        JpV'       d:   V'       d2   W#J d   \         P                  ! R4      # \         P                  ! R4      # WE8w  d   \         P                  ! R4      # ^RIHp ^RIHp ^RIH	p ^RI
Hp	 \        WWyV34      '       d   \         P                  ! R4      #  V P                  4       VP                  4       Jd   \         P                  ! R4      #  \        V \         P"                  4      '       dQ   \        V\         P"                  4      '       d1   V P$                  VP$                  Jd   \         P                  ! R4      # R#   \         d     Li ; i)z¼Try to determine Python identity (left is right) at trace time.

Returns ConstantVariable(True/False) if determinable, else None.
Mirrors the logic in BuiltinVariable's handle_is handler.
TF)ÚConstDictVariable)ÚListVariable)ÚTracebackVariable)ÚSetVariableN)r   ÚcreateÚget_real_python_backed_valuer   Údictsr,   Úlistsr-   Úmiscr.   Úsetsr/   Ú
isinstanceÚpython_typeÚNotImplementedErrorr   r   ÚExceptionVariableÚexc_type)
r"   r#   Úleft_valÚ	right_valÚ
left_knownÚright_knownr,   r-   r.   r/   s
   &&        r(   Úvt_identity_comparer?   6   sh  € ð ƒ}Ü×&Ò& tÓ,Ð,à×0Ñ0Ó2€HØ×2Ñ2Ó4€IØ¤Ð/€JØ¤>Ð1€Kç—kð Ó$ô ×#Ò# DÓ)ð	
ô "×(Ò(¨Ó/ð	
ð Ô Ü×&Ò& uÓ-Ð-õ )Ý#Ý'Ý!äØ ,Ð=NÐO÷ò ô  ×&Ò& uÓ-Ð-ðØ×ÑÓ U×%6Ñ%6Ó%8Ó8Ü#×*Ò*¨5Ó1Ð1ð 9ô 	ˆt”Y×0Ñ0×1Ò1Ü�5œ)×5Ñ5×6Ò6Ø�M‰M §¡Ó/ä×&Ò& uÓ-Ð-áøô ô Ùðús   Ã,7F ÆF%Æ$F%c          
      óL   € V ^8„  d   QhRRR\         R\         R\        R\        /# )r!   Útxr   ÚvÚwÚ	op_symbolr$   )r   Ústrr   )r'   s   "r(   r)   r)   p   s:   € ÷ 	ñ 	Ø#ð	äð	ô ð	ô ð		ô
 ñ	r*   c           
      ój   € \        V R V RVP                  4        RVP                  4        R24       R# )ú unsupported operand type(s) for ú: 'ú' and 'Ú'N)r   Úpython_type_name)rA   rB   rC   rD   s   &&&&r(   Úbinop_type_errorrL   p   s=   € ô Ø
Ø
*¨9¨+°S¸×9KÑ9KÓ9MÐ8NÈgÐVW×VhÑVhÓVjÐUkÐklÐmör*   é   )Úmaxsizec                óf   € V ^8„  d   QhR\         R\        \        \        \        \        3,          /# ©r!   Úobj_typer$   )ÚtypeÚtupleÚint)r'   s   "r(   r)   r)   }   s(   € ÷ $ñ $¤ð $¬¬s´C¼¼cÐ/AÕ)Bñ $r*   c                ó   € \        V 4      # )z'Get all type slots for a type (cached).)r   ©rQ   s   &r(   Ú_get_cached_slotsrW   |   s   € ô ˜(Ó#Ð#r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r!   rQ   Úslotr$   ©rR   rT   Úbool)r'   s   "r(   r)   r)   ‚   ó!   € ÷ %ñ %¤dð %´#ð %¼$ñ %r*   c                ó8   € \        V 4      w  p  p\        W!4      # )z4Check whether obj_type implements the given sq slot.©rW   r   )rQ   rZ   Ú	seq_slotsÚ_s   &&  r(   Útype_implements_sq_slotrb   ‚   s    € ä*¨8Ó4Ñ€Iˆq�!�QÜ�IÓ$Ð$r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# rY   r[   )r'   s   "r(   r)   r)   ˆ   r]   r*   c                ó6   € \        V 4      w  r# p\        W14      # )z4Check whether obj_type implements the given mp slot.r_   )rQ   rZ   ra   Ú	map_slotss   &&  r(   Útype_implements_mp_slotrf   ˆ   s   € ä*¨8Ó4Ñ€A�!�QÜ�IÓ$Ð$r*   )rZ   c                ó<   € V ^8„  d   QhR\         R\        R\        /# rY   r[   )r'   s   "r(   r)   r)   ¶   s!   € ÷ (ñ (¤dð (´#ð (¼$ñ (r*   c                ó6   € \        V 4      w   r#p\        W14      # )z.Check whether obj_type implements the nb slot.r_   )rQ   rZ   ra   Únumber_slotss   &&  r(   Útype_implements_nb_slotrj   ¶   s   € ä-¨hÓ7Ñ€A€q˜Ü�LÓ'Ð'r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   ©rR   r\   )r'   s   "r(   r)   r)     s   € ÷ 4ñ 4¤dð 4¬tñ 4r*   c                 óT   € \        V 4      w    r\        V\        P                  4      # ©N)rW   r   r   ÚTP_ITER©rQ   ra   Ú	type_slots   &  r(   Útype_implements_tp_iterrr     s&   € Ü*¨8Ó4Ñ€A€qˆ!Ü�Iœ{×2Ñ2Ó3Ð3r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)     s   € ÷ 8ñ 8¬$ð 8´4ñ 8r*   c                 óT   € \        V 4      w    r\        V\        P                  4      # rn   )rW   r   r   ÚTP_ITERNEXTrp   s   &  r(   Útype_implements_tp_iternextrv     s&   € Ü*¨8Ó4Ñ€A€qˆ!Ü�Iœ{×6Ñ6Ó7Ð7r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)     ó   € ÷ 4ñ 4¤dð 4¬tñ 4r*   c                óT   € \        V 4      w    r\        V\        P                  4      # )z3Check whether obj_type implements the tp_repr slot.)rW   r   r   ÚTP_REPRrp   s   &  r(   Útype_implements_tp_reprr{     ó&   € ä*¨8Ó4Ñ€A€qˆ!Ü�Iœ{×2Ñ2Ó3Ð3r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)   "  s   € ÷ 3ñ 3¤Tð 3¬dñ 3r*   c                óT   € \        V 4      w    r\        V\        P                  4      # )z2Check whether obj_type implements the tp_str slot.)rW   r   r   ÚTP_STRrp   s   &  r(   Útype_implements_tp_strr€   "  s&   € ä*¨8Ó4Ñ€A€qˆ!Ü�Iœ{×1Ñ1Ó2Ð2r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)   (  rx   r*   c                óT   € \        V 4      w    r\        V\        P                  4      # )z3Check whether obj_type implements the tp_call slot.)rW   r   r   ÚTP_CALLrp   s   &  r(   Útype_implements_tp_callr„   (  r|   r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)   .  s   € ÷ 1ñ 1œ4ð 1¤Dñ 1r*   c                 ó   € \        V 4      # rn   )rv   rV   s   &r(   Úpyiter_checkr‡   .  s   € ô ' xÓ0Ð0r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)   5  s   € ÷ -ñ -œtð -¬ñ -r*   c                óH   € \        V \        4      '       d   R# \        V 4      # )zBImplements PySequence_Check semantics for VariableTracker objects.F)Ú
issubclassÚdictÚtype_implements_sq_itemrV   s   &r(   Úpysequence_checkr�   5  s   € ô �(œD×!Ò!ÙÜ" 8Ó,Ð,r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)   =  s   € ÷ .ñ .œDð .¤Tñ .r*   c                ó   € \        V 4      # )z@Implements _PyIndex_Check semantics for VariableTracker objects.)Útype_implements_nb_indexrV   s   &r(   Úpyindex_checkr‘   =  s   € ô $ HÓ-Ð-r*   c                ó0   € V ^8„  d   QhR\         R\        /# rP   rl   )r'   s   "r(   r)   r)   C  s   € ÷ -ñ -œtð -¬ñ -r*   c                ó   € \        V 4      # )zóImplements PyCallable_Check: type(x)->tp_call != NULL.

obj_type is the object's Python type (Py_TYPE(x)); a non-NULL tp_call
slot on it means instances are callable.

ref: https://github.com/python/cpython/blob/v3.13.0/Objects/call.c#L52-L57
)r„   rV   s   &r(   Úpycallable_checkr”   C  s   € ô # 8Ó,Ð,r*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   Úiter_Úargr$   r&   )r'   s   "r(   r)   r)   N  s,   € ÷ 8ñ 8Ø#ð8Ü,;ð8ÜBQð8äñ8r*   c                óš   € VP                   pVP                  4       '       d   Ve   VP                  V 4      # VP                  V RV./ 4      # )z³Implements PyIter_Send semantics for VariableTracker objects.

ref: https://github.com/python/cpython/blob/51b511d7299f91a458e40d1ea997bd7e6cd3deef/Objects/abstract.c#L2930-L2953
Úsend)Útp_iternextÚis_constant_noneÚtp_iternext_implÚcall_method)rA   r–   r—   rš   s   &&& r(   Úpyiter_sendrž   N  sM   € ð ×#Ñ#€KØ
×Ñ×Ò +Ò"9Ø×%Ñ% bÓ)Ð)à× Ñ   V¨c¨U°BÓ7Ð7r*   c                ó$   € V ^8„  d   QhRRRRRR/# ©r!   rA   r   Úobjr   r$   © )r'   s   "r(   r)   r)   ]  s)   € ÷ 
Rñ 
RØ#ð
RØ*;ð
Ràñ
Rr*   c                 ó  € VP                   P                  '       d   VP                  V 4      # VP                  P                  e   \        WP                  4        R24       \        V RVP                  4        R24       R # )Nz is not a mappingzobject of type z has no len())Útp_as_mappingÚ	mp_lengthÚmp_length_implÚtp_as_sequenceÚ	sq_lengthr   rK   ©rA   r¡   s   &&r(   Úpymapping_sizerª   ]  sp   € ð ×Ñ×"×"Ð"Ø×!Ñ! "Ó%Ð%à
×Ñ×#Ñ#Ò/Ü˜× 4Ñ 4Ó 6Ð7Ð7HÐIÔJä�R˜?¨3×+?Ñ+?Ó+AÐ*BÀ-ÐPÖQr*   c                ó$   € V ^8„  d   QhRRRRRR/# r    r¢   )r'   s   "r(   r)   r)   j  s$   € ÷ #ñ #Ø#ð#Ø*;ð#àñ#r*   c                ór   € VP                   P                  '       d   VP                  V 4      # \        W4      # )z§
Implements PyObject_Size/PyObject_Length semantics for VariableTracker objects.
Dispatches to sq_length (sequences) or mp_length (mappings) depending on the VT type.
)r§   r¨   Úsq_length_implrª   r©   s   &&r(   Úgeneric_sizer®   j  s2   € ð ×Ñ×#×#Ð#Ø×!Ñ! "Ó%Ð%Ü˜"Ó"Ð"r*   c                ó4   € V ^8„  d   QhRRR\         R\         /# ©r!   rA   r   r¡   r$   r&   )r'   s   "r(   r)   r)   x  s$   € ÷ %)ñ %)Ø#ð%)Ü*9ð%)äñ%)r*   c                óÊ  € ^RI Hp VP                  4       '       d+    VP                  ! \	        VP                  4       4      4      # VP                  P                  '       d   VP                  V 4      pVe   V#  \        W4      p^RIHp \!        WV4      '       d#   VP                  WP#                  4       ^ 8„  4      # VP                  4       pV^ 8  d   \        \$        V R.R7       VP                  ! V^ 8„  4      #   \         d,   p\        \        T4      T \        T4      .R7        Rp?LèRp?ii ; i  \&         d    \)        T 4        Mi ; iTP                  ! R4      # )u·   Mirrors PyObject_IsTrue.

https://github.com/python/cpython/blob/c09ccd9c429/Objects/object.c#L2135-L2158

Resolution order: constants â†’ nb_bool â†’ mp_length/sq_length â†’ truthy.
r   ©ÚargsN©ÚSymNodeVariablez__len__() should return >= 0T)Úconstantr   Úis_python_constantr0   r\   Úas_python_constantÚ	Exceptionr   rR   rE   Útp_as_numberÚnb_boolÚnb_bool_implr®   Útensorrµ   r6   Úas_proxyÚ
ValueErrorr   r   )rA   r¡   r   ÚeÚresultÚlengthrµ   Ú
length_vals   &&      r(   Úgeneric_is_truerÄ   x  s;  € õ +à
×Ñ×Òð	AØ#×*Ò*¬4°×0FÑ0FÓ0HÓ+IÓJÐJð ×Ñ××ÐØ×!Ñ! "Ó%ˆØÒØˆMð&Ü˜bÓ&ˆÝ+ä�f×.Ò.Ø"×)Ñ)¨"¯o©oÓ.?À!Ñ.CÓDÐDØ×.Ñ.Ó0ˆ
Ø˜Œ>Ü$Ü˜BÐ&DÐ%Eõð  ×&Ò& z°A¡~Ó6Ð6øô' ô 	AÜ$¤T¨!£W¨b¼¸A»°x×@Ò@ûð	Aûô( ô &Ü! "Ö%ð&úð ×"Ò" 4Ó(Ð(s0   ž(C> Á;AD7 Â?>D7 Ã>D4Ä	!D/Ä/D4Ä7EÅEc                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   £  s)   € ÷ Sñ SØ#ðSÜ*9ðSäñSr*   c                ó¦  € \        V4      pVP                  pVeþ   \        V4      pV\        9   dE   \        R\
        R\        P                  R/p\        P                  ! VP                  VR4      4      # \        P                  V4        VP                  V 4      p\        P                  V4       \        V4      p\        V\        4      '       gE   \         P"                  R
8¼  d   VP%                  4        R2pMRVP&                   R2p\)        W4       V# \)        V RVP+                  4        R	24       R#   \        P                  T4       i ; i)zÓMirrors PyObject_Repr with Py_ReprEnter/Py_ReprLeave cycle detection.

https://github.com/python/cpython/blob/v3.13.3/Objects/object.c#L745-L778

Resolution order: tp_repr -> TypeError if the result is not str.
Nz[...]z{...}z...z&.__repr__() must return a str, not intz#__repr__ returned non-string (type Ú)zobject of type 'z' has no repr©é   é   )r   Útp_reprÚidÚ_repr_runningÚlistr‹   ÚcollectionsÚdequer   r0   ÚgetÚaddÚtp_repr_implÚdiscardrŠ   rE   ÚsysÚversion_infoÚpython_qualified_nameÚ__name__r   rK   )	rA   r¡   rQ   rË   Úobj_idÚsentinelrÁ   Úresult_typeÚerr_strs	   &&       r(   Úgeneric_reprrÝ   £  s"  € ô % SÓ)€Hà�k‰k€GØÒÜ�C“ˆØ”]Ô"Ü˜g¤t¨W´k×6GÑ6GÈÐQˆHÜ#×*Ò*¨8¯<©<¸À%Ó+HÓIÐIÜ×Ñ˜&Ô!ð	*Ø×%Ñ% bÓ)ˆFä×!Ñ! &Ô)Ü+¨FÓ3ˆÜ˜+¤s×+Ò+Ü×Ñ 7Ô*Ø ×6Ñ6Ó8Ð9Ð9_Ð`‘à?À×@TÑ@TÐ?UÐUVÐW�Ü˜RÔ)Øˆä�RÐ+¨C×,@Ñ,@Ó,BÐ+CÀ=ÐQÖRøô ×!Ñ! &Õ)ús   ÂD9 Ä9Ec                ó$   € V ^8„  d   QhRRRRRR/# r    r¢   )r'   s   "r(   r)   r)   Å  s$   € ÷ ñ Ø#ðØ*;ðàñr*   c                óh  € ^RI Hp \        V4      \        J d   V#  VP                  '       d:   \        V4      P                  \        P                  Jd   VP                  V 4      pM\        W4      p \        X4      p\        V\        4      '       gU   \        P                  R8¼  d%   VP!                  4        RVP!                  4        2pMRVP"                   R2p\%        W4       V#   T d    h \         d5   p\        \        T4      T \        TP                  4      R7        Rp?L¸Rp?ii ; i)zÈMirrors PyObject_Str semantics in Dynamo.

https://github.com/python/cpython/blob/v3.13.3/Objects/object.c#L781-L829

Resolution order: str identity check -> tp_str (tp_str_impl) -> tp_repr fallback.
)ÚTorchDynamoExceptionr²   Nz".__str__() must return a str, not z"__str__ returned non-string (type rÇ   rÈ   )Úexcrà   r   rE   Útp_strrR   Útp_str_implr   rÝ   r¹   r   rÎ   r³   rŠ   rÕ   rÖ   r×   rØ   r   )rA   r¡   rà   rÁ   rá   rÛ   rÜ   s   &&     r(   Úgeneric_strrä   Å  s  € õ +ä˜SÓ!¤SÓ(Øˆ
ðEØ�:�:ˆ:œ$˜s›)×/Ñ/´×7RÑ7RÓRØ—_‘_ RÓ(‰Fä! "Ó*‰Fô (¨Ó/€KÜ�k¤3×'Ò'Ü×Ñ˜wÔ&Ø×2Ñ2Ó4Ð5Ð5WÐX^×XtÑXtÓXvÐWwÐx‰Gà:¸;×;OÑ;OÐ:PÐPQÐRˆGÜ˜Ô%Ø€Møð  ô ØÜô EÜ ¤ c£¨B´T¸#¿(¹(³^×DÒDûðEús(   �C+ ¯8C+ Á(C+ Ã+D1Ã<D1Ã=*D,Ä,D1c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   r¡   Úkeyr$   r&   )r'   s   "r(   r)   r)   ç  s6   € ÷ (Oñ (OØ#ð(Oä	ð(Oô 
ð(Oô ñ	(Or*   c                óâ  € \        V4      pVP                  P                  '       d   VP                  W4      # VP                  P
                  e^   \        V4      p\        V4      '       d   \        W\        4      p\        WV4      # \        V VP                   RVP                   24       \        V\        4      '       d   VP                  W4      # \        V RVP                   R24       R# )uŒ  CPython's PyObject_GetItem â€” dispatch to the type's mp_subscript/sq_item.

PyObject_GetItem: https://github.com/python/cpython/blob/62a6e898e01/Objects/abstract.c#L155-L206

CPython checks three branches in order:
  1. tp_as_mapping->mp_subscript  (L161-166)
  2. tp_as_sequence->sq_item      (L168-181) â€” only if key passes _PyIndex_Check
  3. PyType_Check(o)              (L183-203) â€” type[int] â†’ GenericAlias/__class_getitem__

Branch 1 is the common path (list, tuple, dict, range all have mp_subscript).
Branch 2 fires for types with only sq_item (e.g. deque).
Branch 3 delegates to mp_subscript_impl for type objects (__class_getitem__).
Nz indices must be integers, not rJ   z' object is not subscriptable)r   r¤   Úmp_subscriptÚmp_subscript_implr§   Úsq_itemr‘   Úpynumber_as_ssize_tÚ
IndexErrorÚpysequence_getitemr   rØ   rŠ   rR   )rA   r¡   ræ   rQ   Úkey_types   &&&  r(   Úgeneric_getitemrï   ç  sÖ   € ô$ % SÓ)€Hà
×Ñ×%×%Ð%Ø×$Ñ$ RÓ-Ð-ð ×Ñ×!Ñ!Ò-Ü(¨Ó-ˆÜ˜×"Ò"Ü% b¬zÓ:ˆCÜ% b¨sÓ3Ð3ÜØØ× Ñ Ð!Ð!@À×ARÑARÐ@SÐTô	
ô �(œD×!Ò!Ø×$Ñ$ RÓ-Ð-ä�R˜1˜X×.Ñ.Ð/Ð/LÐMÖNr*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   r¡   Úindexr$   r&   )r'   s   "r(   r)   r)     s6   € ÷ Yñ YØ#ðYä	ðYô ðYô ñ	Yr*   c                ó0  € VP                   P                  pVe¨   \        V\        4      '       d�   VP	                  4       p\        V\
        4      '       d[   V^ 8  dT   VP                   P                  e<   VP                  V 4      p\        P                  ! WEP	                  4       ,           4      pVP                  W4      # VP                  P                  e   \        V RVP                  4        R24       \        V RVP                  4        R24       R# )u9  CPython's PySequence_GetItem â€” always sq_item, never mp_subscript.

ref: https://github.com/python/cpython/blob/v3.13.3/Objects/abstract.c#L1874-L1902

Called by PyObject_GetItem branch 2, reversed() fallback, and the old
iteration protocol.  Wraps negative indices via sq_length before
dispatching to sq_item.
NrJ   ú' is not a sequencez"' object does not support indexing)r§   rê   r6   r   r¸   rT   r¨   r­   r0   Úsq_item_implr¤   rè   r   rK   )rA   r¡   rñ   rê   Ú	index_valrÂ   s   &&&   r(   rí   rí     sì   € ð × Ñ ×(Ñ(€GØÒä�eÔ-×.Ò.Ø×0Ñ0Ó2ˆIÜ˜)¤S×)Ò)¨i¸!¬mØ×%Ñ%×/Ñ/Ò;Ø ×/Ñ/°Ó3�FÜ,×3Ò3Ø!×$=Ñ$=Ó$?Õ?ó�Eð ×Ñ Ó*Ð*à
×Ñ×%Ñ%Ò1Ü˜˜q ×!5Ñ!5Ó!7Ð 8Ð8KÐLÔMä�R˜1˜S×1Ñ1Ó3Ð4Ð4VÐWÖXr*   c          
      óL   € V ^8„  d   QhRRR\         R\         R\         R\         /# )r!   rA   r   ÚsÚiÚor$   r&   )r'   s   "r(   r)   r)   2  s:   € ÷ ñ Ø#ðäðô ðô ð	ô
 ñr*   c                 ó2  € VP                   P                  pVe©   \        V\        4      '       d�   VP	                  4       p\        V\
        4      '       d[   V^ 8  dT   VP                   P                  e<   VP                  V 4      p\        P                  ! WVP	                  4       ,           4      pVP                  WV4      # VP                  P                  e   \        V RVP                  4        R24       \        V RVP                  4        R24       R # )NrJ   ró   ú)' object does not support item assignment)r§   Úsq_ass_itemr6   r   r¸   rT   r¨   r­   r0   Úsq_ass_item_implr¤   Úmp_ass_subscriptr   rK   )rA   r÷   rø   rù   rü   rõ   rÂ   s   &&&&   r(   Úpysequence_setitemrÿ   2  sê   € ð ×"Ñ"×.Ñ.€KØÒä�aÔ)×*Ò*Ø×,Ñ,Ó.ˆIÜ˜)¤S×)Ò)¨i¸!¬mØ×#Ñ#×-Ñ-Ò9Ø×-Ñ-¨bÓ1�FÜ(×/Ò/°	×<UÑ<UÓ<WÕ0WÓX�AØ×!Ñ! "¨Ó+Ð+à‡�×'Ñ'Ò3Ü˜˜q ×!3Ñ!3Ó!5Ð 6Ð6IÐJÔKäØ
ˆa�×"Ñ"Ó$Ð%Ð%NÐOör*   c          
      óL   € V ^8„  d   QhRRR\         R\         R\         R\         /# )r!   rA   r   rù   ræ   Úvaluer$   r&   )r'   s   "r(   r)   r)   L  s:   € ÷ ñ Ø#ðäðô 
ðô ð	ô
 ñr*   c                 óx  € VP                   P                  pVe   VP                  WV4      # VP                  P                  eX   \        V4      p\        V4      '       d   \        W\        R7      p\        WWc4      # \        V RVP                  4        R24       \        V RVP                  4        R24       R # )N©Úerrz%sequence index must be integer, not 'rJ   rû   )r¤   rþ   Úmp_ass_subscript_implr§   rü   r   r‘   rë   rì   rÿ   r   rK   )rA   rù   ræ   r  rþ   rî   Ú	key_values   &&&&   r(   Úgeneric_setitemr  L  s±   € ð —‘×7Ñ7ÐØÒ#Ø×&Ñ& r°Ó6Ð6à×Ñ×#Ñ#Ò/Ü(¨Ó-ˆÜ˜×"Ò"Ü+¨B¼ÔDˆIÜ% b¨YÓ>Ð>ÜØÐ7¸×8LÑ8LÓ8NÐ7OÈqÐQô	
ô Ø
ˆa�×"Ñ"Ó$Ð%Ð%NÐOör*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   r÷   rø   r$   r&   )r'   s   "r(   r)   r)   d  s0   € ÷ ñ Ø#ðäðô ðô ñ	r*   c                 óÊ  € VP                   P                  pVeu   \        V\        4      '       dM   VP	                  4       pV^ 8  d6   VP                   P
                  e   VP                  V 4      p\        WV4      pVP                  WR 4      # VP                  P                  e   \        V RVP                  4        R24       \        V RVP                  4        R24       R # )NrJ   ró   z'' object does not support item deletion)r§   rü   r6   r   r¸   r¨   r­   Úpynumber_addrý   r¤   rþ   r   rK   )rA   r÷   rø   rü   ÚidxrÂ   s   &&&   r(   Úpysequence_delitemr  d  sÎ   € ð ×"Ñ"×.Ñ.€KØÒÜ�aÔ)×*Ò*Ø×&Ñ&Ó(ˆCØ�QŒwØ×#Ñ#×-Ñ-Ò9Ø×-Ñ-¨bÓ1�FÜ$ R¨FÓ3�AØ×!Ñ! "¨Ó.Ð.à‡�×'Ñ'Ò3Ü˜˜q ×!3Ñ!3Ó!5Ð 6Ð6IÐJÔKäØ
ˆa�×"Ñ"Ó$Ð%Ð%LÐMör*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   rù   ræ   r$   r&   )r'   s   "r(   r)   r)   }  s6   € ÷ Uñ UØ#ðUäðUô 
ðUô ñ	Ur*   c                 óv  € VP                   P                  pVe   VP                  WR 4      # \        V4      p\	        V4      '       d   VP                  V 4      p\        WV4      # VP                  P                  e   \        V RVP                  4        24       \        V RVP                  4        R24       R # )Nz$sequence index must be integer, not rJ   z ' does not support item deletion)r¤   rþ   r  r   r‘   Únb_index_implr  r§   rü   r   rK   )rA   rù   ræ   rþ   rî   r  s   &&&   r(   Úgeneric_delitemr  }  s°   € ð —‘×7Ñ7ÐØÒ#Ø×&Ñ& r°Ó5Ð5ä$ SÓ)€HÜ�X×ÒØ×%Ñ% bÓ)ˆ	Ü! "¨Ó3Ð3Ø	
×	Ñ	×	%Ñ	%Ò	1ÜØÐ6°s×7KÑ7KÓ7MÐ6NÐOô	
ô �R˜1˜Q×/Ñ/Ó1Ð2Ð2RÐSÖTr*   c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   ”  s$   € ÷ +ñ +Ø#ð+Ü*9ð+äñ+r*   c                ón  € ^RI Hp VP                  4       '       dN   \        VP	                  4       \
        4      '       d*   VP                  ! \        VP	                  4       4      4      # VP                  P                  eJ   VP                  V 4      pVP                  4       \
        Jd   \        V RVP                  4        R24       V# VP                  P                  e   VP                  V 4      # VP                  4       '       dZ   \        VP	                  4       \        \         \"        34      '       d+    VP                  ! \        VP	                  4       4      4      # \        V RVP                  4        R24       R#   \$         d'   p\'        \$        T \        T4      .R7        Rp?LLRp?ii ; i)uÈ   Mirrors PyNumber_Long (int(x) dispatch).

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1520-L1632

Resolution: nb_int â†’ nb_index â†’ str/bytes/bytearray parsing â†’ TypeError.
r   Nz__int__ returned non-int (type rÇ   r²   zLint() argument must be a string, a bytes-like object or a real number, not 'rJ   )r¶   r   r·   r6   r¸   rT   r0   rº   Únb_intÚnb_int_implr7   r   rK   Únb_indexr  rE   ÚbytesÚ	bytearrayr¿   r   ©rA   r¡   r   ÚresrÀ   s   &&   r(   Úpynumber_intr  ”  sn  € õ +ð
 ×Ñ×Ò¤J¨s×/EÑ/EÓ/GÌ×$MÒ$MØ×&Ò&¤s¨3×+AÑ+AÓ+CÓ'DÓEÐEà
×Ñ×ÑÒ*Ø�o‰o˜bÓ!ˆØ�?‰?Ó¤CÓ'ÜØØ1°#×2FÑ2FÓ2HÐ1IÈÐKôð ˆ
à
×Ñ× Ñ Ò,Ø× Ñ  Ó$Ð$ð ×Ñ×Ò¤JØ×ÑÓ ¤3¬¬yÐ"9÷%ò %ð	DØ#×*Ò*¬3¨s×/EÑ/EÓ/GÓ+HÓIÐIô Ø
ð"Ø"%×"6Ñ"6Ó"8Ð!9¸ð	<öøô ô 	DÜ$¤Z°¼3¸q»6¸(×CÒCûð	Dús   Ä:(F ÆF4ÆF/Æ/F4c          	      óN   € V ^8„  d   QhRRR\         R\         R\         R,          /# )r!   rA   r   ÚxÚobaser$   Nr&   )r'   s   "r(   r)   r)   Â  s7   € ÷ $Dñ $DØ#ð$DÜ(7ð$DÜ@Oð$Dä�tÕñ$Dr*   c                óZ  € VP                  4       '       d(   \        VP                  4       \        4      '       d   TpMHVP                  P
                  e   VP                  V 4      pM\        V RVP                  4        R24       XP                  4       '       d%   \        VP                  4       \        4      '       g   R# VP                  4       pV^ 8w  d   V^8  g   V^$8”  d   \        \        V R.R7       VP                  4       '       g   R# VP                  4       p\        V\        \        \        34      '       g   \        V R4        \         P"                  ! \        WT4      4      #   \         d1   p\        \        T \%        TP&                  4      R7        Rp?R# Rp?ii ; i)aV  Mirrors the explicit-base path of long_new_impl (int(x, base)).

https://github.com/python/cpython/blob/v3.13.0/Objects/longobject.c#L5879-L5922

The base is resolved via PyNumber_AsSsize_t, which consults __index__, so
any __index__-able object is accepted. Returns None (graph break) when the
inputs cannot be resolved to Python constants.
NrJ   ú,' object cannot be interpreted as an integerz'int() base must be >= 2 and <= 36, or 0r²   z1int() can't convert non-string with explicit base)r·   rŠ   r7   rT   rº   r  r  r   rK   r¸   r   r¿   r6   rE   r  r  r   r0   rÎ   r³   )rA   r  r  Úbase_vtÚbaseÚxvalrÀ   s   &&&    r(   Úpylong_from_baser#  Â  sS  € ð ×Ñ×!Ò!¤j°×1BÑ1BÓ1DÄc×&JÒ&JØ‰Ø	×	Ñ	×	$Ñ	$Ò	0Ø×%Ñ% bÓ)‰äØØ�×&Ñ&Ó(Ð)Ð)UÐVô	
ð ×&Ñ&×(Ò(¬Z¸×8KÑ8KÓ8MÌs×-SÒ-SÙØ×%Ñ%Ó'€DØ�Œ	�d˜Q”h 4¨"¤9Ü Ü˜Ð"KÐ!Lõ	
ð ×Ñ×!Ò!ÙØ×ÑÓ!€DÜ�dœS¤%¬Ð3×4Ò4Ü˜ÐPÔQðDÜ×&Ò&¤s¨4£Ó7Ð7øÜô DÜ ¤¨R´d¸1¿6¹6³l×CÓCûðDús   ÅE/ Å/F*Å:%F%Æ%F*c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   é  s$   € ÷ *ñ *Ø#ð*Ü*9ð*äñ*r*   c                ó8  € ^RI Hp VP                  4       '       dN   \        VP	                  4       \
        4      '       d*   VP                  ! \        VP	                  4       4      4      # VP                  P                  eJ   VP                  V 4      pVP                  4       \
        Jd   \        V RVP                  4        R24       V# VP                  P                  e   VP                  V 4      # \        VP                  4       \         \"        34      '       d+    VP                  ! \        VP	                  4       4      4      # \        V RVP                  4        R24       R#   \$         d'   p\'        \$        T \!        T4      .R7        Rp?LLRp?ii ; i)u½   Mirrors PyNumber_Float (float(x) dispatch).

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1635-L1692

Resolution: nb_float â†’ nb_index â†’ str parsing â†’ TypeError.
r   Nz#__float__ returned non-float (type rÇ   r²   z9float() argument must be a string or a real number, not 'rJ   )r¶   r   r·   r6   r¸   Úfloatr0   rº   Únb_floatÚnb_float_implr7   r   rK   r  r  rŠ   rE   r  r¿   r   r  s   &&   r(   Úpynumber_floatr)  é  sZ  € õ +ð
 ×Ñ×Ò¤J¨s×/EÑ/EÓ/GÌ×$OÒ$OØ×&Ò&¤u¨S×-CÑ-CÓ-EÓ'FÓGÐGà
×Ñ× Ñ Ò,Ø×Ñ Ó#ˆØ�?‰?Ó¤EÓ)ÜØØ5°c×6JÑ6JÓ6LÐ5MÈQÐOôð ˆ
ð ×Ñ× Ñ Ò,Ø× Ñ  Ó$Ð$ô �#—/‘/Ó#¤c¬5 \×2Ò2ð	DØ#×*Ò*¬5°×1GÑ1GÓ1IÓ+JÓKÐKô Ø
ðØ×$Ñ$Ó&Ð' qð	*öøô ô 	DÜ$¤Z°¼3¸q»6¸(×CÒCûð	Dús   Ä(E( Å(FÅ3FÆFc                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   r¡   r—   r$   r&   )r'   s   "r(   r)   r)     s0   € ÷ ñ Ø#ðä	ðô 
ðô ñ	r*   c                óÄ   € \        V4      p\        W\        R7      pVP                  4       ^ 8  d/   \	        V4      '       d   VP                  V 4      p\        WV4      pV# )zVMirrors typeobject.c::getindex: calls PyNumber_AsSsize_t then tp_as_sequence.sq_lengthr  )r   rë   ÚOverflowErrorr¸   Útype_implements_sq_lengthr­   r
  )rA   r¡   r—   rQ   rø   rÂ   s   &&&   r(   Úgetindexr.    sW   € ô % SÓ)€Hä˜B¬Ô7€AØ×ÑÓ Ô!Ü$ X×.Ò.Ø×'Ñ'¨Ó+ˆFÜ˜R FÓ+ˆAØ€Hr*   c                ó4   € V ^8„  d   QhRRR\         R\        /# r°   ©r   rT   )r'   s   "r(   r)   r)   &  s#   € ÷ ñ Ð5ð ¼Oð ÔPSñ r*   c                ó  € \        VP                  4       \        4      '       g   \        V R4       VP	                  4       p\
        P                  ) ^,
          Tu;8:  d   \
        P                  8:  g   M \        \        V R.R7       V# )zÝMirrors PyLong_AsSsize_t: requires an int (or subclass).
values outside the Py_ssize_t range raise OverflowError.

https://github.com/python/cpython/blob/60403a5409ff2c3f3b07dd2ca91a7a3e096839c7/Objects/longobject.c#L576
zan integer is requiredz,Python int too large to convert to C ssize_tr²   )	rŠ   r7   rT   r   r¸   rÕ   rN   r   r,  )rA   r¡   Úvals   && r(   Úpylong_as_ssize_tr3  &  sh   € ô �c—o‘oÓ'¬×-Ò-Ü˜Ð5Ô6Ø
×
 Ñ
 Ó
"€CÜ�K‰Kˆ<˜!Õ˜sÖ1¤c§k¡kÖ1Ü ÜØØ@ÐAõ	
ð
 €Jr*   c                ód   € V ^8„  d   QhRRR\         R\        \        ,          R,          R\         /# )r!   rA   r   Úitemr  Nr$   )r   rR   r¹   )r'   s   "r(   r)   r)   :  s9   € ÷ #ñ #Ø#ð#ä
ð#ô 
Œi�˜4Õ	ð#ô ñ	#r*   c                ób  € ^RI Hp \        W4      p\        WC4      '       d   VP	                  V P
                  4      pMVP                  4       p\        V\        4      '       g   \        R4      h\        P                  ) ^,
          Tu;8:  d   \        P                  8:  d#   M M\        P                  ! \        V4      4      # VfF   V^ 8”  d   \        P                  M\        P                  ) ^,
          p\        P                  ! V4      # \        VV RVP                  4        R2.R7       R# )aD  Mirrors PyNumber_AsSsize_t: _PyNumber_Index(item) then PyLong_AsSsize_t.

On overflow (value outside the Py_ssize_t range) CPython remaps the
OverflowError to `err`, or clips to the Py_ssize_t bounds when err is None.

https://github.com/python/cpython/blob/60403a5409ff2c3f3b07dd2ca91a7a3e096839c7/Objects/abstract.c#L1469
r´   z/pynumber_index did not return an int-like valueNzcannot fit 'z' into an index-sized integerr²   )r½   rµ   Úpynumber_indexr6   Úevaluate_exprÚoutputr¸   rT   ÚAssertionErrorrÕ   rN   r   r0   r   rK   )rA   r5  r  rµ   r  r2  Úrs   &&&    r(   rë   rë   :  sä   € õ (ä˜2Ó$€Eô �%×)Ò)Ø×!Ñ! "§)¡)Ó,‰à×&Ñ&Ó(ˆä�cœ3×ÒÜÐNÓOÐOä�‰€|�aÕ˜3Ö-¤#§+¡+×-Ü×&Ò&¤s¨3£xÓ0Ð0Ø
‚{Ø œ7ŒC�KŠK¬¯©¨°qÕ(8ˆÜ×&Ò& qÓ)Ð)ÜØØ
Ø˜T×2Ñ2Ó4Ð5Ð5RÐSÐT÷r*   c                ó,   € V ^8„  d   QhRRR\         RR/# ©r!   rA   r   r¡   r$   r   r&   )r'   s   "r(   r)   r)   `  s$   € ÷ ñ Ø#ðÜ*9ðàñr*   c                ó  € VP                   P                  f   \        V RVP                  4        R24       VP	                  V 4      p\        VP                  4       \        4      '       g   \        V RVP                  4        R24       V# )z+Mirrors PyNumber_Index (index(x) dispatch).rJ   r  z!__index__ returned non-int (type rÇ   )rº   r  r   rK   r  rŠ   r7   rT   )rA   r¡   rÁ   s   && r(   r7  r7  `  sˆ   € ð
 ×Ñ× Ñ Ò(ÜØØ�×$Ñ$Ó&Ð'Ð'SÐTô	
ð
 ×Ñ˜rÓ"€Fä�f×(Ñ(Ó*¬C×0Ò0ÜØØ/°×0GÑ0GÓ0IÐ/JÈ!ÐLô	
ð
 €Mr*   c          	      óN   € V ^8„  d   QhRRR\         R\        R\         R,          /# )r!   rA   r   r¡   r!  r$   Nr0  )r'   s   "r(   r)   r)   v  s7   € ÷ Jñ JØ#ðJÜ*9ðJÜADðJä�tÕñJr*   c                ó¢   € \        W4      p^\        ^\        ^\        /V,          p\        P
                  ! V! VP                  4       4      4      # )a3  Mirrors PyNumber_ToBase (bin/oct/hex dispatch).

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1653-L1666

Resolves __index__ (raising TypeError if absent), then formats the
resulting int in the requested base. Returns None (graph break) when the
index result is not a Python constant.
)r7  ÚbinÚoctÚhexr   r0   r¸   )rA   r¡   r!  rñ   Ú	format_fns   &&&  r(   Úpynumber_tobaserE  v  sD   € ô ˜2Ó#€EØ”C˜œC ¤SÐ)¨$Õ/€IÜ×"Ò"¡9¨U×-EÑ-EÓ-GÓ#HÓIÐIr*   c                ó,   € V ^8„  d   QhRRR\         RR/# r=  r&   )r'   s   "r(   r)   r)   †  s$   € ÷ $ñ $Ø#ð$Ü*9ð$àñ$r*   c                ó€   € VP                   pVf   \        V RVP                  4        R24       VP                  V 4      # )a#  
Implements PyIter_Next / tp_iternext semantics for VariableTracker objects.

Calls obj.tp_iternext_impl(tx) if the object is an iterator, otherwise raises
TypeError. StopIteration propagation is left to the caller (mirrors
CPython's iternext contract where NULL return signals exhaustion).
zexpected an iterator, got 'rJ   )rš   r   rK   rœ   )rA   r¡   rš   s   && r(   Úpyiter_nextrH  †  sC   € ð —/‘/€KØÒÜ˜Ð:¸3×;OÑ;OÓ;QÐ:RÐRSÐTÔUà×Ñ Ó#Ð#r*   c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   ™  ó$   € ÷ ñ Ø#ðÜ*9ðäñr*   c                ó˜   € VP                   P                  pVe   VP                  V 4      # \        V RVP	                  4        R24       R# )zÓMirrors PyNumber_Negative.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1392

Algorithm:
1. If type has nb_negative slot, call obj.nb_negative_impl(tx)
2. Otherwise, raise TypeError
Nzbad operand type for unary -: 'rJ   )rº   Únb_negativeÚnb_negative_implr   rK   )rA   r¡   rL  s   && r(   Úpynumber_negativerN  ™  óM   € ð ×"Ñ"×.Ñ.€KØÒØ×#Ñ# BÓ'Ð'äØ
Ø
)¨#×*>Ñ*>Ó*@Ð)AÀÐCör*   c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   ¯  rJ  r*   c                ó˜   € VP                   P                  pVe   VP                  V 4      # \        V RVP	                  4        R24       R# )zÓMirrors PyNumber_Positive.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1393

Algorithm:
1. If type has nb_positive slot, call obj.nb_positive_impl(tx)
2. Otherwise, raise TypeError
Nzbad operand type for unary +: 'rJ   )rº   Únb_positiveÚnb_positive_implr   rK   )rA   r¡   rR  s   && r(   Úpynumber_positiverT  ¯  rO  r*   c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   Å  rJ  r*   c                ó˜   € VP                   P                  pVe   VP                  V 4      # \        V RVP	                  4        R24       R# )zÓMirrors PyNumber_Absolute.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1395

Algorithm:
1. If type has nb_absolute slot, call obj.nb_absolute_impl(tx)
2. Otherwise, raise TypeError
Nzbad operand type for abs(): 'rJ   )rº   Únb_absoluteÚnb_absolute_implr   rK   )rA   r¡   rW  s   && r(   Úpynumber_absoluterY  Å  sM   € ð ×"Ñ"×.Ñ.€KØÒØ×#Ñ# BÓ'Ð'äØ
Ø
'¨×(<Ñ(<Ó(>Ð'?¸qÐAör*   c                ó0   € V ^8„  d   QhR\         R\        /# ©r!   r¡   r$   ©r   r\   )r'   s   "r(   r)   r)   Û  s   € ÷ :ñ :œð :¬Dñ :r*   c                óZ   € \        V 4      pV P                  RJ;'       g    \        V4      # )zOCheck if the object supports iteration (i.e. has tp_iter or sequence protocol).N)r   Útp_iterr�   )r¡   ÚTs   & r(   Úvt_is_iterabler`  Û  s)   € ä˜cÓ"€AØ�;‰;˜dÐ"×9Ð9Ô&6°qÓ&9Ð9r*   c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   á  rJ  r*   c                ó˜   € VP                   P                  pVe   VP                  V 4      # \        V RVP	                  4        R24       R# )zÍMirrors PyNumber_Invert.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1394

Algorithm:
1. If type has nb_invert slot, call obj.nb_invert_impl(tx)
2. Otherwise, raise TypeError
Nzbad operand type for unary ~: 'rJ   )rº   Ú	nb_invertÚnb_invert_implr   rK   )rA   r¡   rc  s   && r(   Úpynumber_invertre  á  sM   € ð × Ñ ×*Ñ*€IØÒØ×!Ñ! "Ó%Ð%äØ
Ø
)¨#×*>Ñ*>Ó*@Ð)AÀÐCör*   c                ó,   € V ^8„  d   QhRRR\         RR/# r=  r&   )r'   s   "r(   r)   r)   ÷  s)   € ÷ %Sñ %SØ#ð%SÜ*9ð%Sàñ%Sr*   c                ó  € \        V4      pVP                  pVeˆ   VP                  V 4      p\        V4      p\        V4      '       gY   \        P
                  R8¼  d%   VP                  4        RVP                  4        2pMRVP                  4        R2p\        W4       V# \        V4      '       d8   ^RI
Hp V! \        P                  P                  4      P                  W./ 4      # \        V RVP                  4        R24       R# )z‹
Implements PyObject_GetIter semantics for VariableTracker objects.
Routes to obj.tp_iter_impl(tx), the tp_iter slot on the object's type.
Nz).__iter__() must return an iterator, not z&iter() returned non-iterator of type 'rJ   )ÚUserFunctionVariablez' object is not iterablerÈ   )r   r^  Útp_iter_implr‡   rÕ   rÖ   r×   rK   r   r�   Ú	functionsrh  r   ÚbuiltinsÚsequence_iteratorÚcall_function)rA   r¡   r_  r^  r  Úres_TrÜ   rh  s   &&      r(   Úgeneric_getiterro  ÷  sÿ   € ô  	˜cÓ"€AØ�k‰k€GØÒØ×Ñ˜rÓ"ˆÜ% cÓ*ˆÜ˜E×"Ò"Ü×Ñ 7Ô*Ø ×6Ñ6Ó8Ð9Ð9bÐcf×c|Ñc|Óc~Ðbð  A‘ð =¸S×=QÑ=QÓ=SÐ<TÐTUÐVð ô ˜RÔ)Øˆ
Ü	˜!×	Ò	Ý3á#¤I×$6Ñ$6×$HÑ$HÓI×WÑWØ��ró
ð 	
ô 	˜˜q ×!5Ñ!5Ó!7Ð 8Ð8PÐQÖRr*   Ú	nb_lshiftÚnb_inplace_lshiftÚnb_inplace_rshiftÚ	nb_rshiftÚnb_orÚnb_inplace_orÚnb_subtractÚnb_inplace_subtractÚnb_addÚnb_inplace_addÚnb_multiplyÚnb_inplace_multiplyÚnb_matrix_multiplyÚnb_inplace_matrix_multiplyÚnb_andÚnb_inplace_andÚnb_xorÚnb_inplace_xorÚnb_floor_divideÚnb_inplace_floor_divideÚnb_true_divideÚnb_inplace_true_divideÚnb_remainderÚnb_inplace_remainderÚ	nb_divmodÚnb_powerÚnb_inplace_powerc                ó0   € V ^8„  d   QhR\         R\        /# )r!   rÁ   r$   r\  )r'   s   "r(   r)   r)   C  s   € ÷ 4ñ 4¤/ð 4´dñ 4r*   c                 ó,   € V P                  \        4      # rn   )Úis_constant_matchÚNotImplemented)rÁ   s   &r(   Úis_nb_not_implementedr�  C  s   € Ø×#Ñ#¤NÓ3Ð3r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r!   rC   rB   r$   r\  )r'   s   "r(   r)   r)   G  s!   € ÷ ñ œð ¬_ð Äñ r*   c                óx   €  \        V P                  4       VP                  4       4      #   \         d     R# i ; i)z?Check if w's underlying Python type is a proper subtype of v's.F)rŠ   r7   r8   )rC   rB   s   &&r(   Úis_python_subtyper’  G  s2   € ðÜ˜!Ÿ-™-›/¨1¯=©=«?Ó;Ð;øÜô Úðús   ‚'* ª9¸9c          
      óL   € V ^8„  d   QhRRR\         R\         R\        R\         /# )r!   rA   r   rB   rC   Úop_slotr$   ©r   rE   )r'   s   "r(   r)   r)   X  sA   € ÷ F3ñ F3Ø#ðF3äðF3ô ðF3ô ð	F3ô
 ñF3r*   c                ó$  € V R2p\         V,          p\        V4      p\        V4      p\        We4      '       d   \        \	        V4      VR4      MRp\        Wu4      '       d   \        \	        V4      VR4      MRp	W‰J d   Rp	VeR   V	e1   \        W!4      '       d    V	! W VR4      p
\        V
4      '       g   V
# Rp	V! WVR4      p
\        V
4      '       g   V
# V	e   V	! W VR4      p
\        V
4      '       g   V
# \        P                  ! \        4      # )uó  CPython's binary_op1: try v's slot, then w's slot with subclass priority.

Each VT that participates provides a ``<op_slot>_impl(self, tx, other,
reverse)`` method. ``reverse=False`` means "self is left operand" (forward,
e.g. ``__or__``), ``reverse=True`` means "self is right operand" (reverse,
e.g. ``__ror__``). For built-in types the flag is ignored because their
slots check both operands symmetrically.

CPython splits the check into two steps: ``Py_TYPE(v)->tp_as_number !=
NULL`` (does the type have a number-protocol struct), then read the
slot pointer (which may itself be NULL).  We collapse both into a
single :func:`type_implements_nb_slot` query â€” its bit is set only
when the specific slot is non-NULL, which already implies
``tp_as_number`` is non-NULL.  Treating a missing slot as "no impl"
is what keeps the base ``VariableTracker.nb_*_impl`` graph-break
out of the path for types that genuinely lack the slot in C.

https://github.com/python/cpython/blob/3.13/Objects/abstract.c#L926-L977
Ú_implNTF)
ÚNB_SLOT_MAPPINGr   rj   ÚgetattrrR   r’  r�  r   r0   rŽ  )rA   rB   rC   r”  Ú	impl_attrÚnb_slot_bitÚv_typeÚw_typeÚv_slotÚw_slotrÁ   s   &&&&       r(   Ú
binary_op1r   X  s  € ð2 �)˜5Ð!€IÜ! 'Õ*€Kä" 1Ó%€FÜ" 1Ó%€Fô # 6×7Ò7ô 	”�Q“˜ DÔ)àð ô # 6×7Ò7ô 	”�Q“˜ DÔ)àð ð ÓØˆàÒð ÒÔ"3°A×"9Ò"9ñ ˜A 1 dÓ+ˆFÜ(¨×0Ò0Ø�ØˆFÙ˜˜q %Ó(ˆÜ$ V×,Ò,ØˆMØÒÙ˜˜q $Ó'ˆÜ$ V×,Ò,ØˆMÜ×"Ò"¤>Ó2Ð2r*   c                óX   € V ^8„  d   QhRRR\         R\         R\        R\        R\         /# )r!   rA   r   rB   rC   r”  rD   r$   r•  )r'   s   "r(   r)   r)   ¡  sD   € ÷ ñ Ø#ðäðô ðô ð	ô
 ðô ñr*   c                óX   € \        WW#4      p\        V4      '       d   \        WW$4       V# )z€CPython's binary_op: binary_op1 + TypeError fallback.
https://github.com/python/cpython/blob/3.13/Objects/abstract.c#L997-L1020
)r   r�  rL   )rA   rB   rC   r”  rD   rÁ   s   &&&&& r(   Ú	binary_opr£  ¡  s*   € ô ˜˜qÓ*€FÜ˜V×$Ò$Ü˜ Ô-Ø€Mr*   c                ór   € V ^8„  d   QhRRR\         R\         R\         R,          R\        R\        R	\         /# )
r!   rA   r   rB   rC   ÚzNr”  Úop_namer$   r•  )r'   s   "r(   r)   r)   ²  sS   € ÷ >
ñ >
Ø#ð>
äð>
ô ð>
ô ˜Õð	>
ô
 ð>
ô ð>
ô ñ>
r*   c                 ó�  € V R 2p\         V,          p\        V4      p\        V4      p	\        W‡4      '       d   \        \	        V4      VR4      MRp
\        W—4      '       d   \        \	        V4      VR4      MRpW«J d   RpV
'       dV   V'       d1   \        W!4      '       d    V! W WR4      p\        V4      '       g   V# RpV
! WW#R4      p\        V4      '       g   V# V'       d   V! W WR4      p\        V4      '       g   V# V'       df   \        V4      p\        W×4      '       dJ   V R2p\        \	        V4      VR4      pWúV39   d   RpV'       d   V! W0W4      p\        V4      '       g   V# Vf   \        WW%4       R# \        V RV RVP                  4        RVP                  4        RVP                  4        R2	4       R# )	r—  NTFÚ_z_implrG   rH   z', 'rJ   )
r˜  r   rj   r™  rR   r’  r�  rL   r   rK   )rA   rB   rC   r¥  r”  r¦  rš  r›  rœ  r�  rž  rŸ  rÁ   Úz_typeÚz_impl_attrÚz_slots   &&&&&&          r(   Ú
ternary_opr¬  ²  s¿  € ð �)˜5Ð!€IÜ! 'Õ*€Kä" 1Ó%€FÜ" 1Ó%€Fô # 6×7Ò7ô 	”�Q“˜ DÔ)àð ô # 6×7Ò7ô 	”�Q“˜ DÔ)àð ð ÓØˆçßÔ'¨×-Ò-Ù˜A 1¨Ó.ˆFÜ(¨×0Ò0Ø�ØˆFÙ˜˜q UÓ+ˆÜ$ V×,Ò,ØˆMßÙ˜˜q TÓ*ˆÜ$ V×,Ò,ØˆMçÜ& qÓ)ˆÜ" 6×7Ò7Ø$˜I WÐ-ˆKÜœT !›W k°4Ó8ˆFØ &Ð)Ô)Ø�ßÙ  qÓ,�Ü,¨V×4Ò4Ø!�Mà‚yÜ˜ Ö+äØØ.¨w¨ið 8Ø×"Ñ"Ó$Ð% T¨!×*<Ñ*<Ó*>Ð)?¸tÀA×DVÑDVÓDXÐCYÐYZð\ö	
r*   c                ó~   € V ^8„  d   QhRRR\         R\         R\         R,          R\        R\        R	\        R
\         /# )r!   rA   r   rB   rC   r¥  NÚiop_slotr”  r¦  r$   r•  )r'   s   "r(   r)   r)   ó  s]   € ÷ 5ñ 5Ø#ð5äð5ô ð5ô ˜Õð	5ô
 ð5ô ð5ô ð5ô ñ5r*   c                 óØ   € \        V4      p\        V\        V,          4      '       d7   V R 2p\        \	        V4      V4      p	V	! WW#4      p
\        V
4      '       g   V
# \        WW#WV4      # ©r—  )r   rj   r˜  r™  rR   r�  r¬  )rA   rB   rC   r¥  r®  r”  r¦  rœ  rš  rZ   rÁ   s   &&&&&&&    r(   Úternary_iopr±  ó  sg   € ô # 1Ó%€FÜ˜v¤°xÕ'@×AÒAØ�j Ð&ˆ	Ü”t˜A“w 	Ó*ˆÙ�a˜QÓ"ˆÜ$ V×,Ò,ØˆMä�b˜Q 7Ó4Ð4r*   c                óX   € V ^8„  d   QhRRR\         R\         R\        R\        R\         /# )r!   rA   r   rB   rC   r®  r”  r$   r•  )r'   s   "r(   r)   r)     sD   € ÷ )ñ )Ø#ð)äð)ô ð)ô ð	)ô
 ð)ô ñ)r*   c                 óÖ   € \        V4      p\        V\        V,          4      '       d7   V R 2p\        \	        V4      V4      pV! WV4      p\        V4      '       g   V# \        WW$4      # r°  )r   rj   r˜  r™  rR   r�  r   )	rA   rB   rC   r®  r”  rœ  rš  rZ   rÁ   s	   &&&&&    r(   Úbinary_iop1r´    sd   € ô # 1Ó%€Fä˜v¤°xÕ'@×AÒAØ�j Ð&ˆ	Ü”t˜A“w 	Ó*ˆÙ�a˜Q“ˆÜ$ V×,Ò,ØˆMä�b˜QÓ(Ð(r*   c                ód   € V ^8„  d   QhRRR\         R\         R\        R\        R\        R\         /# )	r!   rA   r   rB   rC   r®  r”  rD   r$   r•  )r'   s   "r(   r)   r)   )  sN   € ÷ ñ Ø#ðäðô ðô ð	ô
 ðô ðô ñr*   c                óZ   € \        WW#V4      p\        V4      '       d   \        WW%4       V# )záCPython's binary_iop: try inplace slot, fallback to binary_op1.

Combines binary_iop1 + TypeError fallback from binary_iop.
https://github.com/python/cpython/blob/3.13/Objects/abstract.c#L1229-L1270 (binary_iop1, binary_iop)
)r´  r�  rL   )rA   rB   rC   r®  r”  rD   rÁ   s   &&&&&& r(   Ú
binary_iopr·  )  s,   € ô ˜ ¨WÓ5€FÜ˜V×$Ò$Ü˜ Ô-Ø€Mr*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# ©r!   rA   r   rB   rC   r$   r&   )r'   s   "r(   r)   r)   =  s0   € ÷ $ñ $Ø#ð$äð$ô ð$ô ñ	$r*   c                ó¶   € \        WVR4      p\        V4      '       g   V# VP                  P                  pVe   VP	                  W4      # \        WVR4       R# )zHImplements addition via nb_add / nb_inplace_add with binary_op dispatch.rx  NÚ+)r   r�  r§   Ú	sq_concatÚsq_concat_implrL   )rA   rB   rC   rÁ   r¼  s   &&&  r(   r
  r
  =  sV   € ô ˜˜q (Ó+€FÜ  ×(Ò(Øˆà× Ñ ×*Ñ*€IØÒØ×Ñ Ó&Ð&Ü�R˜A˜sÖ#r*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# r¹  r&   )r'   s   "r(   r)   r)   N  s0   € ÷ ñ Ø#ðäðô ðô ñ	r*   c                ó
  € \        WVRR4      p\        V4      '       dd   VP                  P                  pVP                  P                  pVe   VP                  W4      # Ve   VP                  W4      # \        WVR4       V# )zIImplements in-place addition via nb_inplace_add with binary_iop dispatch.ry  rx  z+=)r´  r�  r§   Úsq_inplace_concatr¼  Úsq_inplace_concat_implr½  rL   )rA   rB   rC   rÁ   rÀ  r¼  s   &&&   r(   Úpynumber_inplace_addrÂ  N  s‚   € ô ˜ Ð#3°XÓ>€FÜ˜V×$Ò$Ø×,Ñ,×>Ñ>ÐØ×$Ñ$×.Ñ.ˆ	ØÒ(Ø×+Ñ+¨BÓ2Ð2ØÒ"Ø×#Ñ# BÓ*Ð*ä˜R A tÔ,Ø€Mr*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# ©r!   rA   r   ÚseqÚnr$   r&   )r'   s   "r(   r)   r)   n  s0   € ÷ )ñ )Ø#ð)ä	ð)ô ð)ô ñ	)r*   c                óÐ   € \        V4      p\        V4      '       g   \        V RVP                  4        R24       VP	                  V 4      p\        W4       VP                  W4      # )zêMirrors CPython's sequence_repeat helper.

Validates that ``n`` is index-like, converts it to an int, and dispatches
to ``seq.sq_repeat_impl(tx, count)``.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1156-L1174
ú,can't multiply sequence by non-int of type 'rJ   )r   r‘   r   rK   r  Úvalidate_sequence_repeat_countÚsq_repeat_impl©rA   rÅ  rÆ  Ún_typeÚcounts   &&&  r(   Úpysequence_repeatrÎ  n  sd   € ô # 1Ó%€FÜ˜× Ò ÜØØ:¸1×;MÑ;MÓ;OÐ:PÐPQÐRô	
ð �O‰O˜BÓ€EÜ" 2Ô-Ø×Ñ˜bÓ(Ð(r*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# rÄ  r&   )r'   s   "r(   r)   r)   …  s0   € ÷ 1ñ 1Ø#ð1ä	ð1ô ð1ô ñ	1r*   c                óÐ   € \        V4      p\        V4      '       g   \        V RVP                  4        R24       VP	                  V 4      p\        W4       VP                  W4      # )z…pysequence_repeat using sq_inplace_repeat.

The validation step is identical to ``pysequence_repeat``; only the
target slot differs.
rÈ  rJ   )r   r‘   r   rK   r  rÉ  Úsq_inplace_repeat_implrË  s   &&&  r(   Úpysequence_inplace_repeatrÒ  …  sd   € ô # 1Ó%€FÜ˜× Ò ÜØØ:¸1×;MÑ;MÓ;OÐ:PÐPQÐRô	
ð �O‰O˜BÓ€EÜ" 2Ô-Ø×%Ñ% bÓ0Ð0r*   c                ó,   € V ^8„  d   QhRRR\         RR/# )r!   rA   r   rÍ  r$   Nr&   )r'   s   "r(   r)   r)   š  s&   € ÷ 

ñ 

Ø#ð

äð

ð 
ñ

r*   c                 ó´   € VP                  4       pV\        P                  ) ^,
          8  g   V\        P                  8”  d   \        \        V R.R7       R# R# )é   z,cannot fit 'int' into an index-sized integerr²   N)r¸   rÕ   rN   r   r,  )rA   rÍ  rÆ  s   && r(   rÉ  rÉ  š  sH   € ð 	× Ñ Ó"€AØŒC�K‰Kˆ<˜!ÕÔ˜q¤3§;¡;œÜ ÜØØ@ÐA÷	
ñ  /r*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# r¹  r&   )r'   s   "r(   r)   r)   §  s0   € ÷ ñ Ø#ðäðô ðô ñ	r*   c                ó4  € \        WVR4      p\        V4      '       g   V# VP                  P                  e   \	        WV4      # VP                  P                  e   \	        WV4      # \        V RVP                  4        RVP                  4        R24       R# )zîMirrors CPython's PyNumber_Multiply.

Try nb_multiply via binary_op1; on NotImplemented fall back to sq_repeat
on either operand.  TypeError if no path works.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1176-L1193
rz  Nú$unsupported operand type(s) for *: 'rI   rJ   )r   r�  r§   Ú	sq_repeatrÎ  r   rK   ©rA   rB   rC   rÁ   s   &&& r(   Úpynumber_multiplyrÛ  §  s—   € ô ˜˜q -Ó0€FÜ  ×(Ò(Øˆà×Ñ×!Ñ!Ò-Ü  ¨Ó*Ð*Ø×Ñ×!Ñ!Ò-Ü  ¨Ó*Ð*äØ
ðØ×ÑÓ Ð! ¨×);Ñ);Ó)=Ð(>¸að	Aör*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# r¹  r&   )r'   s   "r(   r)   r)   Ã  s0   € ÷ ñ Ø#ðäðô ðô ñ	r*   c                ó~  € \        WVRR4      p\        V4      '       g   V# VP                  P                  e   \	        WV4      # VP                  P
                  e   \        WV4      # VP                  P
                  e   \        WV4      # \        V RVP                  4        RVP                  4        R24       R# )a  Mirrors CPython's PyNumber_InPlaceMultiply.

Try nb_inplace_multiply / nb_multiply via binary_iop1; on NotImplemented
fall back to sq_inplace_repeat (preferred), then sq_repeat.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1330-L1357
r{  rz  Nz%unsupported operand type(s) for *=: 'rI   rJ   )	r´  r�  r§   Úsq_inplace_repeatrÒ  rÙ  rÎ  r   rK   rÚ  s   &&& r(   Úpynumber_inplace_multiplyrß  Ã  s»   € ô ˜ Ð#8¸-ÓH€FÜ  ×(Ò(Øˆà×Ñ×)Ñ)Ò5Ü(¨°Ó2Ð2Ø×Ñ×!Ñ!Ò-Ü  ¨Ó*Ð*ð 	×Ñ×!Ñ!Ò-Ü  ¨Ó*Ð*äØ
ðØ×ÑÓ Ð! ¨×);Ñ);Ó)=Ð(>¸að	Aör*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# r¹  r&   )r'   s   "r(   r)   r)   ã  s0   € ÷ :ñ :Ø#ð:äð:ô ð:ô ñ	:r*   c                ó   € \        WVRR4      # )z*Mirrors CPython's PyNumber_MatrixMultiply.r|  Ú@)r£  ©rA   rB   rC   s   &&&r(   Úpynumber_matrix_multiplyrä  ã  s   € ô �R˜AÐ3°SÓ9Ð9r*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# r¹  r&   )r'   s   "r(   r)   r)   ì  s0   € ÷ ñ Ø#ðäðô ðô ñ	r*   c                ó"   € \        V VVRRR4      # )z1Mirrors CPython's PyNumber_InPlaceMatrixMultiply.r}  r|  z@=)r·  rã  s   &&&r(   Ú pynumber_inplace_matrix_multiplyrç  ì  s#   € ô Ø
Ø	Ø	Ø$ØØóð r*   c          
      óL   € V ^8„  d   QhRRR\         R\         R\        R\         /# ©r!   rA   r   ÚselfÚotherÚreverser$   r\  )r'   s   "r(   r)   r)     s:   € ÷ ñ Ø#ðä
ðô ðô ð	ô
 ñr*   c                ó  € VP                   P                  pVe   VP                  WVR7      # VP                  P                  e   \        WV4      # \        V RVP                  4        RVP                  4        R24       R# )z@``self.__mul__(other)`` / ``self.__rmul__(other)`` slot wrapper.N©rì  rØ  rI   rJ   )rº   rz  Únb_multiply_implr§   rÙ  rÎ  r   rK   )rA   rê  rë  rì  rz  s   &&&& r(   Úslot_wrapper_mulrð    s‰   € ð ×#Ñ#×/Ñ/€KØÒØ×$Ñ$ R¸Ð$Ó@Ð@Ø×Ñ×$Ñ$Ò0ô ! ¨5Ó1Ð1ÜØ
ðØ×!Ñ!Ó#Ð$ G¨E×,BÑ,BÓ,DÐ+EÀQð	Hör*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# ©r!   rA   r   rê  rë  r$   r&   )r'   s   "r(   r)   r)   5  s0   € ÷ -ñ -Ø#ð-ä
ð-ô ð-ô ñ	-r*   c                ó¸   € VP                   P                  pVe   VP                  W4      # VP                  P                  e   \        WV4      # \        WV4      # )u±  ``self.__imul__(other)`` slot wrapper.

When neither ``nb_inplace_multiply`` nor ``sq_inplace_repeat`` is
installed, the slotdef machinery doesn't generate ``__imul__`` at all
â€” but the operator-level fallback in ``slot_nb_inplace_multiply``
(typeobject.c) does try the non-inplace slot.  We mirror that here so
method lookups don't graph-break on (e.g.) tuple, even though tuple
has no ``__imul__`` attribute in standard CPython.
)rº   r{  Únb_inplace_multiply_implr§   rÞ  rÒ  rð  )rA   rê  rë  r{  s   &&& r(   Úslot_wrapper_imulrõ  5  sY   € ð ×+Ñ+×?Ñ?ÐØÒ&Ø×,Ñ,¨RÓ7Ð7Ø×Ñ×,Ñ,Ò8Ü(¨°5Ó9Ð9Ü˜B eÓ,Ð,r*   c          
      óL   € V ^8„  d   QhRRR\         R\         R\        R\         /# ré  r\  )r'   s   "r(   r)   r)   Y  s:   € ÷ ñ Ø#ðä
ðô ðô ð	ô
 ñr*   c                ó$  € VP                   P                  pVe   VP                  WVR7      # VP                  P                  pV'       g   Ve   VP                  W4      # \        V RVP                  4        RVP                  4        R24       R# )z@``self.__add__(other)`` / ``self.__radd__(other)`` slot wrapper.Nrî  z$unsupported operand type(s) for +: 'rI   rJ   )rº   rx  Únb_add_implr§   r¼  r½  r   rK   )rA   rê  rë  rì  rx  r¼  s   &&&&  r(   Úslot_wrapper_addrù  Y  s’   € ð ×Ñ×%Ñ%€FØÒØ×Ñ °7ÐÓ;Ð;à×#Ñ#×-Ñ-€Iß�yÒ,Ø×"Ñ" 2Ó-Ð-ÜØ
ðØ×!Ñ!Ó#Ð$ G¨E×,BÑ,BÓ,DÐ+EÀQð	Hör*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# rò  r&   )r'   s   "r(   r)   r)   n  s0   € ÷ -ñ -Ø#ð-ä
ð-ô ð-ô ñ	-r*   c                óÆ   € VP                   P                  pVe   VP                  W4      # VP                  P                  pVe   VP                  W4      # \        WV4      # )z²``self.__iadd__(other)`` slot wrapper.

Mirrors ``slot_wrapper_imul``: when neither ``nb_inplace_add`` nor
``sq_inplace_concat`` is installed, fall back to the non-inplace slot.
)rº   ry  Únb_inplace_add_implr§   rÀ  rÁ  rù  )rA   rê  rë  ry  rÀ  s   &&&  r(   Úslot_wrapper_iaddrý  n  sb   € ð ×&Ñ&×5Ñ5€NØÒ!Ø×'Ñ'¨Ó2Ð2Ø×+Ñ+×=Ñ=ÐØÒ$Ø×*Ñ*¨2Ó5Ð5Ü˜B eÓ,Ð,r*   c          
      óL   € V ^8„  d   QhR\         RRR\         R\        R\         /# ©r!   rê  rA   r   rë  Úopr$   r•  )r'   s   "r(   r)   r)   ¹  s:   € ÷ 7ñ 7Ü
ð7à#ð7ô ð7ô 	ð	7ô
 ñ7r*   c                ó˜  € VR8X  dV   \        W4      pVe-   VP                  4       '       d   \        P                  ! R4      # \        P                  ! \        4      # VR8X  dO   V P                  WR4      p\        V4      '       d   V# \        P                  ! VP                  4       '       * 4      # \        P                  ! \        4      # )zìobject's tp_richcompare.

https://github.com/python/cpython/blob/e76aa128fe/Objects/typeobject.c#L6263-L6305
- __eq__: identity check, else NotImplemented
- __ne__: delegates to tp_richcompare(self, other, Py_EQ) and inverts
- ordering
Ú__eq__TÚ__ne__)r?   r¸   r   r0   rŽ  Útp_richcompare_implÚis_richcompare_not_implemented)rê  rA   rë  r   ÚidentityÚ	eq_results   &&&&  r(   Úobject_richcomparer  ¹  s¥   € ð 
ˆX„~Ü& tÓ3ˆØÒ H×$?Ñ$?×$AÒ$AÜ#×*Ò*¨4Ó0Ð0Ü×&Ò&¤~Ó6Ð6Ø	ˆxŒð ×,Ñ,¨R¸ÓAˆ	Ü)¨)×4Ò4ØÐÜ×&Ò&¨9×+GÑ+GÓ+IÔ'IÓJÐJä×&Ò&¤~Ó6Ð6r*   c          
      óL   € V ^8„  d   QhR\         RRR\         R\        R\         /# rÿ  r•  )r'   s   "r(   r)   r)   ×  s:   € ÷ +ñ +Ü
ð+à#ð+ô ð+ô 	ð	+ô
 ñ+r*   c                ó¬  € V P                  4       '       d   VP                  4       '       g   \        P                  ! \        4      # V P	                  4       pVP	                  4       p \        \        V4      V4      ! WE4      p\        P                  ! X4      #   \         d0   p\        \        T\        TP                  4      R7        Rp?LKRp?ii ; i)z=Constant-fold comparison for types with as_python_constant().r²   N)r·   r   r0   rŽ  r¸   r™  rR   Ú	TypeErrorr   rÎ   r³   )rê  rA   rë  r   Úself_valÚ	other_valrÁ   rÀ   s   &&&&    r(   Ú python_constant_richcompare_implr  ×  s§   € ð ×"Ñ"×$Ò$¨E×,DÑ,D×,FÒ,FÜ×&Ò&¤~Ó6Ð6Ø×&Ñ&Ó(€HØ×(Ñ(Ó*€IðCÜœ˜h›¨Ô,¨XÓAˆô ×"Ò" 6Ó*Ð*øô ô CÜ ¤¨B´T¸!¿&¹&³\×BÒBûðCús   Á(B ÂCÂ$%CÃCÚ__lt__Ú__gt__Ú__le__Ú__ge__r  r  Ú<z<=z==z!=Ú>z>=c          
      óL   € V ^8„  d   QhRRR\         R\         R\        R\         /# ©r!   rA   r   rB   rC   r   r$   r•  )r'   s   "r(   r)   r)   ý  sA   € ÷ E
ñ E
Ø#ðE
äðE
ô ðE
ô 	ð	E
ô
 ñE
r*   c           
     óF  € \         V,          p VP                  4       p VP                  4       pRpVeB   Ve>   WVJd9   \        We4      '       d(   RpVP	                  WV4      p\        V4      '       g   V# VP	                  WV4      p\        V4      '       g   V# V'       g&   VP	                  WV4      p\        V4      '       g   V# VR9   dm   \        W4      p	V	e3   VR8X  d*   \        P                  ! V	P                  4       '       * 4      # V	# \        RRV RV RV R2R	. \        P                  OR
7       R# \        V R\        V,           RVP                  4        RVP                  4        R24       R#   \         d    Rp ELli ; i  \         d    Rp ELoi ; i)ac  Dynamo's do_richcompare.

https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L994-L1039

Implements the 4-step algorithm directly using tp_richcompare_impl slots.
Graph breaks inside user comparison methods propagate to COMPARE_OP
(which runs eagerly) because UDOV.tp_richcompare_impl disables nested
graph breaks on the resolved funcvar.
NFTr  z*richcompare identity fallback undeterminedzgeneric_richcompare(ú, rÇ   z9Cannot determine object identity for comparison fallback.©Úgb_typeÚcontextÚexplanationÚhintsrJ   z&' not supported between instances of 'rI   ©r  r  )Ú_REFLECTED_OPr7   r8   rŠ   r  r  r?   r   r0   r¸   r   r   ÚSUPPORTABLEr   Ú_OP_STRrK   )
rA   rB   rC   r   Ú	reflectedrœ  r�  Úchecked_reverserÁ   r  s
   &&&&      r(   Úgeneric_richcomparer$  ý  s¯  € ô ˜bÕ!€IðØ—‘“ˆðØ—‘“ˆð €Oð 	ÒØÒØÓ Ü�v×&Ò&àˆØ×&Ñ& r¨iÓ8ˆÜ-¨f×5Ò5ØˆMð ×"Ñ" 2¨"Ó-€FÜ)¨&×1Ò1Øˆ÷ Ø×&Ñ& r¨iÓ8ˆÜ-¨f×5Ò5ØˆMð 
Ð!Ô!Ü& qÓ,ˆØÒØ�XŒ~Ü'×.Ò.°8×3NÑ3NÓ3PÔ/PÓQÐQØˆOÜØ@Ø*¨1¨#¨R°¨s°"°R°D¸Ð:ØSØ2Ô%×1Ñ1Ð2÷		
ô 	ØØ”˜•ˆ}ð Ø×"Ñ"Ó$Ð% W¨Q×-?Ñ-?Ó-AÐ,BÀ!ðEö	
øô] ô Ø‹ðûô ô Ø‹ðús"   �E;  F Å;FÆFÆF ÆF c          
      óL   € V ^8„  d   QhRRR\         R\         R\        R\         /# r  r•  )r'   s   "r(   r)   r)   E  s:   € ÷ -ñ -Ø#ð-äð-ô ð-ô 	ð	-ô
 ñ-r*   c                óÀ   € VR9  d   \        RV 24      h\        W4      pVe0   VP                  4       '       d   \        P                  ! VR8H  4      # \        WW#4      # )aÃ  Dynamo's PyObject_RichCompareBool for eq/ne.

https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L1046-L1080

Like generic_richcompare, but with an identity shortcut first: if v
and w are the same Python object, eq is True and ne is False. This
matters for NaN (nan is nan -> True, but nan == nan -> False). Used by
container comparisons (list_richcompare, tuplerichcompare) which call
PyObject_RichCompareBool per element in CPython.
r  z2generic_richcompare_bool only supports eq/ne, got r  )r:  r?   r¸   r   r0   r$  )rA   rB   rC   r   r  s   &&&& r(   Úgeneric_richcompare_boolr'  E  sb   € ð  
Ð%Ô%ÜÐQÐRTÐQUÐVÓWÐWÜ" 1Ó(€HØÒ × ;Ñ ;× =Ò =Ü×&Ò& r¨X¡~Ó6Ð6Ü˜r aÓ,Ð,r*   c                óV   € V ^8„  d   QhRRR\         R\        \        \        3,          /# r°   )r   rS   rT   r\   )r'   s   "r(   r)   r)   ]  s-   € ÷ 	ñ 	Ø#ð	Ü*9ð	ä
Œ3”ˆ9Õñ	r*   c                ó$   € VP                  V 4      # )zíInternal API: compute hash as (value, is_fake).

Dispatches to the VT's hash_impl.  Called by generic_hash (which wraps
the result in a VT), container hash_impls (which propagate is_fake),
and HashableTracker (which just needs the int).
)Ú	hash_implr©   s   &&r(   Úgeneric_hash_implr+  ]  s   € ð �=‰=˜ÓÐr*   c                ó4   € V ^8„  d   QhRRR\         R\         /# r°   r&   )r'   s   "r(   r)   r)   i  s$   € ÷ &ñ &Ø#ð&Ü*9ð&äñ&r*   c                óŠ   € ^RI HpHpHp \	        W4      w  rVV'       d   V! WTP
                  R7      # VP                  ! V4      # )a  User-facing API: mirrors PyObject_Hash, returns a VariableTracker.

https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L1101-L1115

Wraps the result in ConstantVariable or FakeIdVariable depending on
whether the hash depends on a sourceless object's identity.
)r   ÚFakeIdVariableÚFakeValueKind)Úkind)r¶   r   r.  r/  r+  ÚHASHr0   )rA   r¡   r   r.  r/  ÚhÚis_fakes   &&     r(   Úgeneric_hashr4  i  s<   € ÷ JÑIä" 2Ó+�J€AßÙ˜a×&8Ñ&8Ô9Ð9Ø×"Ò" 1Ó%Ð%r*   c                ó(   € V ^8„  d   QhRRRRRRRR/# )r!   rA   r   r¡   r   r5  r$   r¢   )r'   s   "r(   r)   r)   {  s,   € ÷ ,ñ ,Ø#ð,Ø*;ð,ØCTð,àñ,r*   c                óÜ   € VP                   P                  pVe   VP                  W4      # \        W4      p\        P
                  ! V \        P                  4      P                  WV./ 4      # )zé
Implements PySequence_Contains semantics for VariableTracker objects.

If the object has sq_contains (i.e., __contains__), calls obj.sq_contains_impl(tx, item).
Otherwise falls back to iterating over obj and comparing each element.
)	r§   Úsq_containsÚsq_contains_implro  r   Úbuildr   Úimpl_CONTAINS_OP_fallbackrm  )rA   r¡   r5  r7  Úits   &&&  r(   Úpysequence_containsr<  {  sf   € ð ×$Ñ$×0Ñ0€KØÒØ×#Ñ# BÓ-Ð-ô ˜RÓ%ˆÜ×$Ò$Ø”	×3Ñ3ó
ç
‰-˜ 2˜J¨Ó
+ð	,r*   c                ó@   € V ^8„  d   QhRRR\         R\         R\         /# )r!   rA   r   ÚderivedÚclsr$   r&   )r'   s   "r(   r)   r)   ›  s6   € ÷ _'ñ _'Ø#ð_'äð_'ô 
ð_'ô ñ	_'r*   c                ót  € VP                  4       pVP                  4       pV\        J g   V\        J d8   \        RRV RV R2RR.\        P                  O\        P
                  OR7       \        V4      pV\        J d"    \        P                  ! \        VV4      4      # \        P                   0p\"        P$                  R8  d    VP'                  \(        P*                  4       WW9   d-   \(        P,                  ! V4      p\.        P0                  ! W4      p^R
IHp	 \7        W)4      '       dx   VP8                   FQ  p
\;        WV
4      p\7        V\        4      '       g   K'  VP<                  '       g   K;  \        P                  ! R4      u # 	  \        P                  ! R4      # \7        V\        4      '       dA   \        \        V4      \>        4      '       d"    \        P                  ! \        VV4      4      # \7        V\        4      '       g   \A        V R4       VPC                  V RV./ 4      p\E        W4      #   \         d1   p\        \        T \        TP                  4      R7        R	p?ELÓR	p?ii ; i  \         d0   p\        \        T \        TP                  4      R7        R	p?LµR	p?ii ; i)zßMirrors CPython's PyObject_IsSubclass / object_issubclass.

https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L2766-L2823

This only attempts to replicate object_issubclass, otherwise we delegate to cpython
z'issubclass() with unsupported argumentszissubclass(r  rÇ   z:Arguments to issubclass() must be backed by python values.z#Make sure your arguments are types.r  r²   N)ÚTupleVariableTFzBissubclass() arg 2 must be a class, a tuple of classes, or a unionÚ__subclasscheck__)rÉ   é   )#r1   r   r   r   Ú
USER_ERRORr   r   rR   r   r0   rŠ   r  r   rÎ   r³   ÚtypesÚ	UnionTyperÕ   rÖ   rÒ   ÚtypingÚ_UnionGenericAliasÚget_argsr   r9  r3   rA  r6   ÚitemsÚgeneric_issubclassr  Ú(_CONSTANT_FOLD_SUBCLASSCHECK_METACLASSESr   r�   rÄ   )rA   r>  r?  Ú
derived_pyÚcls_pyÚcls_typerÀ   Úunion_typesr³   rA  r5  r;  rÁ   s   &&&          r(   rK  rK  ›  sS  € ð ×5Ñ5Ó7€JØ×-Ñ-Ó/€FØ”^Ó# v´Ó'?ÜØ=Ø! ' ¨"¨S¨E°Ð3ØTà5ðä"×-Ñ-ðô #×.Ñ.ðõ			
ô % SÓ)€Hð ”4Óð	GÜ#×*Ò*ÜØØóóð ô —?‘?Ð#€KÜ
×Ñ˜'Ô!Ø�‰Ü×%Ñ%ô	
ð Ôä�Š˜vÓ&ˆÜ×#Ò# BÓ-ˆõ %ä�#×%Ò%Ø—I”IˆDÜ" 2°Ó5ˆAÜ˜!Ô-×.Ô.°1·7·7²7Ü'×.Ò.¨tÓ4Ò4ñ ô  ×&Ò& uÓ-Ð-ô �&œ$×Ò¤JÜˆV‹Ô>÷%ò %ð	GÜ#×*Ò*ÜØØóóð ô �fœd×#Ò#ÜØØPô	
ð �_‰_˜RÐ!4°w°iÀÓD€Fô ˜2Ó&Ð&øôy ô 	GÜ$¤Y°¼¸a¿f¹f»×FÓFûð	GûôP ô 	GÜ$¤Y°¼¸a¿f¹f»×FÒFûð	Gús0   ÂH? ÇI= È?I:É
%I5É5I:É=J7Ê%J2Ê2J7c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r!   Úpy_typeÚnamer$   )rR   rE   Úobject)r'   s   "r(   r)   r)      s!   € ÷ ñ œð ¤Cð ¬Fñ r*   c                ó~   € V P                    F(  pWP                  9   g   K  VP                  V,          u # 	  \        # )a  Walk py_type.__mro__ to find *name* in the class hierarchy.

Mirrors CPython's _PyType_LookupRef (Objects/typeobject.c).
Searches only the class chain (py_type.__mro__), NOT the metaclass
chain.  Returns the raw descriptor/value from the class __dict__,
or NO_SUCH_SUBOBJ if not found.
)Ú__mro__Ú__dict__r   )rR  rS  r!  s   && r(   Ú
mro_lookuprX     s3   € ð —”ˆØ—=‘=Ö Ø—=‘= Õ&Ò&ñ  ô Ðr*   c                óH   € V ^8„  d   QhRRR\         R\        R\        RRRR	/# )
r!   rA   r   Ú	type_attrr¡   Úclass_vtÚsourcezSource | Noner$   r%   )rT  r   )r'   s   "r(   r)   r)   .  sD   € ÷ 2ñ 2Ø#ð2äð2ô 
ð2ô ð	2ð
 ð2ð ñ2r*   c                ó.  € ^ RI p\        V\        4      '       d*   \        P                  ! WR7      pVP                  WV4      # \        WP                  4      '       d*   \        P                  ! WR7      pVP                  WV4      # \        WP                  4      '       d*   \        P                  ! WR7      pVP                  WV4      # \        P                  p	\        W4      '       d*   \        P                  ! WR7      p
V
P                  WV4      # \        V\        4      '       d*   \        P                  ! WR7      pVP                  WV4      # \        V\        4      '       d*   \        P                   ! WR7      pVP                  WV4      # \        WP"                  4      '       d*   \        P$                  ! WR7      pVP                  WV4      # \        WP&                  4      '       d+   \        P(                  ! WVR7      pVP                  WV4      # \        WP*                  4      '       d+   \        P,                  ! WVR7      pVP                  WV4      # \        WP.                  4      '       d   \        P0                  ! WVR7      # R# )zãInvoke tp_descr_get on a type attribute if it's a descriptor.

Handles all descriptor types that have dedicated VTs with
tp_descr_get_impl.  Returns None if type_attr is not a recognized
descriptor type (plain class variable).
N©r\  )Úownerr\  )rE  r6   Úpropertyr   ÚPropertyVariableÚtp_descr_get_implÚMemberDescriptorTypeÚMemberDescriptorVariableÚGetSetDescriptorTypeÚGetSetDescriptorVariablerÏ   Ú_tuplegetterÚTupleGetterVariableÚstaticmethodÚStaticMethodVariableÚclassmethodÚClassMethodVariableÚClassMethodDescriptorTypeÚClassMethodDescriptorVariableÚWrapperDescriptorTypeÚWrapperDescriptorVariableÚMethodDescriptorTypeÚMethodDescriptorVariableÚFunctionTypeÚUserMethodVariable)rA   rZ  r¡   r[  r\  Ú_typesÚprop_vtÚmd_vtÚgs_vtrg  Útg_vtÚsm_vtÚcm_vtÚcmd_vtÚwd_vts   &&&&&          r(   Ú_resolve_descriptor_getr~  .  s	  € ó ä�)œX×&Ò&Ü×,Ò,¨YÔFˆØ×(Ñ(¨°(Ó;Ð;Ü�)×8Ñ8×9Ò9Ü×2Ò2°9ÔLˆØ×&Ñ& r°Ó9Ð9Ü�)×8Ñ8×9Ò9Ü×2Ò2°9ÔLˆØ×&Ñ& r°Ó9Ð9Ü×+Ñ+€LÜ�)×*Ò*Ü×-Ò-¨iÔGˆØ×&Ñ& r°Ó9Ð9Ü�)œ\×*Ò*Ü×.Ò.¨yÔHˆØ×&Ñ& r°Ó9Ð9Ü�)œ[×)Ò)Ü×-Ò-¨iÔGˆØ×&Ñ& r°Ó9Ð9Ü�)×=Ñ=×>Ò>Ü×8Ò8¸ÔRˆØ×'Ñ'¨°Ó:Ð:Ü�)×9Ñ9×:Ò:Ü×3Ò3Ø¨fô
ˆð ×&Ñ& r°Ó9Ð9Ü�)×8Ñ8×9Ò9Ü×2Ò2Ø¨fô
ˆð ×&Ñ& r°Ó9Ð9Ü�)×0Ñ0×1Ò1Ü×+Ò+¨IÀ6ÔJÐJár*   c                ó0   € V ^8„  d   QhR\         R\        /# )r!   rZ  r$   )rT  r\   )r'   s   "r(   r)   r)   m  s   € ÷ 0ñ 0œvð 0¬$ñ 0r*   c                 ó"   € \        V \        4      # rn   )r6   Ú_METHOD_TYPES)rZ  s   &r(   Ú_is_method_typer‚  m  s   € Ü�i¤Ó/Ð/r*   c                ó0   € V ^8„  d   QhR\         R\        /# r[  r\  )r'   s   "r(   r)   r)   q  s   € ÷ ñ ¤ð ´Tñ r*   c                 ó€   € \        V 4      P                   F$  pV\        J d    R # RVP                  9   g   K#   R# 	  R # )Fr�   T)rR   rV  r   rW  )r¡   r?  s   & r(   Ú_has_custom_call_methodr…  q  s5   € Ü�C‹y× Ô ˆØ”/Ó!ÚØ˜CŸL™LÖ(Úñ	 !ñ
 r*   c                ó@   € V ^8„  d   QhRRR\         R\        R\         /# )r!   rA   r   r¡   rS  r$   r•  )r'   s   "r(   r)   r)   z  s6   € ÷ Qñ QØ#ðQä	ðQô ðQô ñ	Qr*   c                ó�  € ^RI Hp VP                  4       pVP                  ;'       d    \	        VP                  V4      p\        WB4      pV\        JdR   V! V4      '       dD   \        P                  ! W4      p\        WWV4      pVe   V# \        R\        V4       RV 24      hVP                  W4      p	V	e   V	# V\        Jd­   \        \        V4      R4      '       d’   \        V4      '       d>   VP                  VR4      f   \!        V4      '       d   \"        P$                  ! WVR7      # \        P                  ! W4      p\        WWV4      pVe   V# \        R\        V4       RV 24      hV\        Jd   \        P                  ! WV4      # VP'                  W4      p
V
e   V
# \        RVP(                   R	V R
24      h)a[  Dynamo's PyObject_GenericGetAttr.

https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L1611-L1683

Implements the standard attribute lookup algorithm using the VT's
python_type() for MRO walking, and hooks on the VT for instance dict
and __getattr__ fallback.

Steps:
  1. MRO walk on python_type() for type_attr
  2. Data descriptor -> invoke tp_descr_get
  3. Instance dict -> obj.lookup_instance_dict(tx, name)
  4. Non-data descriptor -> invoke tp_descr_get
  5. Plain class variable -> wrap in VT
  6. __getattr__ fallback -> obj.call_getattr_fallback(tx, name)
  7. AttributeError
©Úis_data_descriptorz2object_generic_getattr: unhandled data descriptor z for Ú__get__Ú
tp_methodsr^  z6object_generic_getattr: unhandled non-data descriptor zobject_generic_getattr: 'z' has no attribute 'rJ   )Úuser_definedr‰  r7   r\  r   rX  r   r   r9  r~  Ú_UnhandledDescriptorErrorrR   Úlookup_instance_dictÚhasattrr‚  Ú_lookup_tp_tabler…  r   ÚCallMethodVariableÚcall_getattr_fallbackrØ   )rA   r¡   rS  r‰  rR  r\  rZ  r[  rÁ   Úinstance_resultÚgetattr_results   &&&        r(   Úobject_generic_getattrr•  z  sÆ  € õ, 1à�o‰oÓ€GØ�Z‰Z×8Ð8œJ s§z¡z°4Ó8€Fô ˜7Ó)€Ið œÓ&Ñ+=¸i×+HÒ+HÜ"×(Ò(¨Ó5ˆÜ(¨¸ÀvÓNˆØÒØˆMÜ'Ø@Ü�I‹Ð˜u T Fð,ó
ð 	
ð ×.Ñ.¨rÓ8€OØÒ"ØÐð œÓ&¬7´4¸	³?ÀI×+NÒ+Nô ˜9×%Ò%Ø× Ñ   |Ó4Ò@Ü& s×+Ò+ä×/Ò/°À&ÔIÐIä"×(Ò(¨Ó5ˆÜ(¨¸ÀvÓNˆØÒØˆMÜ'ØDÜ�I‹Ð˜u T Fð,ó
ð 	
ð œÓ&Ü×$Ò$ R°FÓ;Ð;ð ×.Ñ.¨rÓ8€NØÒ!ØÐô $Ø
# G×$4Ñ$4Ð#5Ð5IÈ$ÈÈqÐQóð r*   c          
      óD   € V ^8„  d   QhRRR\         R\        RRR\         /# )r!   rA   r   r¡   rS  ÚdefaultzVariableTracker | objectr$   r•  )r'   s   "r(   r)   r)   Î  sA   € ÷ 9Cñ 9CØ#ð9Cä	ð9Cô ð9Cð (ð	9Cô
 ñ9Cr*   c                ón  € ^RI Hp VP                  4       '       d
   VR8X  d   RpV P                  P                  P                  W4      '       dò   \        V\        P                  4      '       g&   V P                  P                  P                  W4      # V P                  P                  P                  W\        P                  4      '       ds   V P                  P                  P                  WRR7      pVP                  V4      p\        V\        P                  4      '       g   V\        J g   V! V4      '       g   V# V\        JdP   VP!                  W4      pVP#                  RR4      '       g   \%        RV 24      hVP'                  4       '       g   V# VP)                  V4      pVe   VP+                  W4      p	V	e   V	# VP,                  ;'       d    \/        VP,                  V4      p
 VP1                  W4      #   \2         d    h \4         d    \        P6                  ! YT
R7      u # i ; i)	zíDynamo's PyObject_GetAttr: attribute access dispatch.

Checks side effects for pending attribute mutations, then dispatches
to obj.tp_getattro_impl(tx, name).  On NotImplementedError, falls back
to GetAttrVariable (deferred resolution).
rˆ  Ú_gradÚgradT)Ú
deleted_okFz2hasattr_var must be a constant True or False, got r^  )rŒ  r‰  Ú	is_tensorr9  Úside_effectsÚhas_pending_mutation_of_attrr6   r   ÚUserDefinedObjectVariableÚ	load_attrr   ÚINSTANCE_DICTÚlookup_class_mro_attrÚDeletedVariabler   Ú_NO_DEFAULTÚcall_obj_hasattrr�  r:  r¸   Úlookup_tp_getset_memberÚgetterr\  r   Útp_getattro_implr   r8   ÚGetAttrVariable)rA   r¡   rS  r—  r‰  r  rZ  Úhasattr_varÚgetsetrÁ   r\  s   &&&&       r(   Úgeneric_getattrr¬  Î  sÞ  € õ 1ð ‡}�}‡‚˜4 7œ?Øˆð 
‡y�y×Ñ×:Ñ:¸3×EÒEÜ˜#œy×BÑB×CÒCØ—9‘9×)Ñ)×3Ñ3°CÓ>Ð>Ø�9‰9×!Ñ!×>Ñ>ØÔ'×5Ñ5÷
ò 
ð —I‘I×*Ñ*×4Ñ4°SÈ4Ð4ÓPˆEØ×1Ñ1°$Ó7ˆIÜ˜e¤Y×%>Ñ%>×?Ò?Øœ^Ó+Ñ3EÀi×3PÒ3Pà�ð ”kÓ!Ø×*Ñ*¨2Ó4ˆØ×,Ñ,¨T°5×9Ò9Ü ØDÀ[ÀMÐRóð ð ×-Ñ-×/Ò/ØˆNð ×(Ñ(¨Ó.€FØÒØ—‘˜sÓ'ˆØÒØˆMð �Z‰Z×8Ð8œJ s§z¡z°4Ó8€FðCØ×#Ñ# BÓ-Ð-øÜ.ô ØÜô CÜ×(Ò(¨¸6ÔBÒBðCús   Ç2H ÈH4ÈH4È3H4c                ó,  € V ^8„  d   Qh/ ^ \         9   d   \        \        ,          ;R&   ^\         9   d   \        \        \        3,          ;R&   ^\         9   d   \        \        \        3,          ;R&   ^\         9   d   \
        \        R3,          ;R&   # )r!   rÍ   r  r!  .rL  )Ú__conditional_annotations__ÚsetrT   r‹   rE   rS   rR   )r'   s   "r(   r)   r)      s…   € ÷ ñ ÷~  Ò Œs”3�xÑ ñ÷R7ò Œt”Cœ�H�~ñ ñS7÷d7ò ŒŒc”3ˆh�ñ ñe7÷f<ò ¬%´°c°	Õ*:ñ òg<r*   )F)ër®  Ú__doc__ÚabcrÏ   ÚenumrÕ   rE  rG  Ú	functoolsr   r   r   r   ÚtorchÚtorch._C._dynamor   r   r   r	   r
   r   Ú r   r   r   rá   r   r   r   r   r   r   r\  r   r   Úutilsr   r!  r   r   r   r   r   r¶   r   Úsymbolic_convertr   r?   rL   rW   rb   rf   ÚSQ_ITEMrŒ   Ú	SQ_LENGTHr-  Ú	SQ_CONCATÚtype_implements_sq_concatÚSQ_INPLACE_CONCATÚ!type_implements_sq_inplace_concatÚSQ_CONTAINSÚtype_implements_sq_containsÚSQ_ASS_ITEMÚtype_implements_sq_ass_itemÚ	SQ_REPEATÚtype_implements_sq_repeatÚSQ_INPLACE_REPEATÚ!type_implements_sq_inplace_repeatÚ	MP_LENGTHÚtype_implements_mp_lengthÚMP_SUBSCRIPTÚtype_implements_mp_subscriptÚMP_ASS_SUBSCRIPTÚ type_implements_mp_ass_subscriptrj   ÚNB_ADDÚtype_implements_nb_addÚNB_SUBTRACTÚtype_implements_nb_subtractÚNB_MULTIPLYÚtype_implements_nb_multiplyÚNB_REMAINDERÚtype_implements_nb_remainderÚNB_POWERÚtype_implements_nb_powerÚNB_NEGATIVEÚtype_implements_nb_negativeÚNB_POSITIVEÚtype_implements_nb_positiveÚNB_ABSOLUTEÚtype_implements_nb_absoluteÚNB_BOOLÚtype_implements_nb_boolÚ	NB_INVERTÚtype_implements_nb_invertÚ	NB_LSHIFTÚtype_implements_nb_lshiftÚ	NB_RSHIFTÚtype_implements_nb_rshiftÚNB_ANDÚtype_implements_nb_andÚNB_XORÚtype_implements_nb_xorÚNB_ORÚtype_implements_nb_orÚNB_INTÚtype_implements_nb_intÚNB_FLOATÚtype_implements_nb_floatÚNB_INPLACE_ADDÚtype_implements_nb_inplace_addÚNB_INPLACE_SUBTRACTÚ#type_implements_nb_inplace_subtractÚNB_INPLACE_MULTIPLYÚ#type_implements_nb_inplace_multiplyÚNB_INPLACE_REMAINDERÚ$type_implements_nb_inplace_remainderÚNB_INPLACE_POWERÚ type_implements_nb_inplace_powerÚNB_INPLACE_LSHIFTÚ!type_implements_nb_inplace_lshiftÚNB_INPLACE_RSHIFTÚ!type_implements_nb_inplace_rshiftÚNB_INPLACE_ANDÚtype_implements_nb_inplace_andÚNB_INPLACE_XORÚtype_implements_nb_inplace_xorÚNB_INPLACE_ORÚtype_implements_nb_inplace_orÚNB_FLOOR_DIVIDEÚtype_implements_nb_floor_divideÚNB_TRUE_DIVIDEÚtype_implements_nb_true_divideÚNB_INPLACE_FLOOR_DIVIDEÚ'type_implements_nb_inplace_floor_divideÚNB_INPLACE_TRUE_DIVIDEÚ&type_implements_nb_inplace_true_divideÚNB_INDEXr�   ÚNB_MATRIX_MULTIPLYÚ"type_implements_nb_matrix_multiplyÚNB_INPLACE_MATRIX_MULTIPLYÚ*type_implements_nb_inplace_matrix_multiplyrr   rv   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.  r3  rì   rë   r7  rE  rH  rN  rT  rY  r`  re  ro  Ú	NB_DIVMODr˜  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+  r4  r<  ÚABCMetaÚ_CÚ_TensorMetaÚEnumMetarL  rK  rT  r¤  r�  rX  r~  rs  rq  ro  r�  r‚  r…  r•  r¬  r)   )r®  s   @r(   Ú<module>r     sÉ  øðöó Û Û Û 
Û Û ß (ß *ã ÷÷ ÷ 7Ñ 6÷÷ ÷ (Ý ÷õ õ '÷ Ý<õ7õt	ñ �3Ôô$ó ð$õ
%õ%ñ "Ð"9À×@WÑ@WÔXÐ Ù#Ø /×";Ñ";ôÐ ñ $Ø /×";Ñ";ôÐ ñ %,Ø /×"CÑ"Cô%Ð !ñ &Ø /×"=Ñ"=ôÐ ñ &Ø /×"=Ñ"=ôÐ ñ $Ø /×";Ñ";ôÐ ñ %,Ø /×"CÑ"Cô%Ð !ñ
 $Ø .×":Ñ":ôÐ ñ  'Ø .×"=Ñ"=ô Ð ñ $+Ø .×"AÑ"Aô$Ð  ñ $Ø .×":Ñ":ôÐ õ
(ñ !Ð!8¸}×?SÑ?SÔTÐ Ù%Ø -×";Ñ";ôÐ ñ &Ø -×";Ñ";ôÐ ñ  'Ø -×"<Ñ"<ô Ð ñ #Ð#:À×AWÑAWÔXÐ Ù%Ø -×";Ñ";ôÐ ñ &Ø -×";Ñ";ôÐ ñ &Ø -×";Ñ";ôÐ ñ "Ð"9À×@UÑ@UÔVÐ Ù#Ø -×"9Ñ"9ôÐ ñ $Ø -×"9Ñ"9ôÐ ñ $Ø -×"9Ñ"9ôÐ ñ !Ð!8¸}×?SÑ?SÔTÐ Ù Ð!8¸}×?SÑ?SÔTÐ ÙÐ 7¸m×>QÑ>QÔRÐ Ù Ð!8¸}×?SÑ?SÔTÐ Ù"Ð#:À×AWÑAWÔXÐ Ù!(Ø -×">Ñ">ô"Ð ñ '.Ø -×"CÑ"Cô'Ð #ñ '.Ø -×"CÑ"Cô'Ð #ñ (/Ø -×"DÑ"Dô(Ð $ñ $+Ø -×"@Ñ"@ô$Ð  ñ %,Ø -×"AÑ"Aô%Ð !ñ %,Ø -×"AÑ"Aô%Ð !ñ ")Ø -×">Ñ">ô"Ð ñ ")Ø -×">Ñ">ô"Ð ñ !(Ø -×"=Ñ"=ô!Ð ñ #*Ø -×"?Ò"?ô#Ð ñ ")Ø -×">Ò">ô"Ð ñ +2Ø -×"GÒ"Gô+Ð 'ñ *1Ø -×"FÒ"Fô*Ð &ñ #Ð#:À×AWÒAWÔXÐ Ù%,Ø -×"BÒ"Bô&Ð "ñ .5Ø -×"JÒ"Jô.Ð *õ
4õ
8õ
4õ3õ4õ1õ-õ.õ-õ8õ
Rõ#õ%)ñP ›%€Ó õSõDõD(OõVYõ@õ4õ0õ2Uõ.+õ\$DõN*õZõ ð. #-÷#õLõ,Jõ $õ&õ,õ,õ,:õõ,%SðZØ�×(Ñ(ðà˜×8Ñ8ðð ˜×8Ñ8ðð �×(Ñ(ð	ð
 ˆ]× Ñ ðð �]×0Ñ0ðð �=×,Ñ,ðð ˜=×<Ñ<ðð ˆm×"Ñ"ðð �m×2Ñ2ðð �=×,Ñ,ðð ˜=×<Ñ<ðð ˜-×:Ò:ðð ! -×"JÒ"Jðð ˆm×"Ñ"ðð  �m×2Ñ2ð!ð" ˆm×"Ñ"ð#ð$ �m×2Ñ2Ø�}×4Ò4Ø˜}×DÒDØ�m×2Ò2Ø˜m×BÒBØ�M×.Ñ.Ø˜M×>Ñ>Ø�×(Ò(Ø�×&Ñ&Ø˜×6Ñ6ñ7€õ>4õõ"F3õRõ">
õB5õF)õ&õ($õ"õ@)õ.1õ*

õõ8õ@:õ÷fõ,-÷Hõ*-ðP "7Ð õ7õ<+ð( ˆhØˆhØˆhØˆhØˆhØˆhð!€ó ð ˆcØˆdØˆdØˆdØˆcØˆdð€ó õE
õP-õ0	õ&õ$,ð4 ‡K‚KØ	‡H‚H×ÒØ‡M‚Mð>Ð (ó õ_'ñ~ ‹h€ð 5Ð õõ2ðr 
×ÒØ	×ÒØ	×Òð€õ0õõQðp +6÷	9Cñ 9Cr*   