Ë
    L²jm_  ã            	      óè  — 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 ddlZddlZddlZddlmZmZmZmZmZmZmZmZ ddlmc 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$m%Z%m&Z& ddl'm(Z(m)Z) ddlm*Z* g d¢Z+ ed«      Z, ed«      Z- ed«      Z. e!ej^                  j`                  d¬«      d8d„«       Z1dZ2defdefdefdefdefdefdefdeffD ](  \  Z2Z3  e!e3d¬«      e3jh                  «       e5«       e2<   [3Œ* [2 e!ejl                  d¬«      	 d9dddœ	 	 	 	 	 	 	 	 	 d:d „«       Z6 e!ejn                  d¬«      	 d9dddœ	 	 	 	 	 	 	 	 	 d;d!„«       Z7 e!ejp                  d¬«      	 d9dddœ	 	 	 	 	 	 	 	 	 d<d"„«       Z8 G d#„ d$e9«      Z: e:«       Z;[: edd¬%«       G d&„ d'«      «       Z<d=d(„Z= e!ej|                  d¬«      dddœ	 	 	 	 	 d>d)„«       Z> e!ej~                  d¬«      	 d?dddœ	 	 	 	 	 	 	 d@d*„«       Z? e!ej€                  d¬«      	 d?dddœ	 	 	 	 	 	 	 	 	 dAd+„«       Z@ e!ej‚                  d¬«      	 d9dddœ	 	 	 	 	 	 	 	 	 dBd,„«       ZA e!ej^                  j„                  d¬«      	 	 	 dC	 	 	 	 	 	 	 	 	 dDd-„«       ZC e!ejˆ                  d¬«      	 d9dddœ	 	 	 	 	 	 	 	 	 dEd.„«       ZD e!ej^                  jŠ                  d¬«      	 	 	 dC	 	 	 	 	 	 	 	 	 dFd/„«       ZF e!ejŽ                  d¬«      	 d9dddœ	 	 	 	 	 	 	 	 	 dGd0„«       ZG e!ej�                  d¬«      dHd1„«       ZHej’                  j•                   eKd«      «      ZLeL€J ‚ e!eLjš                  dd¬2«      dId3„«       ZN ejž                  dd4¬5«      5  ej’                  j•                  eP«      ZQeQ€J ‚	 ddd«        e!eQj¤                  dd¬2«      	 	 	 	 dJd6„«       ZS e!eQjš                  dd¬2«      	 	 	 	 	 	 dKd7„«       ZTy# 1 sw Y   ŒLxY w)Lz)
Python polyfills for torch.utils.pytree
é    )Úannotations)Údeque)Ú	dataclassÚfield)ÚAnyÚTYPE_CHECKINGÚTypeVarN)Úis_namedtupleÚis_namedtuple_classÚis_namedtuple_instanceÚis_structseqÚis_structseq_classÚis_structseq_instanceÚnamedtuple_fieldsÚstructseq_fields)ÚBUILTIN_TYPESÚSTANDARD_DICT_TYPESé   )Úsubstitute_in_graph)ÚCallableÚIterableÚMapping)ÚSelfÚTypeIs)ÚPyTree)r
   r   r   r   r   r   r   r   Útreespec_leafÚtreespec_tupleÚtreespec_dictÚtree_is_leafÚ	tree_iterÚtree_leavesÚtree_flattenÚtree_flatten_with_pathÚtree_structureÚtree_unflattenÚ_TÚ_KTÚ_VTT)Ú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/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/polyfills/pytree.pyÚ_r/   E   s   € ô ð	Róð ó    Ú r
   r   r   r   r   r   r   r   F©Únone_is_leafÚ	namespacec              óx   — | €|s
