a
    MSici                     @   s,  d dl mZmZmZmZ ddlmZ d dlmZm	Z	 dZ
dd Zdd	 Zeeg d
Zdd e_edde eeg dZdd e_edde eeef eee ef dddZee eeeef dddZee eee ef dddZee eee dddZe	eee e	eee dS )    )AnyDictTupleList   )compatibility)Context_register_pytree_nodezIf you are attempting to modify the kwargs or args of a torch.fx.Node object,
instead create a new copy of it and assign the copy to the node:
    new_args = ... # copy and mutate args
    node.args = new_args
c                 O   s   t dt| j dt d S )N'z$' object does not support mutation. )NotImplementedErrortype__name___help_mutation)selfargskwargs r   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/torch/fx/immutable_collections.py_no_mutation   s    r   c                 C   s.   t d| j | fi }|D ]}t||t q|S )NZ
immutable_)r   r   setattrr   )baseZmutable_functions	containerattrr   r   r   _create_immutable_container   s    r   )
__delitem____iadd____imul____setitem__appendclearextendinsertpopremovec                 C   s   t tt| ffS N)immutable_listtupleiterr   r   r   r   <lambda>       r)   T)is_backward_compatible)r   r   r   r"   popitemupdatec                 C   s   t t|  ffS r$   )immutable_dictr'   itemsr(   r   r   r   r)      r*   )dreturnc                 C   s   t |  t |  fS r$   )listvalueskeysr0   r   r   r   _immutable_dict_flatten$   s    r6   )r3   contextr1   c                 C   s   t dd t|| D S )Nc                 S   s   i | ]\}}||qS r   r   ).0keyvaluer   r   r   
<dictcomp>(   r*   z-_immutable_dict_unflatten.<locals>.<dictcomp>)r.   zipr3   r7   r   r   r   _immutable_dict_unflatten'   s    r>   c                 C   s   | d fS r$   r   r5   r   r   r   _immutable_list_flatten*   s    r?   c                 C   s   t | S r$   )r%   r=   r   r   r   _immutable_list_unflatten-   s    r@   N)typingr   r   r   r   _compatibilityr   torch.utils._pytreer   r	   r   r   r   r2   r%   
__reduce__dictr.   r6   r>   r?   r@   r   r   r   r   <module>   s&   

$ 