
    Vh                    n    d dl mZ d dlZd dlZd dlmZmZ erd dlmZ d dl	m
Z
 dgZ edd	      Zdd
Zy)    )annotationsN)TYPE_CHECKINGTypeVar)	Generator)DataclassInstancedataclass_slots_Tr   )boundc                    t        j                  |       sJ d       dd	 	 	 	 	 	 	 	 dfd}t        | t         j                        }t        |dd      } || |j                  |      S )Nz Can only be used on dataclasses.c              3  t  K   | j                   j                  d      }|Og }t        | dd      dk7  r|j                  d       t        | dd      dk7  r|j                  d       |E d {    y t	        |t
              r| y t        | d      s|E d {    y t        d	| j                   d
      7 J7  w)N	__slots____weakrefoffset__r   __weakref____dictrefoffset____dict____next__z
Slots of 'z' cannot be determined)	r   getgetattrappend
isinstancestrhasattr	TypeError__name__)clsslotss     K/home/dcms/DCMS/lib/python3.12/site-packages/torch/utils/_backport_slots.py
_get_slotsz#dataclass_slots.<locals>._get_slots   s       -
 =Es/49]+s/49Z(s#K j)j6LMNN  s$   A'B8)B4*+B8B6B86B8weakref_slotc           
        d| j                   v rt        | j                   d      t        | j                         }t	        d t        j                  |       D              }t        t        j                  j                  t        
| j                  dd                   }t	        t        j                  |j                  t        j                  ||rdnd                  |d<   |D ]  }|j                  |d         |j                  dd        |j                  d	d        t!        | d
d       }t#        | j                  | j$                  |      } ||| _        dd}dd}	|rd|vr|| _        d|vr|	| _        | S )Nr   z already specifies __slots__c              3  4   K   | ]  }|j                     y wN)name).0fs     r   	<genexpr>z6dataclass_slots.<locals>._add_slots.<locals>.<genexpr>;   s     DqAFFDs      r   )r    r   r   __qualname__c                ~    t        j                  |       }|D cg c]  }t        | |j                         c}S c c}w r#   )dataclassesfieldsr   r$   )selfr-   r&   s      r   _dataclass_getstatez@dataclass_slots.<locals>._add_slots.<locals>._dataclass_getstate_   s1     ''-F39:aGD!&&):::s   :c                    t        j                  |       }t        ||      D ]&  \  }}t        j	                  | |j
                  |       ( y r#   )r,   r-   zipobject__setattr__r$   )r.   stater-   fieldvalues        r   _dataclass_setstatez@dataclass_slots.<locals>._add_slots.<locals>._dataclass_setstatec   sB     ''-F #FE 2 <u""4U;<    __getstate____setstate__)r.   r	   returnr2   )r.   r	   r4   zlist[object]r;   None)r   r   r   dicttupler,   r-   set	itertoolschainfrom_iterablemap__mro__filterfalse__contains__popr   type	__bases__r*   r9   r:   )r   	is_frozenr    cls_dictfield_namesinherited_slots
field_namequalnamer/   r7   r   s             r   
_add_slotsz#dataclass_slots.<locals>._add_slots/   sk    #,,&s||n,HIJJ %DK,>,>s,CDDOO))#j#++a:K*LM

 !&!!,,  (4$"	
!
 & 	+J LLT*	+ 	Z& 	]D) 353<<9'C	;	< X-#6 X-#6 
r8   F)r   type[DataclassInstance]r;   zGenerator[str, None, None])r   rQ   rJ   boolr    rR   r;   rQ   )r,   is_dataclassr   _PARAMSfrozen)r   rP   paramsr    r   s       @r   r   r      s    ##C(L*LL(O,A$A15AEIA	 AF S+--.F6>59Lc6==,77r8   )r   ztype[_T]r;   rQ   )
__future__r   r,   r@   typingr   r   collections.abcr   	_typeshedr   __all__r	   r   r)   r8   r   <module>r\      s;    #   ) )+ 
T,-^8r8   