|�	 || «      ryt         j                  j                  t        | «      |¬«      €yy)NT©r4   F)ÚoptreeÚregister_pytree_nodeÚgetÚtype©ÚtreeÚis_leafr3   r4   s       r.   r   r   e   s?   € ð 	ˆ™¨7Ð+>Á7È4Ä=ØÜ×"Ñ"×&Ñ&¤t¨D£z¸YÐ&ÓGÐOØØr0   c            #  óÐ   K  — | g}|r]|j                  «       }t        ||||¬«      r|–— Œ&t        j                  ||||¬«      ^}}|j	                  t        |«      «       |rŒ\y y ­w©N©r=   r3   r4   )Úpopr   r7   Útree_flatten_one_levelÚextendÚreversed)r<   r=   r3   r4   ÚstackÚnodeÚchildrenr/   s           r.   r    r    u   ss   è ø€ ð ˆF€EÙ
Ø�y‰y‹{ˆÜØØØ%Øõ	
ð ŠJØä×4Ñ4ØØØ%Øô	
ˆˆ�1ð 	�‰”X˜hÓ'Ô(ô# ùs   ‚A!A&Á$A&c              ó2   — t        t        | |||¬«      «      S r?   )Úlistr    r;   s       r.   r!   r!   “   s%   € ô ÜØØØ%Øô		
óð r0   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.   rQ   z_Asterisk.__new__©   s   ø€ Ü‰w‰˜s CÓ(Ð(r0   c                 ó   — yrN   rL   ©Úselfs    r.   Ú__repr__z_Asterisk.__repr__¬   s   € Ør0   )Úreturnr   ©rX   Ústr)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__rQ   rW   Ú__classcell__)rS   s   @r.   rK   rK   ¦   s   ø„ Ø€Iõ)÷r0   rK   )ÚfrozenÚslotsc                  ó  — e Zd ZU dZded<   ded<   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<   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d/d!„Zd0d"„Zy#)1Ú
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_funcÚboolr3   rZ   r4   F)ÚinitÚintÚ	num_nodesÚ
num_leavesÚnum_childrenc               ó   — | j                   €Nt        | j                  «      dk(  sJ ‚| j                  �J ‚| j                  dk(  sJ ‚| j
                  �J ‚d}d}d}n_t        | j
                  «      sJ ‚d}d}| j                  D ]   }||j                  z  }||j                  z  }Œ" t        | j                  «      }t        j                  | d|«       t        j                  | d|«       t        j                  | d|«       y )Nr   rL   é   rm   rn   ro   )rf   Úlenrd   rg   rh   ri   Úcallablerm   rn   ÚobjectÚ__setattr__)rV   rm   rn   ro   Úchilds        r.   Ú__post_init__zPyTreeSpec.__post_init__Ä   sû   € Ø�:‰:ÐÜ�t—~‘~Ó&¨!Ò+Ð+Ð+Ø—>‘>Ð)Ð)Ð)Ø—=‘= BÒ&Ð&Ð&Ø×'Ñ'Ð/Ð/Ð/ØˆIØˆJØ‰Lä˜D×0Ñ0Ô1Ð1Ð1ØˆIØˆJØŸ™ò /�Ø˜UŸ_™_Ñ,�	Ø˜e×.Ñ.Ñ.‘
ð/ô ˜tŸ~™~Ó.ˆLä×Ñ˜4 ¨iÔ8Ü×Ñ˜4 ¨zÔ:Ü×Ñ˜4 °Õ>r0   c               ó¢   ‡ ‡— dˆˆ fd„Št         ‰‰ «      «      g‰ j                  rdgng ¢d‰ j                  ›�‘}ddj                  |«      › d�S )Nc                ón  •— | j                  «       r| j                  �J ‚t        S | j                  €J ‚t        | j                  «      sJ ‚| j
                  D �cg c]
  } ‰|«      ‘Œ }}| j                  t        v sa| j                  t        d «      u r‰j                  r>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]))r=   r:   Ú	_asteriskrs   ri   rd   r   r3   r7   r   r   rg   r[   Újoin)ÚtreespecÚsubspecÚchildren_representationsÚhelperrV   s      €€r.   r�   z#PyTreeSpec.__repr__.<locals>.helperÛ   s  ø€ Ø×ÑÔ!Ø—}‘}Ð,Ð,Ð,Ü Ð à—=‘=Ð,Ð,Ð,Ü˜H×4Ñ4Ô5Ð5Ð5à/7×/AÑ/Aö(Ø$+‘�w•ð(Ð$ð (ð —‘¤Ñ.Ø—M‘M¤T¨$£ZÑ/¸×8IÒ8IÜ×-Ñ-¨h¯m©mÔ<Ü×,Ñ,¨X¯]©]Ô;à×/Ñ/Ø×&Ñ&Ø,óð ð
 " (§-¡-×"8Ñ"8Ð!9¸¸8×;MÑ;MÐ:Pð QØ—I‘IÐ6Ó7Ð8¸ð<ðùò(s   ÁD2Ú
