
    Ǆg                    n    d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	 erd dl
mZ dgZ e	dd      Zd
d	Zy)    )annotationsN)	GeneratorListTypeTYPE_CHECKINGTypeVar)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     c/home/mcse/projects/flask_80/flask-venv/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>9   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&   )r0   stater/   fieldvalues        r    _dataclass_setstatez@dataclass_slots.<locals>._add_slots.<locals>._dataclass_setstatea   sB     ''-F #FE 2 <u""4U;<    __getstate____setstate__)r0   r   returnr4   )r0   r   r6   zList[object]r=   None)r   r   r   dicttupler.   r/   set	itertoolschainfrom_iterablemap__mro__filterfalse__contains__popr   type	__bases__r,   r;   r<   )r   	is_frozenr"   cls_dictfield_namesinherited_slots
field_namequalnamer1   r9   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 
r:   F)r   Type[DataclassInstance]r=   zGenerator[str, None, None])r   rS   rL   boolr"   rT   r=   rS   )r.   is_dataclassr   _PARAMSfrozen)r   rR   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7r:   )r   zType[_T]r=   rS   )
__future__r   r.   rB   typingr   r   r   r   r   	_typeshedr	   __all__r   r
   r+   r:   r    <module>r]      s;    #   @ @ + 
T,-^8r:   