
    Vh                        d dl mZ d dlmZmZmZ 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 ddgZd	j)                         Z ed
      Z ed      Z ed      ZdedededefdZ ed       G d dee                Z ed       G d deeef                Zdee   deee   ef   fdZdee   dedee   fdZ deeef   deee   ef   fdZ!dee   dedeeef   fdZ" eeee de        eee!e"de
       y )!    )Iterable)AnyNoReturnTypeVar)Self)_dict_flatten_dict_flatten_with_keys_dict_unflatten_list_flatten_list_flatten_with_keys_list_unflattenContextregister_pytree_node   )compatibilityimmutable_listimmutable_dictz
If 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
_T_KT_VTselfargskwargsreturnc                 P    t        t        |       j                  dt               )Nz# object does not support mutation. )	TypeErrortype__name___help_mutation)r   r   r   s      N/home/dcms/DCMS/lib/python3.12/site-packages/torch/fx/immutable_collections.py_no_mutationr!   $   s*    
:
!!D^DTU     T)is_backward_compatiblec                   x    e Zd ZdZeZeZeZeZeZ	eZ
eZeZeZeZeZeZdefdZdeee   eeedf      f   fdZy)r   z&An immutable version of :class:`list`.r   c                 *    t        t        |             S N)hashtupler   s    r    __hash__zimmutable_list.__hash__;   s    E$K  r"   .c                 0    t        |       t        |       ffS r&   )r   r(   r)   s    r    
__reduce__zimmutable_list.__reduce__>   s    T
U4[N++r"   N)r   
__module____qualname____doc__r!   __delitem____iadd____imul____setitem__appendclearextendinsertpopremovereversesortintr*   r(   r   r   r   r,    r"   r    r   r   *   st    0KHHKFEFF
CFGD!# !,E$t*eE"c'N.C"CD ,r"   c                   r    e Zd ZdZeZeZeZeZeZ	eZ
eZeZdefdZdeee   eeeeef   df      f   fdZy)r   z&An immutable version of :class:`dict`.r   c                 F    t        t        | j                                     S r&   )r'   	frozensetitemsr)   s    r    r*   zimmutable_dict.__hash__O   s    Idjjl+,,r"   .c                 L    t        |       t        | j                               ffS r&   )r   r(   rA   r)   s    r    r,   zimmutable_dict.__reduce__R   s    T
U4::<0233r"   N)r   r-   r.   r/   r!   r0   __ior__r3   r5   r8   popitem
setdefaultupdater<   r*   r(   r   r   r   r   r,   r=   r"   r    r   r   B   sj    0KGKE
CGJF-# -4E$t*eE%S/3:N4O.P"PQ 4r"   dc                     t        |       S r&   )r   rG   s    r    _immutable_list_flattenrJ   W       r"   valuescontextc                 ,    t        t        | |            S r&   )r   r   rL   rM   s     r    _immutable_list_unflattenrP   [        /&':;;r"   c                     t        |       S r&   )r   rI   s    r    _immutable_dict_flattenrS   b   rK   r"   c                 ,    t        t        | |            S r&   )r   r
   rO   s     r    _immutable_dict_unflattenrU   f   rQ   r"   z-torch.fx.immutable_collections.immutable_list)serialized_type_nameflatten_with_keys_fnz-torch.fx.immutable_collections.immutable_dictN)#collections.abcr   typingr   r   r   typing_extensionsr   torch.utils._pytreer   r	   r
   r   r   r   r   r   _compatibilityr   __all__stripr   r   r   r   r!   listr   dictr   r(   rJ   rP   rS   rU   r=   r"   r    <module>ra      s   $ ) ) "	 	 	 * -
. 
EG  T]enens 3 # (  d+,T"X , ,,. d+4T#s(^ 4 ,4(~b1 eDHg<M6N <RL<< B<~c3h7 E$s)WBT<U <SM<< CH< H0 H0r"   