NoneIsLeafz
namespace=zPyTreeSpec(r{   ú))r~   rc   rX   rZ   )rZ   r3   r4   r}   )rV   Úinnerr�   s   ` @r.   rW   zPyTreeSpec.__repr__Ú   sb   ù€ ö	ô4 ‘�t“Óð
à $× 1Ò 1ˆ|‰n°rð
ð ˜Ÿ™Ð*Ð+ð
ˆð
 ˜TŸY™Y uÓ-Ð.¨aÐ0Ð0r0   c               ó   — | j                   S ©N)rn   rU   s    r.   Ú__len__zPyTreeSpec.__len__û   s   € Ø�‰Ðr0   c               ó   — | j                   S r†   )rf   rU   s    r.   r:   zPyTreeSpec.typeþ   s   € à�z‰zÐr0   c               óB   — | j                   dk(  xr | j                  dk(  S )Nrq   )rm   rn   rU   s    r.   r=   zPyTreeSpec.is_leaf  s   € Ø�~‰~ Ñ"Ò; t§¡¸!Ñ';Ð;r0   c               óf   ‡‡— dˆˆfd„Šg Š ‰| g «       ‰D �cg c]  }t        |«      ‘Œ c}S c c}w )Nc                ó¸   •— | j                  «       r‰j                  |«       y t        | j                  | j                  d¬«      D ]  \  }} ‰|||gz   «       Œ y ©NT©Ústrict)r=   ÚappendÚziprh   rd   )r~   Úpath_prefixÚentryr   r�   Úpathss       €€r.   r�   z PyTreeSpec.paths.<locals>.helper  s^   ø€ Ø×ÑÔ!Ø—‘˜[Ô)Øä"%Ø×!Ñ!Ø×"Ñ"Øô#ò 7‘��wñ
 �w ¨u¨gÑ 5Õ6ñ7r0   )r~   rc   r‘   ú	list[Any]rX   ÚNone)Útuple)rV   Úpathr�   r“   s     @@r.   r“   zPyTreeSpec.paths  s1   ù€ ö
	7ð "$ˆÙˆt�RÔØ(-Ö. ”�d•Ò.Ð.ùÒ.s   ™.c               ó†   ‡‡— 	 	 	 	 	 	 dˆˆfd„Šg Š ‰| g «       ‰D �cg c]  }t        j                  |«      ‘Œ c}S c c}w )Nc           
     óv  •— | j                  «       r‰j                  |«       y | j                  }|€J ‚t        j                  j                  || j                  ¬«      }|€J ‚|j                  }|j                  }t        | j                  | j                  d¬«      D ]  \  }} ‰	|| ||||«      gz   «       Œ y )Nr6   Tr�   )r=   r�   r:   r7   r8   r9   r4   ÚkindÚpath_entry_typer�   rh   rd   )
r~   Úentry_path_prefixÚ	node_typeÚhandlerrš   r›   r’   r   Úentry_pathsr�   s
           €€r.   r�   z$PyTreeSpec.accessors.<locals>.helper  sÎ   ø€ ð ×ÑÔ!Ø×"Ñ"Ð#4Ô5Øà Ÿ™ˆIØÐ(Ð(Ð(Ü×1Ñ1×5Ñ5Ø X×%7Ñ%7ð 6ó ˆGð Ð&Ð&Ð&Ø&-§l¡lˆDØ8?×8OÑ8OˆOä"%Ø×!Ñ!Ø×"Ñ"Øô#ò ‘��wñ
 ØØ%©¸À	È4Ó)PÐ(QÑQõñr0   )r~   rc   rœ   zlist[optree.PyTreeEntry]rX   r•   )r7   ÚPyTreeAccessor)rV   r—   rŸ   r�   s     @@r.   Ú	accessorszPyTreeSpec.accessors  sR   ù€ ð	Ø ð	à7ð	ð ö	ð6 79ˆÙˆt�RÔØ8CÖD°”×%Ñ% dÕ+ÒDÐDùÒDs   Ÿ>c               ó,   — t        | j                  «      S r†   )rI   rd   rU   s    r.   rG   zPyTreeSpec.children6  s   € Ü�D—N‘NÓ#Ð#r0   c               ó    — | j                   |   S r†   )rd   ©rV   Úindexs     r.   rv   zPyTreeSpec.child9  s   € Ø�~‰~˜eÑ$Ð$r0   c               ó,   — t        | j                  «      S r†   )rI   rh   rU   s    r.   ÚentrieszPyTreeSpec.entries<  s   € Ü�D—M‘MÓ"Ð"r0   c               ó    — | j                   |   S r†   )rh   r¤   s     r.   r’   zPyTreeSpec.entry?  s   € Ø�}‰}˜UÑ#Ð#r0   c               ó@   ‡ ‡— 	 	 	 	 	 	 	 	 dˆˆ fd„Šg } ‰‰ ||«       |S )Nc           	     óZ  •— | j                  «       r|j                  |«       y t        |«      }| j                  t        vrÀ|| j                  k7  rt	        d| j                  ›d|›d�«      ‚t        j                  |‰j                  ‰j                  ¬«      ^}}}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]  }||   ‘Œ	 }}not        j                  |‰j                  ‰j                  ¬«      ^}}}|t         ur8|| j                  k7  r)t	        d| j                  ›d| j                  ›d|›d�«      ‚t#        || j$                  d¬«      D ]  \  }} ‰|||«       Œ y c c}w )NzType mismatch; expected z
, but got ú.r2   zNode arity mismatch; expected z+Node context mismatch for custom node type zNode type mismatch; expected r1   z; missing key(s): z; extra key(s): zNode keys mismatchz%Node metadata mismatch for node type z; expected Tr�   )r=   r�   r:   r   r+   r7   rB   r3   r4   rr   ro   rg   r   r§   ÚsetÚ
differencer   r�   rd   )r~   rF   Úsubtreesr�   rG   Úmetadatar/   Úboth_standard_dictÚexpected_keysÚgot_key_setÚexpected_key_setÚmissing_keysÚ
extra_keysÚmessageÚkeyÚsubtreer   r�   rV   s                    €€r.   r�   z(PyTreeSpec.flatten_up_to.<locals>.helperC  s  ø€ ð
 ×ÑÔ!Ø—‘ Ô%Øä˜T›
ˆIØ�}‰}¤MÑ1à §¡Ò-Ü$ð$Ø$,§M¡MÐ#4°J¸y¸mÈ1ðNóð ô
 *0×)FÑ)FØØ!%×!2Ñ!2Ø"Ÿn™nô*Ð&�˜( Qô
 �x“= H×$9Ñ$9Ò9Ü$ð$Ø$,×$9Ñ$9Ð#:¸*ÄSÈÃ]ÀOÐSTðVóð ð ˜x×1Ñ1Ó1Ü$ØEÀhÇmÁmÐEVÐVWÐXóð ð —M‘MÔ%8Ð8ò 9Ø!Ô%8Ð8ð #ñ *¨i¸8¿=¹=Ò.HÜ$ð$Ø$,§M¡MÐ#4°J¸y¸mÈ1ðNóð ô �t“9 × 5Ñ 5Ò5Ü$ð$Ø$,×$9Ñ$9Ð#:¸*ÄSÈÃYÀKÈqðRóð ñ
 &à$,×$4Ñ$4Ó$6�MÜ"% d£)�KÜ'*¨=Ó'9Ð$Ø"Ð&6Ò6Ø'7×'BÑ'BÀ;Ó'O˜Ø%0×%;Ñ%;Ð<LÓ%M˜
Ø"$˜Ù'Ø#Ð);¸L¸>Ð'JÑJ˜GÙ%Ø#Ð)9¸*¸Ð'FÑF˜GÜ(Ð+=¸g¸YÀaÐ)HÓIÐIØ5BÖC¨c  S£	ÐC�HÑCô .4×-JÑ-JØØ%)×%6Ñ%6Ø"&§.¡.ô.Ð*�H˜h¨ð "¬Ñ.Ø" h×&8Ñ&8Ò8Ü(ØCÀHÇMÁMÐCTð U(Ø(0×(:Ñ(:Ð'=¸ZÈÀ|ÐSTðVóð ô
 %(¨°(×2DÑ2DÈTÔ$Rò 3Ñ �˜Ù�w ¨Õ2ñ3ùò!  Ds   Ç?J()r~   rc   rF   r   r®   úlist[PyTree]rX   r•   rL   )rV   r<   r®   r�   s   `  @r.   Úflatten_up_tozPyTreeSpec.flatten_up_toB  sJ   ù€ ðQ	3Ø ðQ	3àðQ	3ð #ðQ	3ð ö	Q	3ðf "$ˆÙˆt�T˜8Ô$Øˆr0   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   )Ú
