a
    MSicj                     @   s*  U d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlmZ ee	e
gef Zi Zeee ef ed< eeddddZe	e
ee d	d
dZeeef e
ee dddZee e
ee dddZee e
ee dddZee
ee dddZeee eee eee eee dS )    )CallableAnyTupleListDictType
NamedTuple)PyTreeTreeSpecLeafSpec)
namedtupleSUPPORTED_NODESN)typflatten_fn_specreturnc                 C   s   |t | < d S )N)r   )r   r    r   L/var/www/html/django/DPS/env/lib/python3.9/site-packages/torch/fx/_pytree.pyregister_pytree_flatten_spec   s    r   )pytreespecr   c                 C   sp   t |tr| gS |jtvr,tt|  dt|j }|| |}g }t||jD ]\}}t||}||7 }qP|S )Nz does not have a flatten_fn_spec associated with it. Please register one withtorch.fx._pytree.register_pytree_flatten_spec.  If you have serialized your model, makesure that any custom pytrees have been registered before loading it.)
isinstancer   typer   RuntimeErrorzipchildren_specstree_flatten_spec)r   r   r   child_pytreesresultchild
child_specflatr   r   r   r      s    





r   )dr   r   c                    s   t  fdd|jD S )Nc                    s   g | ]} | qS r   r   ).0kr!   r   r   
<listcomp>       z&_dict_flatten_spec.<locals>.<listcomp>)listcontextr!   r   r   r$   r   _dict_flatten_spec   s    r*   c                    s    fddt t|jD S )Nc                    s   g | ]} | qS r   r   r"   ir$   r   r   r%      r&   z&_list_flatten_spec.<locals>.<listcomp>rangelenr   r)   r   r$   r   _list_flatten_spec   s    r0   c                    s    fddt t|jD S )Nc                    s   g | ]} | qS r   r   r+   r$   r   r   r%   "   r&   z'_tuple_flatten_spec.<locals>.<listcomp>r-   r)   r   r$   r   _tuple_flatten_spec!   s    r1   c                    s    fddt t|jD S )Nc                    s   g | ]} | qS r   r   r+   r$   r   r   r%   %   r&   z,_namedtuple_flatten_spec.<locals>.<listcomp>r-   r)   r   r$   r   _namedtuple_flatten_spec$   s    r2   )typingr   r   r   r   r   r   r   torch.utils._pytreer	   r
   r   collectionsr   ZFlattenFuncSpecr   __annotations__r   r   r*   r0   r1   r2   dictr'   tupler   r   r   r   <module>   s   &


