
    :i              	       f   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j(        j)        D ]Z* ee*e"e&            eee#e'           dS )     )
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          | <   d S Nr   r   )r   r   r   s      C/var/www/icac/venv/lib/python3.11/site-packages/torch/fx/_pytree.pyregister_pytree_flatten_specr      s    
 +OC'B$$$    c                 &    t           | = t          | = d S r   r   )r   s    r   _deregister_pytree_flatten_specr      s     	#C(((r   pytreespecc           	      p   |                                 r| gS |j        t          v r_t          |j                 } || |          }g }t          ||                                          D ]\  }}t          ||          }||z  }|S t          |           \  }}	||	k    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 yO##)$)4'55!$]DMMOO!D!D 	 	E:$UJ77DdNFF)&11Kym m mv m mX\ m m m
 
 	
 r   dc                 *      fd|j         D             S )Nc                      g | ]
}|         S  r0   ).0kr-   s     r   
<listcomp>z&_dict_flatten_spec.<locals>.<listcomp>B   s    '''QAaD'''r   )contextr-   r   s   ` r   _dict_flatten_specr6   A   s    ''''$,''''r   c                 D      fdt          |j                  D             S )Nc                      g | ]
}|         S r0   r0   r1   ir-   s     r   r3   z&_list_flatten_spec.<locals>.<listcomp>F       333QAaD333r   rangenum_childrenr5   s   ` r   _list_flatten_specr?   E   (    3333% 1223333r   .c                 D      fdt          |j                  D             S )Nc                      g | ]
}|         S r0   r0   r9   s     r   r3   z'_tuple_flatten_spec.<locals>.<listcomp>J   r;   r   r<   r5   s   ` r   _tuple_flatten_specrC   I   r@   r   c                 D      fdt          |j                  D             S )Nc                      g | ]
}|         S r0   r0   r9   s     r   r3   z,_namedtuple_flatten_spec.<locals>.<listcomp>N   r;   r   r<   r5   s   ` r   _namedtuple_flatten_specrF   M   r@   r   c                 2    t          |           |j        k    S r   lenr>   r5   s     r   _dict_flatten_spec_exact_matchrJ   Q       q66T&&&r   c                 2    t          |           |j        k    S r   rH   r5   s     r   _list_flatten_spec_exact_matchrM   U   rK   r   c                 2    t          |           |j        k    S r   rH   r5   s     r   _tuple_flatten_spec_exact_matchrO   Y   rK   r   c                 2    t          |           |j        k    S r   rH   r5   s     r   $_namedtuple_flatten_spec_exact_matchrQ   ]   rK   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$   r6   r?   tuplerC   rF   rJ   rM   rO   rQ   return_typesall_return_typesreturn_typer0   r   r   <module>rc      s   " " " " " " " $ $ $ $ $ $ ) ) ) ) ) ) ) ) ) ) ( ( ( ( ( (     > > > > > > > > > > FH-t34$fh%7%=> 46d3i01 6 6 6TV T$s)X6O-P"PQ V V VWT]]WT]]WT]] HLC C	cC$C "**C!DC 
	C C C C)	c)	) ) ) )
 
#Y   8($r2v, (h (48 ( ( ( (4$r( 4( 4tBx 4 4 4 445S> 4 4d2h 4 4 4 44
 4( 4tCy 4 4 4 4'd2r6l '( 't ' ' ' ''d2h 'h '4 ' ' ' ''uRW~ 'X '$ ' ' ' ''J 'h '4 ' ' ' '  T#57U V V V  T#57U V V V  	#  
 %6  K  '   
  (    r   