
    Bj              	       j   U d dl mZ d dlmZ d dl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e         f         Zeeegef         ZeZeZi Zeee         ef         ed<   i Zeee         edz  f         ed<    ed	          Z ed
          Z ed          Z	 ddee         dededz  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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      S/var/www/html/Carbon-Document/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  r/   ).0kr,   s     r   
<listcomp>z&_dict_flatten_spec.<locals>.<listcomp>F   s    '''QAaD'''r   )contextr,   r   s   ` r   _dict_flatten_specr5   E   s    ''''$,''''r   c                 D      fdt          |j                  D             S )Nc                      g | ]
}|         S r/   r/   r0   ir,   s     r   r2   z&_list_flatten_spec.<locals>.<listcomp>J       333QAaD333r   rangenum_childrenr4   s   ` r   _list_flatten_specr>   I   (    3333% 1223333r   .c                 D      fdt          |j                  D             S )Nc                      g | ]
}|         S r/   r/   r8   s     r   r2   z'_tuple_flatten_spec.<locals>.<listcomp>N   r:   r   r;   r4   s   ` r   _tuple_flatten_specrB   M   r?   r   c                 D      fdt          |j                  D             S )Nc                      g | ]
}|         S r/   r/   r8   s     r   r2   z,_namedtuple_flatten_spec.<locals>.<listcomp>R   r:   r   r;   r4   s   ` r   _namedtuple_flatten_specrE   Q   r?   r   c                 2    t          |           |j        k    S r   lenr=   r4   s     r   _dict_flatten_spec_exact_matchrI   U       q66T&&&r   c                 2    t          |           |j        k    S r   rG   r4   s     r   _list_flatten_spec_exact_matchrL   Y   rJ   r   c                 2    t          |           |j        k    S r   rG   r4   s     r   _tuple_flatten_spec_exact_matchrN   ]   rJ   r   c                 2    t          |           |j        k    S r   rG   r4   s     r   $_namedtuple_flatten_spec_exact_matchrP   a   rJ   r   r   ),collectionsr   collections.abcr   typingr   r   typing_extensionsr   torch.return_typestorchtorch.utils._pytreer   r	   r
   listFlattenFnSpecboolFlattenFnExactMatchSpecFlattenFuncSpecFlattenFuncExactMatchSpecr   dictr    __annotations__r   r   r   r   r   r   r#   r5   r>   tuplerB   rE   rI   rL   rN   rP   return_typesall_return_typesreturn_typer/   r   r   <module>rd      s   " " " " " " " $ $ $ $ $ $         ( ( ( ( ( (     > > > > > > > > > > &(+T#Y67"FH#5t#;<   3 24d3i./ 4 4 4OQ T$s)-Dt-K"KL Q Q QWT]]WT]]WT]] CGC C	cC"C "94!?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   