Ë
    g^(h@=  ã                  ó–  — U d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmc mZ ddlmZmZ d	d
lmZ erddlZddlmZ ddlmZ g Zded<   ej:                  �rãddlZddlZddl mc m!Z" erddl m#Z#  eejH                  jJ                  d¬«      d-d„«       Z&dZ'dD ]&  Z' e(ee'«      Z)  ee)d¬«      e)jT                  «       [)Œ( [' ee"jV                  d¬«      	 d.	 	 	 	 	 d/d„«       Z+ ee"jX                  d¬«      	 d.	 	 	 	 	 d0d„«       Z,edgz  Z ee"jZ                  d¬«      	 d.	 	 	 	 	 d1d„«       Z-edgz  Z G d„ de.«      Z/ e/«       Z0[/ ed¬«       G d„ d«      «       Z1 e1d ddd d«      Z2d2d!„Z3 ee"jh                  d¬«      	 d.	 	 	 	 	 d3d"„«       Z4ed#gz  Z ee"jj                  d¬«      	 d.	 	 	 	 	 d4d$„«       Z5ed%gz  Z ee"jl                  d¬«      d5d&„«       Z6ed'gz  Z ee"jn                  d¬«      dd(œ	 	 	 	 	 	 	 	 	 d6d)„«       Z7ed*gz  Z ee"jp                  d¬«      dd(œ	 	 	 	 	 	 	 	 	 d6d+„«       Z8ed,gz  Zyy)7z)
Python polyfills for torch.utils.pytree
é    )Úannotations)Údeque)Ú	dataclassÚfield)ÚAnyÚCallableÚLiteralÚTYPE_CHECKING)ÚTypeIsN)ÚBUILTIN_TYPESÚSTANDARD_DICT_TYPESé   )Úsubstitute_in_graph)ÚIterable)ÚSelfz	list[str]Ú__all__)ÚPyTreeT)Úcan_constant_fold_throughc                 ó   — t        d«      ‚)NzeShould not be called directly because the original function will be called in the constant fold path.)Ú
ValueError)ÚargsÚkwargss     ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/polyfills/pytree.pyÚ_r   $   s   € ô ðVó
ð 	
ó    Ú )Úis_namedtupleÚis_namedtuple_classÚis_namedtuple_instanceÚis_structseqÚis_structseq_classÚis_structseq_instanceÚnamedtuple_fieldsÚstructseq_fieldsc                ót   — | �
|�	 || «      ryt         j                  j                  t        | «      d¬«      €yy)NTÚtorch©Ú	namespaceF)ÚoptreeÚregister_pytree_nodeÚgetÚtype©ÚtreeÚis_leafs     r   Útree_is_leafr0   B   s=   € ð
 ˆ<˜GÐ/±G¸D´MØÜ×&Ñ&×*Ñ*¬4°«:ÀÐ*ÓIÐQØØr   Fc              #  óÌ   K  — | g}|r[|j                  «       }t        ||¬«      r|–— Œ$t        j                  ||dd¬«      ^}}|j	                  t        |«      «       |rŒZy y ­w)N©r/   Tr&   ©r/   Únone_is_leafr(   )Úpopr0   r)   Útree_flatten_one_levelÚextendÚreversed)r.   r/   ÚstackÚnodeÚchildrenr   s         r   Ú	tree_iterr<   M   sg   è ø€ ð
 �ˆÙØ—9‘9“;ˆDÜ˜D¨'Õ2Ø’
Øä!×8Ñ8ØØØ!Ø!ô	ˆLˆH�qð �L‰Lœ (Ó+Ô,ô ùs   ‚AA$Á"A$r<   c                ó.   — t        t        | |¬«      «      S ©Nr2   )Úlistr<   r-   s     r   Útree_leavesr@   c   s   € ô
 ”I˜d¨GÔ4Ó5Ð5r   r@   c                  ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )Ú	_Asterisk© c                ó$   •— t         ‰| �  | d«      S ©NÚ*)ÚsuperÚ__new__)ÚclsÚ	__class__s    €r   rH   z_Asterisk.__new__o   s   ø€ Ü‘7‘? 3¨Ó,Ð,r   c                 ó   — yrE   rC   ©Úselfs    r   Ú__repr__z_Asterisk.__repr__r   s   € Ør   )Úreturnr   ©rO   Ústr)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__rH   rN   Ú__classcell__)rJ   s   @r   rB   rB   l   s   ø„ Øˆ	õ	-÷	r   rB   )Úfrozenc                  ó2  — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<    ed¬«      Zded<    ed¬«      Zded<    ed¬«      Zded<    ed¬«      Z	ded<    ed¬«      Z
