
    Vh              	          U d dl mZ d dlmZ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
jN                  jP                  D ]  Z) ee)e!e%         eee"e&       y)    )
namedtuple)AnyCallable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      @/home/dcms/DCMS/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           	      >   |j                         r| gS |j                  t        v rOt        |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_specs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!$]D4G4G!H 	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   @   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   D   %     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<   H   r9   r:   c                 X    t        |j                        D cg c]  }| |   	 c}S c c}w r   r3   r6   s      r   _namedtuple_flatten_specr>   L   r9   r:   c                 2    t        |       |j                  k(  S r   lenr5   r-   r   s     r   _dict_flatten_spec_exact_matchrC   P       q6T&&&&r   c                 2    t        |       |j                  k(  S r   r@   rB   s     r   _list_flatten_spec_exact_matchrF   T   rD   r   c                 2    t        |       |j                  k(  S r   r@   rB   s     r   _tuple_flatten_spec_exact_matchrH   X   rD   r   c                 2    t        |       |j                  k(  S r   r@   rB   s     r   $_namedtuple_flatten_spec_exact_matchrJ   \   rD   r   r   )*collectionsr   typingr   r   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   " 3 3 (  > > 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   