isinstancerI   r–   rr   rn   r+   r=   rd   r�   Ú	unflattenrs   ri   rg   )rV   ÚleavesÚstartÚendr®   r   s         r.   r½   zPyTreeSpec.unflattenš  sü   € Ü˜&¤4¬ -Ô0Ü˜&“\ˆFÜˆv‹;˜$Ÿ/™/Ò)ÜØBÄ3ÀvÃ;À-ð P>Ø>B¿o¹oÐ=Nð OØ˜˜rð#óð ð
 �<‰<Œ>Ø˜!‘9Ðð ˆØˆØˆØ—~‘~ò 	ˆGØ�7×%Ñ%Ñ%ˆCØ�O‰O˜G×-Ñ-¨f°U¸3Ð.?Ó@ÔAØ‰Eð	ô
 ˜×,Ñ,Ô-Ð-Ð-Ø×#Ñ# D§N¡N°HÓ=Ð=r0   N)rX   r•   rY   )rX   rl   )rX   re   )rX   rj   )rX   zlist[tuple[Any, ...]])rX   zlist[optree.PyTreeAccessor])rX   zlist[PyTreeSpec])r¥   rl   rX   rc   )rX   r”   )r¥   rl   rX   r   )r<   r   rX   r¹   )r¾   úIterable[Any]rX   r   )r[   r\   r]   Ú__doc__Ú__annotations__r   rm   rn   ro   rw   rW   r‡   Úpropertyr:   r=   r“   r¡   rG   rv   r§   r’   rº   r½   rL   r0   r.   rc   rc   ´   s¯   … á:à%Ó%ØÓØƒNØÓØLÓLØÓØƒNá Ô&€IˆsÓ&Ù Ô'€J�Ó'Ù 5Ô)€L�#Ó)ó?ó,1óBð òó ðó<ó/ó"Eó@$ó%ó#ó$óVôp>r0   rc   c               óB   — t        | t        t        j                  f«      S r†   )r¼   rc   Úpython_pytreeÚTreeSpec)Úobjs    r.   Ú_is_pytreespec_instancerÉ   ³  s   € Ü�cœJ¬×(>Ñ(>Ð?Ó@Ð@r0   c           	     ó&   — t        dd d dd | d¬«      S )NrL   r1   r2   )rc   r2   s     r.   r   r   ·  s&   € ô Ø
