
    Ǆg              	       |   U d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlZd dl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<   	 dde
e   ded	ee   d
dfdZ	 d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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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jF                  jH                  D ]  Z% ee%ee         eeee       y)    )
namedtuple)AnyCallableDictList
NamedTupleOptionalTupleTypeN)PyTreeTreeSpecSUPPORTED_NODESSUPPORTED_NODES_EXACT_MATCHclsflatten_fn_specflatten_fn_exact_match_specreturnc                 (    |t         | <   |t        | <   y N)r   r   )r   r   r   s      X/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/torch/fx/_pytree.pyregister_pytree_flatten_specr      s    
 +OC'B$    pytreespecc                 |   |j                         r| gS |j                  t        vrt        t        |        d      t        |j                     } || |      }|r/t        |j                     }|r || |      st        d|  d|       g }t        ||j                        D ]  \  }}t        |||      }	||	z  } |S )Nz does not have a flatten_fn_spec associated with it. Please register one with torch.fx._pytree.register_pytree_flatten_spec.  If you have serialized your model, make sure that any custom pytrees have been registered before loading it.zCannot flatten pytree z, given spec: )is_leaftyper   RuntimeErrorr   zipchildren_specstree_flatten_spec)
r   r   exact_structural_matchr   child_pytreesr   resultchild
child_specflats
             r   r!   r!      s    
 ||~xyy'F|n S S
 	

 &dii0O#FD1M&A$))&L#&/J0
 !7x~dVTUUF 0C0CD z 
4JK$ Mr   dc                 F    |j                   D cg c]  }| |   	 c}S c c}w r   )context)r(   r   ks      r   _dict_flatten_specr,   6   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_specr3   :   %     1 123QAaD333   'c                 X    t        |j                        D cg c]  }| |   	 c}S c c}w r   r.   r1   s      r   _tuple_flatten_specr7   >   r4   r5   c                 X    t        |j                        D cg c]  }| |   	 c}S c c}w r   r.   r1   s      r   _namedtuple_flatten_specr9   B   r4   r5   c                 2    t        |       |j                  k(  S r   lenr0   r(   r   s     r   _dict_flatten_spec_exact_matchr>   F       q6T&&&&r   c                 2    t        |       |j                  k(  S r   r;   r=   s     r   _list_flatten_spec_exact_matchrA   J   r?   r   c                 2    t        |       |j                  k(  S r   r;   r=   s     r   _tuple_flatten_spec_exact_matchrC   N   r?   r   c                 2    t        |       |j                  k(  S r   r;   r=   s     r   $_namedtuple_flatten_spec_exact_matchrE   R   r?   r   r   )F)&collectionsr   typingr   r   r   r   r   r	   r
   r   torch.return_typestorchtorch.utils._pytreer   r   FlattenFuncSpecboolFlattenFuncExactMatchSpecr   __annotations__r   r   r!   r,   r3   r7   r9   r>   rA   rC   rE   dictlisttuplereturn_typesall_return_typesreturn_type r   r   <module>rV      sP   " O O O  0 FH-t34$fh%7%=> 46d3i01 6TV T$s)X6O-P"PQ V HLC	cC$C "**C!DC 
	C !
 
#Y	:($sCx. ( (T#Y (4$s) 48 4S	 445: 4X 4$s) 44
 4( 4tCy 4'd38n 'H ' ''d3i 'x 'D ''uSz ' 'd ''J 'h '4 ' T#57U V T#57U V 	#
 %%66 K ' (r   