
    i              	          U d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
Zd dlmZmZmZ eeegef   Zeeegef   Zi Zeee   ef   ed<   i Zeee   ee   f   ed<    ed	      Z ed
      Z ed      Z	 ddee   dedee   ddfdZdee   ddfdZdededee   fdZdeeef   dedee   fdZdee   dedee   fdZ de!edf   dedee   fdZ"de	dedee   fdZ#deeef   dedefdZ$dee   dedefdZ%de!edf   dedefdZ&de	dedefdZ' eeee$        eee e%        ee!e"e&       ejP                  jR                  D ]  Z* ee*e"e&         eee#e'       y)     )
namedtuple)Callable)AnyOptionalTypeVar)
NamedTupleN)PyTreetree_flattenTreeSpecSUPPORTED_NODESSUPPORTED_NODES_EXACT_MATCH_T_K_Vclsflatten_fn_specflatten_fn_exact_match_specreturnc                 (    |t         | <   |t        | <   y Nr   r   )r   r   r   s      J/var/www/html/engine/venv/lib/python3.12/site-packages/torch/fx/_pytree.pyregister_pytree_flatten_specr      s    
 +OC'B$    c                      t         | = t        | = y r   r   )r   s    r   _deregister_pytree_flatten_specr      s     	#C(r   pytreespecc           	      F   |j                         r| gS |j                  t        v rSt        |j                     } || |      }g }t        ||j	                               D ]  \  }}t        ||      }||z  } |S t        |       \  }}	||	k7  rt        d|	 d|  d| d      |S )Nz
Real spec z of object z! is different from expected spec z_. Please file an issue at https://github.com/pytorch/pytorch/issues/new?template=bug-report.yml)is_leaftyper   zipchildrentree_flatten_specr
   RuntimeError)
r   r   r   child_pytreesresultchild
child_specflatflat_result	real_specs
             r   r$   r$   %   s     ||~x yyO#)$))4'5!$]DMMO!D 	E:$UJ7DdNF	 )&1Ky;vh6WX\W] ^l m
 	
 r   dc                 F    |j                   D cg c]  }| |   	 c}S c c}w r   )context)r-   r   ks      r   _dict_flatten_specr1   A   s    ,,'QAaD'''s   c                 X    t        |j                        D cg c]  }| |   	 c}S c c}w r   rangenum_childrenr-   r   is      r   _list_flatten_specr8   E   %     1 123QAaD333   '.c                 X    t        |j                        D cg c]  }| |   	 c}S c c}w r   r3   r6   s      r   _tuple_flatten_specr<   I   r9   r:   c                 X    t        |j                        D cg c]  }| |   	 c}S c c}w r   r3   r6   s      r   _namedtuple_flatten_specr>   M   r9   r:   c                 2    t        |       |j                  k(  S r   lenr5   r-   r   s     r   _dict_flatten_spec_exact_matchrC   Q       q6T&&&&r   c                 2    t        |       |j                  k(  S r   r@   rB   s     r   _list_flatten_spec_exact_matchrF   U   rD   r   c                 2    t        |       |j                  k(  S r   r@   rB   s     r   _tuple_flatten_spec_exact_matchrH   Y   rD   r   c                 2    t        |       |j                  k(  S r   r@   rB   s     r   $_namedtuple_flatten_spec_exact_matchrJ   ]   rD   r   r   )+collectionsr   collections.abcr   typingr   r   r   typing_extensionsr   torch.return_typestorchtorch.utils._pytreer	   r
   r   listFlattenFuncSpecboolFlattenFuncExactMatchSpecr   dictr!   __annotations__r   r   r   r   r   r   r$   r1   r8   tupler<   r>   rC   rF   rH   rJ   return_typesall_return_typesreturn_type r   r   <module>r]      s   " $ ) ) (  > > FH-t34$fh%7%=> 46d3i01 6TV T$s)X6O-P"PQ VT]T]T] HLC	cC$C "**C!DC 
	C)	c)	)
 
#Y8($r2v, (h (48 (4$r( 4( 4tBx 445S> 4 4d2h 44
 4( 4tCy 4'd2r6l '( 't ''d2h 'h '4 ''uRW~ 'X '$ ''J 'h '4 ' T#57U V T#57U V 	#
 %%66 K ' (r   