ØØØ
ØØ!Øôð r0   c              óÐ  ‡‡— t        | «      }t        d„ |D «       «      rt        d|›d�«      ‚t        ˆfd„|D «       «      rt        d‰› d|›d�«      ‚t        ˆfd„|D «       «      rt        d‰›d|›d�«      ‚t        j                  j                  t         ‰¬	«      }|€J ‚t        t        |«      t         d t        t        t        |«      «      «      |j                  ‰‰¬
«      S )Nc              3  ó4   K  — | ]  }t        |«       –— Œ y ­wr†   ©rÉ   ©Ú.0rv   s     r.   ú	<genexpr>z!treespec_tuple.<locals>.<genexpr>Û  s   è ø€ Ò
D°%Ô& uÓ-Ô-Ñ
Dùó   ‚z&Expected a tuple of PyTreeSpecs, got: r«   c              3  ó<   •K  — | ]  }|j                   ‰k7  –— Œ y ­wr†   ©r3   ©rÏ   rv   r3   s     €r.   rÐ   z!treespec_tuple.<locals>.<genexpr>Ý  s   øè ø€ Ò
D°%ˆ5×Ñ Õ-Ñ
Dùó   ƒúYAll children PyTreeSpecs must have the same `none_is_leaf` value as the parent; expected ú, got: c              3  ó>   •K  — | ]  }|j                   ‰d fv–— Œ y­w©r1   Nr6   ©rÏ   rv   r4   s     €r.   rÐ   z!treespec_tuple.<locals>.<genexpr>â  s   øè ø€ Ò
H°eˆ5�?‰? 9¨b /Ô1Ñ
Hùó   ƒúVAll children PyTreeSpecs must have the same `namespace` value as the parent; expected r6   r2   )
r–   Úanyr+   r7   r8   r9   rc   Úrangerr   Úunflatten_func)Úiterabler3   r4   rG   rž   s    ``  r.   r   r   Í  sü   ù€ ô �X‹€HÜ
Ñ
D¸8Ô
DÔDÜÐAÀ(ÀÈQÐOÓPÐPÜ
Ó
D¸8Ô
DÔDÜð'Ø'3 n°G¸H¸<ÀqðJó
ð 	
ô Ó
H¸xÔ
HÔHÜð'Ø'0 m°7¸8¸,ÀaðIó
ð 	
ô ×)Ñ)×-Ñ-¬e¸yÐ-ÓI€GØÐÐÐÜÜˆh‹ÜØÜŒe”C˜“MÓ"Ó#Ø×ÑØ!Øôð r0   c         	     óÄ  ‡‡— t        | fi |¤Ž}t        d„ |j                  «       D «       «      rt        d|›d�«      ‚t        ˆfd„|j                  «       D «       «      rt        d‰› d|›d�«      ‚t        ˆfd„|j                  «       D «       «      rt        d‰›d|›d�«      ‚t	        j
                  |‰‰¬	«      \  }}}}t        t        |«      t         |||‰‰¬	«      S )