ded<   d"d„Zd#d„Zd$d„Zed%d„«       Zd&d„Zd'd„Zd(d„Zd)d„Zd*d„Zd+d„Zd,d „Zy!)-Ú
PyTreeSpecz0Analog for :class:`optree.PyTreeSpec` in Python.ztuple[PyTreeSpec, ...]Ú	_childrenúbuiltins.type | NoneÚ_typer   Ú	_metadataztuple[Any, ...]Ú_entriesz7Callable[[Any | None, Iterable[PyTree]], PyTree] | NoneÚ_unflatten_funcF)ÚinitÚintÚ	num_nodesÚ
num_leavesÚnum_childrenzLiteral[True]r4   zLiteral['torch']r(   c                ój  — | j                   €Nt        | j                  «      dk(  sJ ‚| j                  �J ‚| j                  dk(  sJ ‚| j
                  �J ‚d}d}d}nft        | j
                  «      sJ ‚t        d„ | j                  D «       d¬«      }t        d„ | j                  D «       «      }t        | j                  «      }t        j                  | d|«       t        j                  | d|«       t        j                  | d	|«       t        j                  | d
d«       t        j                  | dd«       y )Nr   rC   é   c              3  ó4   K  — | ]  }|j                   –— Œ y ­w©N)rb   ©Ú.0Úspecs     r   ú	<genexpr>z+PyTreeSpec.__post_init__.<locals>.<genexpr>“   s   è ø€ Ò K°D §¥Ñ Kùó   ‚)Ústartc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrh   ©rc   ri   s     r   rl   z+PyTreeSpec.__post_init__.<locals>.<genexpr>”   s   è ø€ Ò L°T §¥Ñ Lùrm   rb   rc   rd   r4   Tr(   r&   )
r\   ÚlenrZ   r]   r^   r_   ÚcallableÚsumÚobjectÚ__setattr__)rM   rb   rc   rd   s       r   Ú__post_init__zPyTreeSpec.__post_init__ˆ   s  € Ø�z‰zÐ!Ü˜4Ÿ>™>Ó*¨aÒ/Ð/Ð/Ø—~‘~Ð-Ð-Ð-Ø—}‘}¨Ò*Ð*Ð*Ø×+Ñ+Ð3Ð3Ð3Ø�	Ø�
Ø ‘ä × 4Ñ 4Ô5Ð5Ð5ÜÑ K¸D¿N¹NÔ KÐSTÔU�	Ü Ñ L¸T¿^¹^Ô LÓL�
Ü" 4§>¡>Ó2�ä×Ñ˜t [°)Ô<Ü×Ñ˜t \°:Ô>Ü×Ñ˜t ^°\ÔBÜ×Ñ˜t ^°TÔ:Ü×Ñ˜t [°'Õ:r   c                óB   ‡— dˆfd„Šd ‰| «      › d| j                   ›d�S )Nc                ó(  •— | j                  «       r| j                  �J ‚t        S | j                  €J ‚t        | j                  «      sJ ‚| j
                  D �cg c]
  } ‰|«      ‘Œ }}| j                  t        v s>t        j                  | j                  «      st        j                  | j                  «      r| j	                  | j                  |«      S d| j                  j                  › d| j                  ›ddj                  |«      › d�S c c}w )NzCustomTreeNode(ú[z], [z, z]))r/   r,   Ú	_asteriskrr   r_   rZ   r   r)   r   r!   r]   rR   Újoin)ÚtreespecÚsubspecÚchildren_representationsÚhelpers      €r   r   z#PyTreeSpec.__repr__.<locals>.helperž   s  ø€ Ø×#Ñ#Ô%Ø#Ÿ=™=Ð0Ð0Ð0Ü$Ð$à—}‘}Ð0Ð0Ð0Ü × 8Ñ 8Ô9Ð9Ð9à3;×3EÑ3Eö,Ø(/‘F˜7•Oð,Ð(ð ,ð —M‘M¤]Ñ2Ü×1Ñ1°(·-±-Ô@Ü×0Ñ0°·±Ô?à#×3Ñ3Ø ×*Ñ*Ø0óð ð
 & h§m¡m×&<Ñ&<Ð%=¸Q¸x×?QÑ?QÐ>Tð UØŸ	™	Ð":Ó;Ð<¸Bð@ðùò,s   ÁDzPyTreeSpec(z, NoneIsLeaf, namespace=ú))r|   rY   rO   rQ   r'   )rM   r   s    @r   rN   zPyTreeSpec.__repr__�   s,   ø€ õð2 ™f T›l˜^Ð+CÀDÇNÁNÐCUÐUVÐWðr   c                ó   — | j                   S rh   rp   rL   s    r   Ú__len__zPyTreeSpec.__len__º   s   € Ø—?‘?Ð"r   c                ó   — | j                   S rh   )r\   rL   s    r   r,   zPyTreeSpec.type½   s   € à—:‘:Ðr   c                óB   — | j                   dk(  xr | j                  dk(  S )Nrf   )rb   rc   rL   s    r   r/   zPyTreeSpec.is_leafÁ   s   € Ø—>‘> QÑ&Ò?¨4¯?©?¸aÑ+?Ð?r   c                ó,   — t        | j                  «      S rh   )r?   rZ   rL   s    r   r;   zPyTreeSpec.childrenÄ   s   € Ü˜Ÿ™Ó'Ð'r   c                ó    — | j                   |   S rh   )rZ   ©rM   Úindexs     r   ÚchildzPyTreeSpec.childÇ   s   € Ø—>‘> %Ñ(Ð(r   c                ó,   — t        | j                  «      S rh   )r?   r^   rL   s    r   ÚentrieszPyTreeSpec.entriesÊ   s   € Ü˜Ÿ™Ó&Ð&r   c                ó    — | j                   |   S rh   )r^   r‡   s     r   ÚentryzPyTreeSpec.entryÍ   s   € Ø—=‘= Ñ'Ð'r   c                ó<   ‡— 	 	 	 	 	 	 	 	 dˆfd„Šg } ‰| ||«       |S )Nc           	     ó  •— | j                  «       r|j                  |«       y t        |«      }| j                  t        vr¬|| j                  k7  rt	        d| j                  ›d|›d�«      ‚t        j                  |dd¬«      ^}}}t        |«      | j                  k7  r%t	        d| j                  › dt        |«      › d�«      ‚|| j                  k7  �r�t	        d| j                  ›d�«      ‚| j                  t        v xr |t        v }|s+|| j                  k7  rt	        d	| j                  ›d|›d�«      ‚t        |«      | j                  k7  r%t	        d| j                  › dt        |«      › d�«      ‚|r…| j                  «       }t        |«      }	t        |«      }
