U
    9%e                     @   sL  d dl mZmZmZmZ ddlmZ d dlmZm	Z	 ddgZ
dZdd	 Zd
d Zeeddddddddddg
Zdd e_edde eeddddddg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_nodeimmutable_listimmutable_dictzIf 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   ]/var/www/html/Darija-Ai-API/env/lib/python3.8/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)r
   tupleiterr   r   r   r   <lambda>       r*   T)Zis_backward_compatiblepopitemupdatec                 C   s   t t|  ffS r&   )r   r(   itemsr)   r   r   r   r*       r+   )dreturnc                 C   s   t |  t |  fS r&   )listvalueskeysr/   r   r   r   _immutable_dict_flatten&   s    r5   )r2   contextr0   c                 C   s   t tt|| S r&   )r   dictzipr2   r6   r   r   r   _immutable_dict_unflatten)   s    r:   c                 C   s   | d fS r&   r   r4   r   r   r   _immutable_list_flatten,   s    r;   c                 C   s   t | S r&   )r
   r9   r   r   r   _immutable_list_unflatten/   s    r<   N)typingr   r   r   r   Z_compatibilityr   Ztorch.utils._pytreer   r	   __all__r   r   r   r1   r
   
__reduce__r7   r   r5   r:   r;   r<   r   r   r   r   <module>   s4   
    

$ 