Nc              3  ó4   K  — | ]  }t        |«       –— Œ y ­wr†   rÍ   rÎ   s     r.   rÐ   z treespec_dict.<locals>.<genexpr>  s   è ø€ Ò
H°%Ô& uÓ-Ô-Ñ
HùrÑ   z)Expected a dictionary of TreeSpecs, got: r«   c              3  ó<   •K  — | ]  }|j                   ‰k7  –— Œ y ­wr†   rÓ   rÔ   s     €r.   rÐ   z treespec_dict.<locals>.<genexpr>  s   øè ø€ Ò
H°%ˆ5×Ñ Õ-Ñ
HùrÕ   rÖ   r×   c              3  ó>   •K  — | ]  }|j                   ‰d fv–— Œ y­wrÙ   r6   rÚ   s     €r.   rÐ   z treespec_dict.<locals>.<genexpr>
  s   øè ø€ Ò
L°eˆ5�?‰? 9¨b /Ô1Ñ
LùrÛ   rÜ   r2   )ÚdictrÝ   Úvaluesr+   r7   rB   rc   r–   )	Úmappingr3   r4   r-   ÚdctrG   r¯   r§   rß   s	    ``      r.   r   r   ô  s  ù€ ô ˆwÑ
!˜&Ñ
!€CÜ
Ñ
H¸3¿:¹:»<Ô
HÔHÜÐDÀSÀGÈ1ÐMÓNÐNÜ
Ó
H¸3¿:¹:»<Ô
HÔHÜð'Ø'3 n°G¸C¸7À!ðEó
ð 	
ô Ó
L¸s¿z¹z»|Ô
LÔLÜð'Ø'0 m°7¸3¸'ÀðDó
ð 	
ô 	×%Ñ%ØØ!Øô	ñØØØØô Üˆh‹ÜØØØØ!Øôð r0   c              ó:   ‡‡‡‡— dˆˆˆˆfd„Šg } ‰| |«      }||fS )Nc           	     ó  •‡— t        | ‰‰
‰	¬«      r#‰j                  | «       t        dd d dd ‰
‰	¬«      S t        j                  | ‰‰
‰	¬«      \  }}}}t        ˆˆfd„|D «       «      }t        |t        | «      |||‰
‰	¬«      S )Nr@   rL   r2   c              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wr†   rL   )rÏ   rv   r�   r¾   s     €€r.   rÐ   z/tree_flatten.<locals>.helper.<locals>.<genexpr>R  s   øè ø€ ÒE°5™  v×.ÑEùs   ƒ)r   r�   rc   r7   rB   r–   r:   )rF   r¾   rG   r¯   r§   rß   Úsubspecsr�   r=   r4   r3   s    `     €€€€r.   r�   ztree_flatten.<locals>.helper3  s¬   ù€ ÜØØØ%Øõ	
ð �M‰M˜$ÔÜØØØØØØ)Ø#ôð ô ×)Ñ)ØØØ%Øô	
ñ	
ØØØØô ÔE¸HÔEÓEˆÜØÜ�‹JØØØØ%Øô
ð 	
r0   )rF   r   r¾   r”   rX   rc   rL   )r<   r=   r3   r4   r¾   r~   r�   s    ```  @r.   r"   r"   %  s,   û€ ÷(
ð (
ðT €FÙ�d˜FÓ#€HØ�8ÐÐr0   c               ó    — t        | |||¬«      S r?   ©r"   ©r<   Úleaf_predicater3   r4   s       r.   Ú
_C_flattenrñ   b  s   € ô ØØØ!Øô	ð r0   c              óL   — t        | |||¬«      \  }}|j                  «       ||fS r?   )r"   r“   )r<   r=   r3   r4   r¾   r~   s         r.   r#   r#   w  s5   € ô $ØØØ!Øô	Ñ€FˆHð �>‰>Ó˜V XÐ-Ð-r0   c               ó    — t        | |||¬«      S r?   )r#   rï   s       r.   Ú_C_flatten_with_pathrô   Ž  s   € ô "ØØØ!Øô	ð r0   c              ó&   — t        | |||¬«      d   S )Nr@   rq   rî   r;   s       r.   r$   r$   £  s'   € ô ØØØ!Øô	ð
 ñ	ð 	r0   c                ój   — t        | «      st        dt        | «      › d�«      ‚| j                  |«      S )NzIExpected `treespec` to be an instance of PyTreeSpec but got item of type r«   )rÉ   Ú	TypeErrorr:   r½   )r~   r¾   s     r.   r%   r%   ¹  sC   € ô # 8Ô,Üð/Ü/3°H«~Ð.>¸aðAó