|	|
k7  rG|
j                  |	«      }|	j                  |
«      }d
}|r|d|› �z  }|r|d|› �z  }t	        d|› d�«      ‚|D �cg c]  }||   ‘Œ	 }}n[t        j                  |dd¬«      ^}}}|t        ur8|| j                  k7  r)t	        d| j                  ›d| j                  ›d|›d�«      ‚t        || j                   «      D ]  \  }} ‰|||«       Œ y c c}w )NzType mismatch; expected z
, but got ú.Tr&   )r4   r(   zNode arity mismatch; expected z+Node context mismatch for custom node type zNode type mismatch; expected r   z; missing key(s): z; extra key(s): zNode keys mismatchz%Node metadata mismatch for node type z; expected )r/   Úappendr,   r   r   r)   r6   rq   rd   r]   r   r‹   ÚsetÚ
differencer   ÚziprZ   )r|   r:   ÚsubtreesÚ	node_typer;   Úmetadatar   Úboth_standard_dictÚexpected_keysÚgot_key_setÚexpected_key_setÚmissing_keysÚ
extra_keysÚmessageÚkeyÚsubtreer}   r   s                    €r   r   z(PyTreeSpec.flatten_up_to.<locals>.helperÑ   sú  ø€ ð
 ×#Ñ#Ô%Ø—O‘O DÔ)Øä  ›J�	Ø—=‘=¬Ñ5à  H§M¡MÒ1Ü(ð(Ø(0¯©Ð'8¸
À9À-ÈqðRóð ô
 .4×-JÑ-JØØ%)Ø")ô.Ð*�H˜h¨ô
 ˜8“}¨×(=Ñ(=Ò=Ü(ð(Ø(0×(=Ñ(=Ð'>¸jÌÈXËÈÐWXðZóð ð   8×#5Ñ#5Ó5Ü(ØIÈ(Ï-É-ÐIZÐZ[Ð\óð ð !Ÿ™Ô)<Ð<ò =Ø%Ô)<Ð<ð 'ñ .°)¸x¿}¹}Ò2LÜ(ð(Ø(0¯©Ð'8¸
À9À-ÈqðRóð ô ˜4“y H×$9Ñ$9Ò9Ü(ð(Ø(0×(=Ñ(=Ð'>¸jÌÈTËÈÐSTðVóð ñ
 *à(0×(8Ñ(8Ó(:˜Ü&)¨$£i˜Ü+.¨}Ó+=Ð(Ø&Ð*:Ò:Ø+;×+FÑ+FÀ{Ó+S˜LØ)4×)?Ñ)?Ð@PÓ)Q˜JØ&(˜GÙ+Ø 'Ð-?À¸~Ð+NÑ N Ù)Ø 'Ð-=¸j¸\Ð+JÑ J Ü",Ð/AÀ'ÀÈ!Ð-LÓ"MÐMØ9FÖ#G°# D¨£IÐ#G˜Ñ#Gô 28×1NÑ1NØ Ø)-Ø&-ô2Ð.˜ (¨Qð &Ü#(ñ)à&¨(×*<Ñ*<Ò<Ü",Ø"GÈÏÉÐGXð Y,Ø,4×,>Ñ,>Ð+AÀÈHÈ<ÐWXð!Zó#ð ô
 ),¨H°h×6HÑ6HÓ(Iò 7Ñ$�G˜WÙ˜7 G¨XÕ6ñ7ùò# $Hs   Ç+I>)r|   rY   r:   r   r•   úlist[PyTree]rO   ÚNonerC   )rM   r.   r•   r   s      @r   Úflatten_up_tozPyTreeSpec.flatten_up_toÐ   sJ   ø€ ðR7Ø$ðR7àðR7ð 'ðR7ð õ	R7ðh &(ˆHÙ�4˜˜xÔ(ØˆOr   c           	     óê  — t        |t        t        f«      st        |«      }t        |«      | j                  k7  r(t        dt        |«      › d| j                  › d| › d�«      ‚| j                  «       r|d   S d}d}g }| j                  D ]6  }||j                  z  }|j                  |j                  ||| «      «       |}Œ8 t        | j                  «      sJ ‚| j                  | j                  |«      S )Nz0treespec.unflatten(leaves): `leaves` has length z, but the spec refers to a pytree that holds z items (z).r   )Ú
isinstancer?   Útuplerq   rc   r   r/   rZ   r‘   Ú	unflattenrr   r_   r]   )rM   Úleavesrn   Úendr•   r}   s         r   r§   zPyTreeSpec.unflatten)  sý   € Ü˜f¤t¬U mÔ4Ü˜f›�Ü�6‹{˜dŸo™oÒ-Ü ØFÄsÈ6Ã{Àmð TBØBFÇ/Á/ÐARð SØ"˜V 2ð'óð ð
 �|‰|Œ~Ø˜a‘yÐ ð ˆEØˆCØˆHØŸ>™>ò �Ø�w×)Ñ)Ñ)�Ø—‘ × 1Ñ 1°&¸¸sÐ2CÓ DÔEØ‘ðô
 ˜D×0Ñ0Ô1Ð1Ð1Ø×'Ñ'¨¯©¸ÓAÐAr   N)rO   r¢   rP   )rO   ra   )rO   r[   )rO   Úbool)rO   zlist[PyTreeSpec])rˆ   ra   rO   rY   )rO   ú	list[Any])rˆ   ra   rO   r   )r.   r   rO   r¡   )r¨   úIterable[Any]rO   r   )rR   rS   rT   Ú__doc__Ú__annotations__r   rb   rc   rd   r4   r(   rv   rN   r‚   Úpropertyr,   r/   r;   r‰   r‹   r�   r£   r§   rC   r   r   rY   rY   x   s¸   … á>à)Ó)Ø#Ó#Ø‹Ø!Ó!ØPÓPá EÔ*ˆ	�3Ó*Ù UÔ+ˆ
