
    Ph              	       ,   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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<   	 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eee       y)    )
namedtuple)AnyCallableDictList
NamedTupleTupleTypeOptional)LeafSpecPyTreeTreeSpecSUPPORTED_NODESSUPPORTED_NODES_EXACT_MATCHNclsflatten_fn_specflatten_fn_exact_match_specreturnc                 (    |t         | <   |t        | <   y N)r   r   )r   r   r   s      [C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/fx/_pytree.pyregister_pytree_flatten_specr      s    
 +OC'B$    pytreespecc                 |   t        |t              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: )	
isinstancer   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T 	T &dii0O#FD1M&A$))&L#&/J6SW/X!7x~dVTUUF 0C0CDz 
4JK$ E Mr   dc                 F    |j                   D cg c]  }| |   	 c}S c c}w r   )context)r)   r   ks      r   _dict_flatten_specr-   *   s"    ,,',QAaD,'''s   c                 j    t        t        |j                              D cg c]  }| |   	 c}S c c}w r   rangelenr!   r)   r   is      r   _list_flatten_specr4   -   0    D$7$7 89:9QAaD9:::   0c                 j    t        t        |j                              D cg c]  }| |   	 c}S c c}w r   r/   r2   s      r   _tuple_flatten_specr8   0   r5   r6   c                 j    t        t        |j                              D cg c]  }| |   	 c}S c c}w r   r/   r2   s      r   _namedtuple_flatten_specr:   3   r5   r6   c                 D    t        |       t        |j                        k(  S r   )r1   r+   r)   r   s     r   _dict_flatten_spec_exact_matchr=   6   s    q6S&&&r   c                 D    t        |       t        |j                        k(  S r   r1   r!   r<   s     r   _list_flatten_spec_exact_matchr@   9       q6S,,---r   c                 D    t        |       t        |j                        k(  S r   r?   r<   s     r   _tuple_flatten_spec_exact_matchrC   <   rA   r   c                 D    t        |       t        |j                        k(  S r   r?   r<   s     r   $_namedtuple_flatten_spec_exact_matchrE   ?   rA   r   r   )F)"collectionsr   typingr   r   r   r   r   r	   r
   r   torch.utils._pytreer   r   r   FlattenFuncSpecboolFlattenFuncExactMatchSpecr   __annotations__r   r   r"   r-   r4   r8   r:   r=   r@   rC   rE   dictlisttuple r   r   <module>rQ      s   " O O O : :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f H W[\_W` (($sCx. ( (T#Y (;$s) ;8 ;S	 ;;5: ;X ;$s) ;;
 ;( ;tCy ;'d38n 'H ' '.d3i .x .D ..uSz . .d ..J .h .4 . T#57U V T#57U V U$79X Y Z)ACb cr   