ð 	
ð ×Ñ˜fÓ%Ð%r0   )r)   Úskip_signature_checkc               óH   — t        t        |«      «      dk7  rt        d«      ‚y )Nr   zExpected no children.)rr   rI   r+   )r/   rG   s     r.   Únone_unflattenrú   Ì  s$   € ô Œ4�‹>Ó˜aÒÜÐ0Ó1Ð1Ør0   Útorchr6   c               ó¤   — t         j                  j                  | «      }|D �cg c]  }| |   ‘Œ	 }}t        | «      }|||ft	        |«      fS c c}w r†   )r7   ÚutilsÚtotal_order_sortedrI   r–   )rè   Úsorted_keysr·   ræ   Úoriginal_keyss        r.   Údict_flattenr  Ü  sT   € ô —,‘,×1Ñ1°#Ó6€KØ"-Ö.˜3ˆc�#‹hÐ.€FÐ.Ü˜“I€MØ�M ;Ð/´°{Ó1CÐCÐCùò /s   ¤Ac               ót   — | \  }}t         j                  |«      }|j                  t        ||d¬«      «       |S rŒ   )rå   ÚfromkeysÚupdater�   )r¯   ræ   r   rÿ   Úds        r.   Údict_unflattenr  ê  s6   € ð "*Ñ€M�;Ü�‰�mÓ$€AØ‡H�HŒS�˜f¨TÔ2Ô3Ø€Hr0   )r,   r   r-   r   rX   rj   r†   )
r=   úCallable[[PyTree], bool] | Noner<   r   r3   rj   r4   rZ   rX   rj   )
r=   r  r<   r   r3   rj   r4   rZ   rX   rÁ   )
r=   r  r<   r   r3   rj   r4   rZ   rX   r”   )rÈ   r   rX   z+TypeIs[PyTreeSpec | python_pytree.TreeSpec])r3   rj   r4   rZ   rX   rc   )rL   )rà   zIterable[PyTreeSpec]r3   rj   r4   rZ   rX   rc   )
rç   z;Mapping[Any, PyTreeSpec] | Iterable[tuple[Any, PyTreeSpec]]r3   rj   r4   rZ   r-   rc   rX   rc   )
r=   r  r<   r   r3   rj   r4   rZ   rX   útuple[list[Any], PyTreeSpec])NFr1   )
rð   r  r3   rj   r4   rZ   r<   r   rX   r  )
r=   r  r<   r   r3   rj   r4   rZ   rX   ú3tuple[list[tuple[Any, ...]], list[Any], PyTreeSpec])
rð   r  r3   rj   r4   rZ   r<   r   rX   r	  )
r=   r  r<   r   r3   rj   r4   rZ   rX   rc   )r~   rc   r¾   rÁ   rX   r   )r/   r•   rG   zIterable[_T]rX   r•   )rè   údict[_KT, _VT]rX   z>tuple[list[_VT], tuple[list[_KT], list[_KT]], tuple[_KT, ...]])r¯   ztuple[list[_KT], list[_KT]]ræ   zIterable[_VT]rX   r
  )UrÂ   Ú