�CÓ+Ù! uÔ-ˆ�cÓ-Ù&+°Ô&7ˆ�mÓ7Ù&+°Ô&7ˆ	Ð#Ó7ó	;ó*	ó:	#ð 
ò	ó 
ð	ó	@ó	(ó	)ó	'ó	(óW	ôr	Br   rY   rC   c               ó"   — t        | t        «      S rh   )r¥   rY   )Úobjs    r   Ú_is_pytreespec_instancer²   C  s   € Ü˜#œzÓ*Ð*r   c                ó2   ‡‡— dˆˆfd„Šg } ‰| |«      }||fS )Nc                óä   •‡— t        | ‰¬«      r‰j                  | «       t        S t        j                  | ‰dd¬«      \  }}}}t        ˆˆfd„|D «       «      }t        |t        | «      |||«      S )Nr2   Tr&   r3   c              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrh   rC   )rj   r‰   r   r¨   s     €€r   rl   z/tree_flatten.<locals>.helper.<locals>.<genexpr>b  s   øè ø€ ÒI°u™V E¨6×2ÑIùs   ƒ)r0   r‘   Ú
_LEAF_SPECr)   r6   r¦   rY   r,   )	r:   r¨   r;   r—   r‹   Úunflatten_funcÚsubspecsr   r/   s	    `     €€r   r   ztree_flatten.<locals>.helperP  su   ù€ Ü˜D¨'Õ2Ø—‘˜dÔ#Ü!Ð!ô ×-Ñ-ØØØ!Ø!ô	ñØØØØô ÔIÀÔIÓIˆHÜ˜h¬¨T«
°H¸gÀ~ÓVÐVr   )r:   r   r¨   r«   rO   rY   rC   )r.   r/   r¨   r|   r   s    `  @r   Útree_flattenr¹   F  s'   ù€ ö	Wð* ˆÙ˜$ Ó'ˆØ�xÐÐr   r¹   c                ó"   — t        | |¬«      d   S )Nr2   rf   )r¹   r-   s     r   Útree_structurer»   k  s   € ô ˜D¨'Ô2°1Ñ5Ð5r   r»   c                ój   — t        |«      st        dt        |«      › d�«      ‚|j                  | «      S )Nzhtree_unflatten(leaves, treespec): Expected `treespec` to be instance of PyTreeSpec but got item of type r�   )r²   Ú	TypeErrorr,   r§   )r¨   r|   s     r   Útree_unflattenr¾   y  sC   € ô ' xÔ0Üð3Ü37¸³>Ð2BÀ!ðEóð ð ×!Ñ! &Ó)Ð)r   r¾   r2   c               ó¨   — t        ||¬«      \  }}|g|D �cg c]  }|j                  |«      ‘Œ c}z   }|j                  t        | g|¢­Ž «      S c c}w r>   )r¹   r£   r§   Úmap©Úfuncr.   r/   Úrestsr¨   r|   ÚrÚ	flat_argss           r   Útree_maprÆ   ‰  sX   € ô (¨°gÔ>Ñˆ�Ø�HÀ5ÖI¸a × 6Ñ 6°qÕ 9ÒIÑIˆ	Ø×!Ñ!¤# dÐ"7¨YÒ"7Ó8Ð8ùò  Js   —ArÆ   c               ó¤   — t        ||¬«      \  }}|g|D �cg c]  }|j                  |«      ‘Œ c}z   }t        t        | g|¢­Ž d¬«       |S c c}w )Nr2   r   )Úmaxlen)r¹   r£   r   rÀ   rÁ   s           r   Ú	tree_map_rÉ   –  sV   € ô (¨°gÔ>Ñˆ�Ø�HÀ5ÖI¸a × 6Ñ 6°qÕ 9ÒIÑIˆ	ÜŒc�$Ð#˜Ò#¨AÕ.Øˆùò  Js   —ArÉ   )r   r   r   r   rO   rª   rh   )r.   r   r/   úCallable[[PyTree], bool] | NonerO   rª   )r.   r   r/   rÊ   rO   r¬   )r.   r   r/   rÊ   rO   r«   )r±   r   rO   zTypeIs[PyTreeSpec])r.   r   r/   rÊ   rO   ztuple[list[Any], PyTreeSpec])r.   r   r/   rÊ   rO   rY   )r¨   r¬   r|   rY   rO   r   )
rÂ   zCallable[..., Any]r.   r   rÃ   r   r/   rÊ   rO   r   )9r­   Ú
__future__r   Úcollectionsr   Údataclassesr   r   Útypingr   r   r	   r
   Útyping_extensionsr   Útorch.utils._pytreeÚutilsÚ_pytreeÚpython_pytreer   r   Ú
