
    %Vji=                       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        rddlZddlZddl mc m!Z" erddl m#Z#  eej$        j%        d          d@d            Z&dZ'dD ];Z' e(ee'          Z)  ee)d          e)j*                   e+            e'<   ee'gz  Z[)<[' ee"j,        d          	 dAdBd            Z, ee"j-        d          	 dAdCd!            Z-ed"gz  Z ee"j.        d          	 dAdDd$            Z.ed%gz  Z G d& d'e/          Z0 e0            Z1[0 ed(           G d) d*                      Z2 e2d+ddd+d          Z3dEd.Z4 ee"j5        d          	 dAdFd0            Z5ed1gz  Z ee"j6        d          	 dAdGd2            Z6ed3gz  Z ee"j7        d          dHd6            Z7ed7gz  Z ee"j8        d          dd8dId<            Z8ed=gz  Z ee"j9        d          dd8dId>            Z9ed?gz  ZdS dS )Jz)
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_throughargsr   kwargsreturnboolc                      t          d          )NzeShould not be called directly because the original function will be called in the constant fold path.)
ValueError)r   r   s     X/root/voice-cloning/.venv/lib/python3.11/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_fieldstreer   is_leafCallable[[PyTree], bool] | Nonec                    | | ||           rdS t           j                            t          |           d          dS dS )NTtorch	namespaceF)optreeregister_pytree_nodegettyper'   r(   s     r   tree_is_leafr3   C   sL    
 <G/GGDMM/4&**4::*IIQ4ur   FIterable[Any]c              #     K   | g}|rj|                                 }t          ||          r|V  ,t          j        ||dd          ^}}|                    t          |                     |hd S d S )Nr(   Tr+   r(   none_is_leafr-   )popr3   r.   tree_flatten_one_levelextendreversed)r'   r(   stacknodechildrenr   s         r   	tree_iterr@   N   s      
  	-99;;DD'222 


!8!!	  LHq LL(++,,,  	- 	- 	- 	- 	-r   r@   	list[Any]c                >    t          t          | |                    S )Nr6   )listr@   r2   s     r   tree_leavesrD   d   s    
 IdG444555r   rD   c                  ,     e Zd ZdZd fdZddZ xZS )		_Asterisk r   r   c                H    t                                          | d          S N*)super__new__)cls	__class__s    r   rL   z_Asterisk.__new__p   s    77??3,,,r   strc                    dS rI   rG   selfs    r   __repr__z_Asterisk.__repr__s   s    3r   )r   r   r   rO   )__name__