__future__r   Úcollectionsr   Údataclassesr   r   Útypingr   r   r	   r7   Ú	optree._CÚoptree.utilsr
   r   r   r   r   r   r   r   Útorch.utils._cxx_pytreerý   Ú_cxx_pytreeÚ
cxx_pytreeÚtorch.utils._pytreeÚ_pytreerÆ   r   r   Ú
decoratorsr   ÚbuiltinsÚcollections.abcr   r   r   Útyping_extensionsr   r   r   Ú__all__r&   r'   r(   Ú_CÚis_dict_insertion_orderedr/   Ú__nameÚ__funcÚ__python_implementation__Úglobalsr   r    r!   rZ   rK   r|   rc   rÉ   r   r   r   r"   Úflattenrñ   r#   Úflatten_with_pathrô   r$   r%   r8   r9   r:   Ú_none_registrationrß   rú   Údict_insertion_orderedrå   Ú_dict_registrationÚflatten_funcr  r  rL   r0   r.   ú<module>r'     s  ðñõ #å ß (ß .Ñ .ã Û Û ÷	÷ 	ó 	÷ -Ð ,ß +Ð +ß Bå ,ñ Ûß;Ñ;ß.å.ò€ñ, ˆTƒ]€Ùˆeƒn€Ùˆeƒn€ñ Ø
‡I�I×'Ñ'Ø"ôòó	ðð 
€à�mÐ$ØÐ/Ð0ØÐ5Ð6Ø�\Ð"ØÐ-Ð.ØÐ3Ð4ØÐ+Ð,ØÐ)Ð*ð	ò �N€FˆFðÑ+ØØ"&ôð ×&Ñ&ó(�GƒIˆfÑñ 	ðð ñ �V×(Ñ(ÀDÔIð 04ðð
 Øñð -ðØ
ðð
 ðð ðð 
òó Jðñ �V×%Ñ%ÀÔGð 04ð)ð
 Øñ)ð -ð)Ø
ð)ð
 ð)ð ð)ð ò)ó Hð)ñ: �V×'Ñ'À4ÔHð 04ðð
 Øñð -ðØ
ðð
 ðð ðð òó Iðô$�ô ñ ‹K€	Øñ �$˜dÔ#÷{>ð {>ó $ð{>ó|Añ Ø
×Ñð $ô	ð Øñàðð ðð ò	óðñ  Ø
×Ñð $ô	ð &(ðð ØñØ"ðð ð	ð
 ðð òóðñB Ø
×Ñð $ô	ð LNð(ð Øñ(ØHð(ð ð	(ð
 ð(ð ð(ð ò(óð(ñV Ø
×Ñð $ô	ð 04ð4ð
 Øñ4ð -ð4Ø
ð4ð
 ð4ð ð4ð "ò4óð4ñn Ø
‡I�I×Ñð $ô	ð 7;ØØðð 4ðð ð	ð
 ðØ
ðð "òóðñ Ø
×!Ñ!ð $ô	ð 04ð.ð
 Øñ.ð -ð.Ø
ð.ð
 ð.ð ð.ð 9ò.óð.ñ" Ø
‡I�I×Ñð $ô	ð 7;ØØðð 4ðð ð	ð
 ðØ
ðð 9òóðñ Ø
×Ñð $ô	ð 04ð	ð
 Øñ	ð -ð	Ø
ð	ð
 ð	ð ð	ð ò	óð	ñ  Ø
×Ñð $ô	ò&óð&ð ×0Ñ0×4Ñ4±T¸$³ZÓ@Ð ØÐ%Ð %Ð%ñ Ø×%Ñ%Ø"Øôò
óð
ð #€V×"Ñ" 5°GÔ<ñ *Ø×4Ñ4×8Ñ8¸Ó>ÐØÐ)Ð)Ñ)÷*ñ
 Ø×#Ñ#Ø"Øôð
DØ	ðDàCòDóð
Dñ Ø×%Ñ%Ø"Øôð
Ø)ðàðð ò	óñ
÷1*ð *ús   Í< O(Ï(O1