decoratorsr   ÚbuiltinsÚcollections.abcr   r   r   r®   Ú_cxx_pytree_dynamo_traceabler)   Ú	optree._CÚtorch.utils._cxx_pytreeÚ_cxx_pytreeÚ
cxx_pytreer   Ú_CÚis_dict_insertion_orderedr   Ú__nameÚgetattrÚ__funcÚ__python_implementation__r0   r<   r@   rQ   rB   rz   rY   r¶   r²   r¹   r»   r¾   rÆ   rÉ   rC   r   r   ú<module>râ      s¨  ðòõ #å ß (ß 8Ó 8Ý $ç +Ð +ß Bå ,ñ ÛÝ(Ý&ð €ˆÓ ð ×-Ó-ÛÛç0Ð0áÝ2áØ�	‰	×+Ñ+Ø"&ôò
ó	ð
ð €Fð	ò ˆñ ˜ Ó(ˆØCÑ˜F¸dÔCØ×,Ñ,ô	
ñ ðð 	á˜×0Ñ0ÈDÔQð 48ðØðà0ðð 
òó Rðñ ˜×-Ñ-ÈÔOð 48ð-Øð-à0ð-ð 
ò-ó Pð-ð& �ˆ}Ñ€Gá˜×/Ñ/È4ÔPð 48ð6Øð6à0ð6ð 
ò6ó Qð6ð �ˆÑ€Gô�Cô ñ “€IØá�dÔ÷FBð FBó ðFBñP ˜B  d¨B°Ó5€Jó+ñ Ø×Ñð #(ô	ð 48ð Øð à0ð ð 
&ò óð ð: �ÐÑ€GáØ×!Ñ!ð #(ô	ð 48ð6Øð6à0ð6ð 
ò6óð6ð Ð Ð!Ñ!€GáØ×!Ñ!ð #(ô	ò*óð*ð Ð Ð!Ñ!€Gá˜×,Ñ,ÈÔMð
 48ñ	9Ø ð9àð9ð ð9ð 1ð	9ð
 
ò9ó Nð9ð �
ˆ|Ñ€Gá˜×-Ñ-ÈÔNð
 48ñ		Ø ð	àð	ð ð	ð 1ð		ð
 
ò	ó Oð	ð �ˆ}Ñ�GðO .r   