__module____qualname__	__slots__rL   rS   __classcell__)rN   s   @r   rF   rF   m   sV        		- 	- 	- 	- 	- 	-	 	 	 	 	 	 	 	r   rF   )frozenc                  X   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d0dZed1d            Zd2dZd3d Zd4d"Zd5d$Zd6d%Zd7d)Zd8d,Zd-S )9
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]r8   zLiteral['torch']r-   r   Nonec                |   | j         @t          | j                  dk    sJ | j        J | j        dk    sJ | j        J d}d}d}nht          | j                  sJ t          d | j        D             d          }t          d | j        D                       }t          | j                  }t          	                    | d|           t          	                    | d|           t          	                    | d	|           t          	                    | d
d           t          	                    | dd           d S )Nr   rG      c              3  $   K   | ]}|j         V  d S N)re   .0specs     r   	<genexpr>z+PyTreeSpec.__post_init__.<locals>.<genexpr>   s$       K KD K K K K K Kr   )startc              3  $   K   | ]}|j         V  d S rl   rf   rm   s     r   rp   z+PyTreeSpec.__post_init__.<locals>.<genexpr>   s$       L LT L L L L L Lr   re   rf   rg   r8   Tr-   r+   )
r_   lenr]   r`   ra   rb   callablesumobject__setattr__)rR   re   rf   rg   s       r   __post_init__zPyTreeSpec.__post_init__   sL   z!4>**a////~---}****+333	
  455555 K KDN K K KSTUUU	  L LT^ L L LLL
"4>22t[)<<<t\:>>>t^\BBBt^T:::t[':::::r   rO   c                >    d	fdd |            d| j         dS )
Ntreespecr\   r   rO   c                   |                                  r| j        J t          S | j        J t          | j                  sJ fd| j        D             }| j        t          v s2t          j        | j                  st          j	        | j                  r|                     | j
        |          S d| j        j         d| j
        dd                    |           dS )Nc                &    g | ]} |          S rG   rG   )rn   subspechelpers     r   
<listcomp>z7PyTreeSpec.__repr__.<locals>.helper.<locals>.<listcomp>   s.     , , ,(/FF7OO, , ,r   zCustomTreeNode([z], [z, z]))r(   r1   	_asteriskru   rb   r]   r   r.   r    r#   r`   rU   join)r{   children_representationsr   s     r   r   z#PyTreeSpec.__repr__.<locals>.helper   s)   ##%% %#=000$$}000 899999, , , ,3;3E, , ,( M]221(-@@ 30?? 3 $33 *0  
@hm&< @ @x?Q @ @		":;;@ @ @r   zPyTreeSpec(z, NoneIsLeaf, namespace=))r{   r\   r   rO   r,   )rR   r   s    @r   rS   zPyTreeSpec.__repr__   sI         2 XffTllWWDNWWWr   c                    | j         S rl   rs   rQ   s    r   __len__zPyTreeSpec.__len__   s
    ?"r   c                    | j         S rl   )r_   rQ   s    r   r1   zPyTreeSpec.type   s
    :r   r   c                .    | j         dk    o
| j        dk    S )Nrj   )re   rf   rQ   s    r   r(   zPyTreeSpec.is_leaf   s    >Q&?4?a+??r   list[PyTreeSpec]c                *    t          | j                  S rl   )rC   r]   rQ   s    r   r?   zPyTreeSpec.children   s    '''r   indexc                    | j         |         S rl   )r]   rR   r   s     r   childzPyTreeSpec.child   s    >%((r   rA   c                *    t          | j                  S rl   )rC   ra   rQ   s    r   entrieszPyTreeSpec.entries   s    &&&r   c                    | j         |         S rl   )ra   r   s     r   entryzPyTreeSpec.entry   s    =''r   r'   r   list[PyTree]c                2    d
fd	g } | ||           |S )Nr{   r\   r>   r   subtreesr   r   rh   c           	        |                                  r|                               d S t                    }| j        t          vr|| j        k    rt	          d| j        d|d          t          j        dd          ^}}}t          |          | j        k    r(t	          d| j         dt          |           d          || j	        k    rt	          d| j        d          nl| j        t          v o|t          v }|s&|| j        k    rt	          d	| j        d|d          t                    | j        k    r(t	          d| j         dt                     d          |r|                                 }t                    }	t          |          }
|	|
k    rS|
                    |	          }|	                    |
          }d
}|r|d| z  }|r|d| z  }t	          d| d          fd|D             }nQt          j        dd          ^}}}|t          ur.|| j	        k    r#t	          d| j        d| j	        d|d          t          || j                  D ]\  }} |||           d S )NzType mismatch; expected z
, but got .Tr+   )r8   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 mismatchc                     g | ]
}|         S rG   rG   )rn   keyr>   s     r   r   z<PyTreeSpec.flatten_up_to.<locals>.helper.<locals>.<listcomp>  s    #G#G#G#DI#G#G#Gr   z%Node metadata mismatch for node type z; expected )r(   appendr1   r   r   r.   r:   rt   rg   r`   r   r   set
differencer   zipr]   )r{   r>   r   	node_typer?   metadatar   both_standard_dictexpected_keysgot_key_setexpected_key_setmissing_keys
extra_keysmessagesubtreer~   r   s    `              r   r   z(PyTreeSpec.flatten_up_to.<locals>.helper   s   
 ##%% OOD)))F JJ	=55 HM11(R(0R RCLR R R  
 .4-J%)"). . .*Hh
 8}}(===(Z(0(=Z ZILXZ Z Z    8#555(\(-\\\   6 !)<< =%)<< ' . )x}2L2L(R(0R RCLR R R   4yyH$999(V(0(=V VILTV V V  
 * (0(8(8(:(:&)$ii+.}+=+=(&*:::+;+F+F{+S+SL)4)?)?@P)Q)QJ&(G+ O '+N+N+N N) K '+Jj+J+J J",-L'-L-L-L"M"MM#G#G#G#G#G#G#G 281N )-&-2 2 2.(Q &#() )&(*<<<",!Z !Z !Z,4,>!Z !ZLT!Z !Z !Z# # 
 ),Hh6H(I(I 7 7$GWF7GX66667 7r   )r{   r\   r>   r   r   r   r   rh   rG   )rR   r'   r   r   s      @r   flatten_up_tozPyTreeSpec.flatten_up_to   sH    R7 R7 R7 R7 R7 R7h &(HF4x(((Or   leavesr4   c           	        t          |t          t          f          st          |          }t          |          | j        k    r+t          dt          |           d| j         d|  d          |                                 r|d         S d}d}g }| j        D ]>}||j        z  }|                    |	                    |||                              |}?t          | j                  sJ |                     | j        |          S )Nz0treespec.unflatten(leaves): `leaves` has length z, but the spec refers to a pytree that holds z items (z).r   )
isinstancerC   tuplert   rf   r   r(   r]   r   	unflattenru   rb   r`   )rR   r   rq   endr   r~   s         r   r   zPyTreeSpec.unflatten*  s*   ftUm44 &f6{{do-- 's6{{ ' 'BF/' '"' ' '  
 ||~~ !ay  ECH>  w)) 1 1&s2C D DEEED011111''AAAr   N)r   rh   rT   )r   rd   )r   r^   )r   r   )r   r   )r   rd   r   r\   )r   rA   )r   rd   r   r   )r'   r   r   r   )r   r4   r   r   )rU   rV   rW   __doc____annotations__r   re   rf   rg   r8   r-   ry   rS   r   propertyr1   r(   r?   r   r   r   r   r   rG   r   r   r\   r\   y   s        >>))))####!!!!PPPPE***	****%U+++
++++!Eu-------&+e&7&7&77777&+e&7&7&7	7777	; 	; 	; 	;*	 	 	 	:	# 	# 	# 	# 
	 	 	 
		@ 	@ 	@ 	@	( 	( 	( 	(	) 	) 	) 	)	' 	' 	' 	'	( 	( 	( 	(W	 W	 W	 W	r	B 	B 	B 	B 	B 	Br   r\   rG   objTypeIs[PyTreeSpec]c               ,    t          | t                    S rl   )r   r\   )r   s    r   _is_pytreespec_instancer   D  s    #z***r   tuple[list[Any], PyTreeSpec]c                8    dfdg } | |          }||fS )	Nr>   r   r   rA   r   r\   c                   t          |           r                    |            t          S t          j        | dd          \  }}}}t          fd|D                       }t          |t          |           |||          S )Nr6   Tr+   r7   c              3  0   K   | ]} |          V  d S rl   rG   )rn   r   r   r   s     r   rp   z/tree_flatten.<locals>.helper.<locals>.<genexpr>c  s/      IIuVVE622IIIIIIr   )r3   r   
_LEAF_SPECr.   r:   r   r\   r1   )	r>   r   r?   r   r   unflatten_funcsubspecsr   r(   s	    `     r   r   ztree_flatten.<locals>.helperQ  s    D'222 "d###!! -!!	   IIIIIIIIIIHhT

Hg~VVVr   )r>   r   r   rA   r   r\   rG   )r'   r(   r   r{   r   s    `  @r   tree_flattenr   G  sQ    	W 	W 	W 	W 	W 	W 	W* 6$''xr   r   c                0    t          | |          d         S )Nr6   rj   )r   r2   s     r   tree_structurer   l  s     D'222155r   r   r   r{   c                    t          |          s t          dt          |           d          |                    |           S )Nzhtree_unflatten(leaves, treespec): Expected `treespec` to be instance of PyTreeSpec but got item of type r   )r   	TypeErrorr1   r   )r   r{   s     r   tree_unflattenr   z  s]     'x00 	E37>>E E E   !!&)))r   r   r6   funcCallable[..., Any]restsc                   t          ||          \  }|gfd|D             z   }                    t          | g|R            S )Nr6   c                :    g | ]}                     |          S rG   r   rn   rr{   s     r   r   ztree_map.<locals>.<listcomp>  '    IIIa 6 6q 9 9IIIr   )r   r   mapr   r'   r(   r   r   	flat_argsr{   s         @r   tree_mapr     sa     (g>>>HIIII5IIII	!!#d"7Y"7"7"7888r   r   c                   t          ||          \  }|gfd|D             z   }t          t          | g|R  d           |S )Nr6   c                :    g | ]}                     |          S rG   r   r   s     r   r   ztree_map_.<locals>.<listcomp>  r   r   r   )maxlen)r   r   r   r   s         @r   	tree_map_r     se     (g>>>HIIII5IIII	c$####A....r   r   )r   r   r   r   r   r   rl   )r'   r   r(   r)   r   r   )r'   r   r(   r)   r   r4   )r'   r   r(   r)   r   rA   )r   r   r   r   )r'   r   r(   r)   r   r   )r'   r   r(   r)   r   r\   )r   r4   r{   r\   r   r   )
r   r   r'   r   r   r   r(   r)   r   r   ):r   
__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__globalsr3   r@   rD   rO   rF   r   r\   r   r   r   r   r   r   r   rG   r   r   <module>r      s_     # " " " " "       ( ( ( ( ( ( ( ( 8 8 8 8 8 8 8 8 8 8 8 8 $ $ $ $ $ $ + + + + + + + + + B B B B B B B B , , , , , ,  'OOO((((((&&&&&&      - HMMM000000000 3222222	+"&  
 
 
	 
 F	   ((W//RVWWW,
 
		& 	F8F0DQQQ 48    RQ -OOO 48- - - - PO-& }G/4PPP 486 6 6 6 QP6 G    C    	IYdFB FB FB FB FB FB FB FBP BdB55J+ + + +  #(	   48         : G! #(	   486 6 6 6 6  !!G! #(	  * * * *  !!G,MMM
 48	9 9 9 9 9 NM9 
|G-NNN
 48		 	 	 	 	 ON	 }GGGQH Hr   