
    =Ogh                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZ g dZ G d de          Z G d d          Z e            Z G d d	          Z e            Z G d
 d          Z e            Z ej        i           Z G d d          Z ed          Z ed          Z ed          ZdZdZdZ e j        d          Z d Z! G d d          Z" G d d          Z# G d d          Z$eedddddeddZ%d Z&d  Z'dded!d"Z(d# Z)d$ Z*d% Z+d& Z,d' Z-d( Z.d) Z/d* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:i d5dd6dd7dd8dd9e8d:dd;e9d<dd=e9d>e:d?e9d@e:dAe9dBe:dCe9dDe:Z;dE Z<dF Z=dG Z>dH Z?dI Z@dZddddJdJdJddJdJdJdK
dLZAdM ZBdN ZCdO ZDeEdPdQZFdR ZGeHdSdTZIdU ZJdVdddddJdJdJddJdJdJdWdXZKdY ZLdS )[    N)FunctionTypeGenericAlias)	dataclassfieldFieldFrozenInstanceErrorInitVarKW_ONLYMISSINGfieldsasdictastuplemake_dataclassreplaceis_dataclassc                       e Zd ZdS )r   N__name__
__module____qualname__     $/usr/lib64/python3.11/dataclasses.pyr   r      s          r   r   c                       e Zd Zd ZdS )_HAS_DEFAULT_FACTORY_CLASSc                     dS )Nz	<factory>r   selfs    r   __repr__z#_HAS_DEFAULT_FACTORY_CLASS.__repr__   s    {r   N)r   r   r   r   r   r   r   r   r      s#            r   r   c                       e Zd ZdS )_MISSING_TYPENr   r   r   r   r!   r!              Dr   r!   c                       e Zd ZdS )_KW_ONLY_TYPENr   r   r   r   r$   r$      r"   r   r$   c                       e Zd Zd Zd ZdS )_FIELD_BASEc                     || _         d S Nnamer   r*   s     r   __init__z_FIELD_BASE.__init__       			r   c                     | j         S r(   r)   r   s    r   r   z_FIELD_BASE.__repr__   s
    yr   N)r   r   r   r,   r   r   r   r   r&   r&      s2              r   r&   _FIELD_FIELD_CLASSVAR_FIELD_INITVAR__dataclass_fields____dataclass_params____post_init__z^(?:\s*(\w+)\s*\.)?\s*(\w+)c                 f     t                      t          j                    fd            }|S )Nc                     t          |           t          j                    f}|v rdS                     |           	  |           }                    |           n#                     |           w xY w|S )Nz...)id_thread	get_identadddiscard)r   keyresultrepr_runninguser_functions      r   wrapperz _recursive_repr.<locals>.wrapper   s    hh)+++,5	&"]4((F  %%%%L  %%%%s    A! !A8)set	functoolswraps)r?   r@   r>   s   ` @r   _recursive_reprrD      sI     55L_]##	 	 	 	 	 $#	 Nr   c                   $    e Zd ZdZd Zd Zd ZdS )r	   typec                     || _         d S r(   rF   )r   rG   s     r   r,   zInitVar.__init__   r-   r   c                     t          | j        t                    r| j        j        }nt          | j                  }d| dS )Nzdataclasses.InitVar[])
isinstancerG   r   repr)r   	type_names     r   r   zInitVar.__repr__   sB    di&& 	(	*II TYI2i2222r   c                      t          |          S r(   )r	   )clsrG   s     r   __class_getitem__zInitVar.__class_getitem__  s    t}}r   N)r   r   r   	__slots__r,   r   rP   r   r   r   r	   r	      sF        I  3 3 3    r   r	   c                   J    e Zd ZdZd Zed             Zd Z ee	          Z
dS )r   )r*   rG   defaultdefault_factoryrL   hashinitcomparemetadatakw_only_field_typec	                     d | _         d | _        || _        || _        || _        || _        || _        || _        |t          nt          j
        |          | _        || _        d | _        d S r(   )r*   rG   rS   rT   rV   rL   rU   rW   _EMPTY_METADATAtypesMappingProxyTyperX   rY   rZ   )	r   rS   rT   rV   rL   rU   rW   rX   rY   s	            r   r,   zField.__init__  st    		.			$, )/99 	 r   c                     d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j	        d| j
         dS )NzField(name=z,type=z	,default=z,default_factory=z,init=,repr=z,hash=z	,compare=z
,metadata=z	,kw_only=z,_field_type=))r*   rG   rS   rT   rV   rL   rU   rW   rX   rY   rZ   r   s    r   r   zField.__repr__/  s    	 	   <  $(#7	 
 	  	  	   <  !M   <   $/   	r   c                 x    t          t          | j                  dd           }|r || j        ||           d S d S )N__set_name__)getattrrG   rS   )r   ownerr*   funcs       r   rc   zField.__set_name__G  sM    tDL))>4@@ 	, Dud+++++	, 	,r   N)r   r   r   rQ   r,   rD   r   rc   classmethodr   rP   r   r   r   r   r     sb        I         _., , , $L11r   r   c                       e Zd ZdZd Zd ZdS )_DataclassParamsrV   rL   eqorderunsafe_hashfrozenc                 Z    || _         || _        || _        || _        || _        || _        d S r(   rj   )r   rV   rL   rk   rl   rm   rn   s          r   r,   z_DataclassParams.__init__Z  s1    		
&r   c                 h    d| j         d| j        d| j        d| j        d| j        d| j        dS )Nz_DataclassParams(init=r`   z,eq=z,order=z,unsafe_hash=z,frozen=ra   rj   r   s    r   r   z_DataclassParams.__repr__b  st    	 	  g  	 
  $/  +   	r   N)r   r   r   rQ   r,   r   r   r   r   ri   ri   Q  s9        I      r   ri   TrS   rT   rV   rL   rU   rW   rX   rY   c           
      r    	 | t           ur|t           urt          d          t          | |||||||          S )Nz/cannot specify both default and default_factory)r   
ValueErrorr   rq   s           r   r   r   p  sP      g/"@"@JKKK/4tW7$ $ $r   c                 f    t          d | D                       t          d | D                       fS )Nc              3   6   K   | ]}|j         	|j        |V  d S r(   rV   rY   .0fs     r   	<genexpr>z(_fields_in_init_order.<locals>.<genexpr>  s0      @@qv@ai@!@@@@@@r   c              3   6   K   | ]}|j         	|j        |V  d S r(   rv   rw   s     r   rz   z(_fields_in_init_order.<locals>.<genexpr>  s0      <<qv<!)<!<<<<<<r   )tupler   s    r   _fields_in_init_orderr~     sB     @@V@@@@@<<V<<<<< r   c                 V     |sdS dd                      fd|D                        dS )N()(,c                 (    g | ]} d |j          S ).r)   )rx   ry   obj_names     r   
<listcomp>z_tuple_str.<locals>.<listcomp>  s)    @@@AH//qv//@@@r   ,))join)r   r   s   ` r   
_tuple_strr     sD      tEsxx@@@@@@@AAEEEEr   )globalslocalsreturn_typec                X   |i }d}|t           ur||d<   d}d                    |          }d                    d |D                       }d|  d| d	| d
| }d                    |                                          }d| d| d|  }i }	t          |||	            |	d         di |S )N _return_typez->_return_typer   
c              3       K   | ]	}d | V  
dS )z  Nr   )rx   bs     r   rz   z_create_fn.<locals>.<genexpr>  s(      ,,!X!XX,,,,,,r   z def r   ra   z:
, zdef __create_fn__(z):
z	
 return __create_fn__r   )r   r   keysexec)
r*   argsbodyr   r   r   return_annotationtxt
local_varsnss
             r   
_create_fnr     s    
 ~'!!!,~,88D>>D99,,t,,,,,D =$
<
<
<
< 1
<
<d
<
<C6;;==))J
Dz
D
Ds
D
Dd
D
DC	Bgr2o(((((r   c                 2    | rd| d|d| dS | d| d| S )Nz*__dataclass_builtins_object__.__setattr__(r   ra   r   =r   )rn   r*   value	self_names       r   _field_assignr     sK      ZYIYYYYQVYYYY(($(((((r   c                    d| j          }| j        t          ur6| j        r| j        ||<   | d| j          d| j          }nl| j        ||<   | d}n\| j        r6| j        t          u r| j         }n?| j        t          ur| j        ||<   | j         }n|r| j        t          ur| j        ||<   |}nd S | j        t          u rd S t          || j         ||          S )N_dflt_z() if z is _HAS_DEFAULT_FACTORY else r   )r*   rT   r   rV   rS   rZ   r1   r   )ry   rn   r   r   slotsdefault_namer   s          r   _field_initr     s'    %AF$$L''6 	( %&$5GL!$ & &6& &V& &EE$ %&$5GL!#'''EE 6 	yG##'))()	%  '11()	%$
 t
 	}&&t 	:::r   c                     | j         t          u r| j        t          u rd}n)| j         t          urd| j         }n| j        t          urd}| j         d| j         | S )Nr   z=_dflt_z=_HAS_DEFAULT_FACTORYz:_type_)rS   r   rT   r*   )ry   rS   s     r   _init_paramr     sw    
 	yG 1W < < 	
'	!	! %AF$$	
	'	)	))f..QV.W...r   c                 d   d}|D ]B}	|	j         r9|	j        t          u r|	j        t          u sd}(|rt	          d|	j        d          Cd | D             }
|
                    t          t          t          d           g }| D ],}	t          |	||
||          }|r|
                    |           -|rBd                    d | D                       }|
                    | d	t           d
| d           |sdg}d |D             }|r|dgz  }|d |D             z  }t          d|g|z   ||
|d           S )NFTznon-default argument z follows default argumentc                 .    i | ]}d |j          |j        S )_type_)r*   rG   rw   s     r   
<dictcomp>z_init_fn.<locals>.<dictcomp>$  s'    888Aqv888r   )r   _HAS_DEFAULT_FACTORY__dataclass_builtins_object__r   c              3   @   K   | ]}|j         t          u |j        V  d S r(   )rZ   r1   r*   rw   s     r   rz   z_init_fn.<locals>.<genexpr>5  s@       B B!".!@!@  f!@!@!@!@B Br   r   r   ra   passc                 ,    g | ]}t          |          S r   r   rw   s     r   r   z_init_fn.<locals>.<listcomp>=  s    777qKNN777r   *c                 ,    g | ]}t          |          S r   r   rw   s     r   r   z_init_fn.<locals>.<listcomp>C  s    @@@AQ@@@r   r,   )r   r   r   )rV   rS   r   rT   	TypeErrorr*   updater   objectr   appendr   _POST_INIT_NAMEr   )r   
std_fieldskw_only_fieldsrn   has_post_initr   r   r   seen_defaultry   r   
body_linesline
params_str_init_paramss                  r   _init_fnr     s    L < <6 	<I((Q->'-I-I# < !; !; !; !; < < < 98888F
MM 4)/     J $ $1ffi??  	$d###  JXX B Bf B B B B B
YHHHH:HHHIII  X
77J777L A 	@@@@@@j kL0 #%"&( ( ( (r   c           	          t          dddd                    d | D                       z   dz   g|          }t          |          S )Nr   r   z(return self.__class__.__qualname__ + f"(r   c                 2    g | ]}|j          d |j          dS )z={self.z!r}r)   rw   s     r   r   z_repr_fn.<locals>.<listcomp>P  s=      1  1  1$% $%6 ? ?16 ? ? ?  1  1  1r   z)"r   )r   r   rD   )r   r   fns      r   _repr_fnr   L  st    	J?YY  1  1)/ 1  1  1 2 22   %
& 
& 
&B 2r   c                     | t           d}|r&dd                    d |D                       z   dz   }nd}t          ddd	| d
ddf||          t          ddd	| d
ddf||          fS )N)rO   r   r   r   c              3   >   K   | ]}t          |j                  V  d S r(   )rL   r*   rw   s     r   rz   z'_frozen_get_del_attr.<locals>.<genexpr>[  s*      #A#AQDLL#A#A#A#A#A#Ar   r   r   __setattr__)r   r*   r   z if type(self) is cls or name in :z> raise FrozenInstanceError(f"cannot assign to field {name!r}")z)super(cls, self).__setattr__(name, value))r   r   __delattr__r+   z; raise FrozenInstanceError(f"cannot delete field {name!r}")z"super(cls, self).__delattr__(name))r   r   r   )rO   r   r   r   
fields_strs        r   _frozen_get_del_attrr   W  s    %8: :F 388#A#A&#A#A#AAAADH

 
}/G*GGGXCE %&( ( ( }&G*GGGU<> %&( ( ( r   c           	      <    t          | ddd| | | dg|          S )N)r   otherz%if other.__class__ is self.__class__:z return zreturn NotImplementedr   )r   )r*   op
self_tupleother_tupler   s        r   _cmp_fnr   p  sE     d'??*?b?+??/1 &' ' ' 'r   c                 R    t          d|           }t          ddd| dg|          S )Nr   __hash__r   zreturn hash(ra   r   )r   r   )r   r   r   s      r   _hash_fnr   ~  sA    FF++Jj3j3334%' ' ' 'r   c                 \    | |j         u p#t          |           |j        u o| j        |j         u S r(   )ClassVarrG   _GenericAlias
__origin__)a_typetypings     r   _is_classvarr     s;     fo% :V 44 9%8;r   c                 @    | |j         u pt          |           |j         u S r(   )r	   rG   r   dataclassess     r   _is_initvarr     s*     k)) 3F||{224r   c                     | |j         u S r(   )r
   r   s     r   _is_kw_onlyr     s    [(((r   c                    t                               |           }|rd }|                    d          }|s*t          j                            |j                  j        }nkt          j                            |j                  }|rE|j                            |          |u r)t          j                            |j                  j        }|r4 ||                    |                    d                    |          rdS dS )N      TF)_MODULE_IDENTIFIER_REmatchgroupsysmodulesgetr   __dict__)	
annotationrO   a_moduler   is_type_predicater   r   module_namemodules	            r   _is_typer     s    R "''
33E kk!nn 	A 009BB [__S^44F A&/--k::hFF[__V%677@ 	##BFF5;;q>>$:$:HEE 	45r   c                    t          | |t                    }t          |t                    r|}n1t          |t          j                  rt          }t          |          }||_        ||_        t          |_
        t          j                            d          }|rXt          ||          s<t          |j        t                    r.t!          |j        | ||j        t                    rt$          |_
        |j
        t          u rot          j        t&                   }t)          ||          s<t          |j        t                    r.t!          |j        | ||j        t(                    rt,          |_
        |j
        t$          t,          fv r&|j        t          urt1          d|j         d          |j
        t          t,          fv r|j        t          u r||_        n&|j        t          urt1          d|j         d          |j
        t          u r>|j        j        j        -t;          dt          |j                   d|j         d          |S )	N)rS   r   field z cannot have a default factoryz$ is a ClassVar but specifies kw_onlyzmutable default z for field z$ is not allowed: use default_factory)rd   r   rK   r   r]   MemberDescriptorTyper   r*   rG   r/   rZ   r   r   r   r   strr   r   r0   r   r   r	   r1   rT   r   rY   rS   	__class__r   rs   )rO   a_namer   default_kw_onlyrS   ry   r   r   s           r   
_get_fieldr     sg    c67++G'5!! #gu9:: 	G'""" AFAF
 AM  [__X&&F ,(( 	,163''	,QVS&&/)+ +	, ,AM 	} k(+,, 	+163''	+QVS+{7J(* *	+ +AM 	}.999G++ .QV . . . / / / 	}000 9'AI 9G## &QV & & & ' ' ' 	}19#6#?#G IDOO I IFI I I J J 	J Hr   c                 \    t          |t                    r| j         d|j         |_        |S )Nr   )rK   r   r   r   )rO   r   s     r   _set_qualnamer   4  s7     %&& D # 0CC5>CCLr   c                 ^    || j         v rdS t          | |           t          | ||           dS )NTF)r   r   setattr)rO   r*   r   s      r   _set_new_attributer  ;  s=     s|t#uCu5r   c                     d S r(   r   rO   r   r   s      r   _hash_set_noner  J  s    4r   c                 V    d |D             }t          | t          ||                    S )Nc                 >    g | ]}|j         |j        n|j         |S r(   )rU   rW   rw   s     r   r   z_hash_add.<locals>.<listcomp>N  s)    KKK!qv~!)~~16~A~~~r   )r   r   )rO   r   r   fldss       r   	_hash_addr	  M  s/    KKvKKKDhtW55666r   c                 0    t          d| j                   )Nz-Cannot overwrite attribute __hash__ in class )r   r   r  s      r   _hash_exceptionr  Q  s(    
 / #/ / 0 0 0r   )FFFF)FFFT)FFTF)FFTT)FTFF)FTFT)FTTF)FTTT)TFFF)TFFT)TFTF)TFTT)TTFF)TTFT)TTTF)TTTTc                    i }| j         t          j        v rt          j        | j                  j        }ni }t	          | t
          t          ||||||                     d}d}| j        ddd         D ]Y}t          |t          d           }|?d}|
                                D ]}|||j        <   t          |t
                    j        rd}Z| j                            di           }g }d}t          j        t                   }|                                D ]\  }}t!          ||          s2t#          |t$                    r6t'          || ||j        t                     r|rt+          |d          d}d}`|                    t/          | |||                     |D ]t}|||j        <   t#          t          | |j        d           t0                    r?|j        t4          u rt7          | |j                   Yt	          | |j        |j                   u| j                                        D ]0\  }}t#          |t0                    r||vrt+          |d          1|r&|r|st+          d          |s|rt+          d	          t	          | t          |           | j                            d
t4                    }|t4          u p|d u od| j        v  }|r|st9          d          d |
                                D             }t;          |          \  }}|r@t=          | t>                    }tA          | dtC          |||||d|v rdnd||	                     d |
                                D             }|r+d |D             } tA          | dtE          | |                     |rOd |D             } tG          d|           }!tG          d|           }"tA          | dtI          dd|!|"|                     |rrd |D             } tG          d|           }!tG          d|           }"dD ]C\  }}#tA          | |tI          ||#|!|"|                    rt+          d| d| j         d          D|rItK          | ||          D ]7}$tA          | |$j        |$          rt+          d|$j         d| j                   8tL          tO          |          tO          |          tO          |          |f         }%|%r |%| ||          | _(        t          | d          s_	 t%          tS          j*        |                     +                    dd          }&n# t*          t8          f$ r d}&Y nw xY w| j        |&z   | _,        |r(tA          | d t[          d! |D                                  |
r|	st+          d"          |	rt]          | ||
          } t_          j0        |            | S )#NFr   T__annotations__z3 is KW_ONLY, but KW_ONLY has already been specifiedz& is a field but has no type annotationz5cannot inherit non-frozen dataclass from a frozen onez5cannot inherit frozen dataclass from a non-frozen oner   __eq__z eq must be true if order is truec                 <    g | ]}|j         t          t          fv |S r   )rZ   r/   r1   rw   s     r   r   z"_process_class.<locals>.<listcomp>  s6     E E EQ-FN+CCC CCCr   r,   r   __dataclass_self__c                 .    g | ]}|j         t          u |S r   rZ   r/   rw   s     r   r   z"_process_class.<locals>.<listcomp>  s$    HHH0G0G!0G0G0Gr   c                      g | ]}|j         	|S r   )rL   rw   s     r   r   z"_process_class.<locals>.<listcomp>  s    000a0000r   r   c                      g | ]}|j         	|S r   rW   rw   s     r   r   z"_process_class.<locals>.<listcomp>      333a3333r   r   z==r   c                      g | ]}|j         	|S r   r  rw   s     r   r   z"_process_class.<locals>.<listcomp>&  r  r   ))__lt__<)__le__z<=)__gt__>)__ge__z>=zCannot overwrite attribute z
 in class z). Consider using functools.total_ordering__doc__z -> Noner   __match_args__c              3   $   K   | ]}|j         V  d S r(   r)   rw   s     r   rz   z!_process_class.<locals>.<genexpr>R  s$       A AA A A A A A Ar   z'weakref_slot is True but slots is False)1r   r   r   r   r  _PARAMSri   __mro__rd   _FIELDSvaluesr*   rn   r   r   itemsr   rK   r   r   r
   r   r   r   r   rS   r   delattrrs   r~   hasattrr   r  r   r   r   r   r   _hash_actionboolr   inspect	signaturer   r  r|   
_add_slotsabcupdate_abstractmethods)'rO   rV   rL   rk   rl   rm   rn   
match_argsrY   r   weakref_slotr   r   any_frozen_basehas_dataclass_basesr   base_fieldsry   cls_annotations
cls_fieldsKW_ONLY_seenr   r*   rG   r   
class_hashhas_explicit_hashall_init_fieldsstd_init_fieldskw_only_init_fieldsr   
field_listr  r   r   r   r   hash_actiontext_sigs'                                          r   _process_classr@  t  s    F
~$$+cn-6 C*4r5+6@ @ A A A O[Ab! 	' 	' a$//""& '')) # #!"qvq'"") '"& l&&'8"==O
 JL+h'K%++-- D D
dk** 	D4%%	DT3[5H(* *	D  >4 != != != > > >LGG jdD'BBCCCC 0 0qv gc16400%88 
	0yG## QV$$$$QVQY/// |))++ O OeeU## 	ODO,C,CtMMMNNN  	. 	*6 	* ) * * *  	.6 	. - . . .
 C&!!! !!*g66J'72 O(D0MX5MP
  =R =;<<<
E E&--// E E EO 2/BB_ _553
#O$3$7$*$1 =Cf<L<L$8$817$+$) 	 	 	" IHV]]__HHHJ E00:0003
HT7,C,CDDD	 	5 43:333--
 $//3"8T#-{+24 4 4	5 	5 	5
  <33:333--
 $// 
	< 
	<HD"
 "#t")$J29#; #; #;< < <   !;d !; !;,/L!; !; !; < < <<  <&sJ@@ 	< 	<B!#r{B77 < !;bk !; !;,/L!; !; < < <<
 tK00#Bxx#F||0 1 2K  = #{3
G<<3	"" 0	 7,S1122:::rJJHH:& 	 	 	HHH	|h. C3 0  A A A A AAA	C 	C 	C  CE CABBB 4fl33s###Js   5U UUc                 :      fdt                     D             S )Nc                 :    g | ]}t          |j                  S r   )rd   r*   )rx   ry   r   s     r   r   z'_dataclass_getstate.<locals>.<listcomp>d  s%    888aGD!&!!888r   r}   r   s   `r   _dataclass_getstaterC  c  s#    88886$<<8888r   c                     t          t          |           |          D ]&\  }}t                              | |j        |           'd S r(   )zipr   r   r   r*   )r   stater   r   s       r   _dataclass_setstaterG  g  sL    F4LL%00 4 4u4U33334 4r   c              #      K   | j                             d          x dE d {V  d S xt          dx
\  } |V  d S  }t          |d          s
|E d {V  d S 	 t	          d| j         d          )NrQ   )r   __weakref__r   __next__z
Slots of 'z' cannot be determined)r   r   r   r(  r   r   )rO   slotiterables      r   
_get_slotsrM  m  s      
,

;
'
' TT2222222222SYYYYYJJJJJ  WXz::XMMMMNNNr   c           
      "   d| j         v rt          | j         d          t          | j                   }t	          d t          |           D                       }t          t          j        	                    t          t          | j        dd                                       }t	          t          j        |j        t          j        ||rdnd                              |d<   |D ]}|                    |d            |                    dd            |                    d	d            t!          | d
d           } t#          |           | j        | j        |          } ||| _        |r d|vrt(          | _        d|vrt,          | _        | S )NrQ   z already specifies __slots__c              3   $   K   | ]}|j         V  d S r(   r)   rw   s     r   rz   z_add_slots.<locals>.<genexpr>  s$      441444444r   r   r  )rI  r   r   rI  r   __getstate____setstate__)r   r   r   dictr|   r   rA   	itertoolschainfrom_iterablemaprM  r#  filterfalse__contains__poprd   rG   	__bases__r   rC  rP  rG  rQ  )rO   	is_frozenr1  cls_dictfield_namesinherited_slots
field_namequalnames           r   r-  r-  }  s   
 cl""3<EEEFFF CL!!H44s44444K%%c*ck!B$6G&H&HII O
 "(O E--2 	
 	
	 	H[ " ' '
 	Z&&&& LLT""" LL%%% sND11H
$s))CL#-
:
:C# 3))2C))2CJr   F
rV   rL   rk   rl   rm   rn   r0  rY   r   r1  c      
   
      R   	
 	 	
f
d}| |S  ||           S )Nc                 6   
 t          | 	
          S r(   )r@  )rO   rk   rn   rV   rY   r0  rl   rL   r   rm   r1  s    r   wrapzdataclass.<locals>.wrap  s-    c4r5+$j'5*, , 	,r   r   )rO   rV   rL   rk   rl   rm   rn   r0  rY   r   r1  rd  s    `````````` r   r   r     ss    , , , , , , , , , , , , , , { 499r   c                     	 	 t          | t                    }n# t          $ r t          d          d w xY wt	          d |                                D                       S )Nz0must be called with a dataclass type or instancec              3   6   K   | ]}|j         t          u |V  d S r(   r  rw   s     r   rz   zfields.<locals>.<genexpr>  s.      GGqq}/F/F/F/F/F/FGGr   )rd   r$  AttributeErrorr   r|   r%  )class_or_instancer   s     r   r   r     sw    V*G44 V V VJKKQUUV
 GGFMMOOGGGGGGs    4c                 H    	 t          t          |           t                    S r(   )r(  rG   r$  )objs    r   _is_dataclass_instancerk    s    <499g&&&r   c                 z    	 t          | t                    r| nt          |           }t          |t                    S r(   )rK   rG   r(  r$  )rj  rO   s     r   r   r     s5    C&&
5##DIIC3   r   )dict_factoryc                `    	 t          |           st          d          t          | |          S )Nz0asdict() should be called on dataclass instances)rk  r   _asdict_inner)rj  rm  s     r   r   r     s9    $ "#&& LJKKKl+++r   c                    t          |           r^g }t          |           D ]A}t          t          | |j                            }|                    |j        |f           B |          S t          | t                    r.t          | d          r t          |           fd| D              S t          | t          t          f          r$ t          |           fd| D                       S t          | t                    r6 t          |           fd|                                 D                       S t          j        |           S )N_fieldsc                 0    g | ]}t          |          S r   ro  rx   vrm  s     r   r   z!_asdict_inner.<locals>.<listcomp>$  s#    GGGa=L99GGGr   c              3   8   K   | ]}t          |          V  d S r(   rs  rt  s     r   rz   z _asdict_inner.<locals>.<genexpr>)  s-      EEAq,77EEEEEEr   c              3   ^   K   | ]'\  }}t          |          t          |          fV  (d S r(   rs  )rx   kru  rm  s      r   rz   z _asdict_inner.<locals>.<genexpr>+  sW       2 2!Q (<88'<88: 2 2 2 2 2 2r   )rk  r   ro  rd   r*   r   rK   r|   r(  rG   listrR  r&  copydeepcopy)rj  rm  r=   ry   r   s    `   r   ro  ro  	  so   c"" %" 	+ 	+A!'#qv"6"6EEEMM165/****|F###	C		 "GC$;$; "( tCyyGGGG3GGGHH	C$	'	' 
" tCyyEEEEEEEEEE	C		 "tCyy 2 2 2 2%(YY[[2 2 2 2 2 	2 }S!!!r   )tuple_factoryc                `    	 t          |           st          d          t          | |          S )Nz1astuple() should be called on dataclass instances)rk  r   _astuple_inner)rj  r|  s     r   r   r   2  s9    $ "#&& MKLLL#}---r   c                    t          |           rWg }t          |           D ]:}t          t          | |j                            }|                    |           ; |          S t          | t                    r.t          | d          r t          |           fd| D              S t          | t          t          f          r$ t          |           fd| D                       S t          | t                    r6 t          |           fd|                                 D                       S t          j        |           S )Nrq  c                 0    g | ]}t          |          S r   r~  rx   ru  r|  s     r   r   z"_astuple_inner.<locals>.<listcomp>X  s#    III>!];;IIIr   c              3   8   K   | ]}t          |          V  d S r(   r  r  s     r   rz   z!_astuple_inner.<locals>.<genexpr>]  s-      GGa=99GGGGGGr   c              3   ^   K   | ]'\  }}t          |          t          |          fV  (d S r(   r  )rx   rx  ru  r|  s      r   rz   z!_astuple_inner.<locals>.<genexpr>_  sT       3 3"a )M::N1m<\<\] 3 3 3 3 3 3r   )rk  r   r~  rd   r*   r   rK   r|   r(  rG   ry  rR  r&  rz  r{  )rj  r|  r=   ry   r   s    `   r   r~  r~  J  si   c"" " 	! 	!A"73#7#7GGEMM%    }V$$$	C		 "GC$;$; " tCyyIIIISIIIJJ	C$	'	' 	" tCyyGGGG3GGGGGG	C		 "tCyy 3 3 3 3&)iikk3 3 3 3 3 	3 }S!!!r   r   )bases	namespacerV   rL   rk   rl   rm   rn   r0  rY   r   r1  c                   	 i t                      }i i |D ]}t          |t                    r|}d}nJt          |          dk    r|\  }}n1t          |          dk    r|\  }}}||<   nt	          d|          t          |t                    r|                                st	          d|          t          j        |          rt	          d|          ||v rt	          d|          |                    |           ||<   fd}t          j
        | |i |          }t          |||||||	|
|||	          S )
Nz
typing.Anyr      zInvalid field: z'Field names must be valid identifiers: z"Field names must not be keywords: zField name duplicated: c                 f    |                                 |                                 | d<   d S )Nr  )r   )r   annotationsdefaultsr  s    r   exec_body_callbackz*make_dataclass.<locals>.exec_body_callback  s8    
		)
		( +r   ra  )rA   rK   r   lenr   isidentifierkeyword	iskeywordr:   r]   	new_classr   )cls_namer   r  r  rV   rL   rk   rl   rm   rn   r0  rY   r   r1  seenitemr*   tpspecr  rO   r  r  s      `                 @@r   r   r   e  s   . 	 55DKH  dC   		8DBBYY!^^ID""YY!^^!ND"d!HTNN6d66777$$$ 	PD,=,=,?,? 	PNdNNOOOT"" 	KIIIJJJ4<<>d>>???D, , , , , , , /(E2/A
B
BC St$2U!,V *G5".0 0 0 0r   c                   	 t          |           st          d          t          | t                                                    D ]}|j        t          u r|j        s"|j        |v rt          d|j         d          :|j        |vrQ|j        t          u r&|j        t          u rt          d|j        d          t          | |j                  ||j        <    | j        di |S )Nz1replace() should be called on dataclass instancesr   zC is declared with init=False, it cannot be specified with replace()zInitVar z! must be specified with replace()r   )rk  r   rd   r$  r%  rZ   r0   rV   r*   rs   r1   rS   r   r   )rj  changesry   s      r   r   r     s/   " "#&& MKLLL
 S'""))++ 3 3=O++v 	v    "-!& "- "- "- . . . 6  }..193G3G  "DAF "D "D "D E E E%c1622GAFO 3=##7###r   r(   )Mrer   rz  r]   r+  r  builtinsrB   rS  r.  r8   r   r   __all__rg  r   r   r   r!   r   r$   r
   r^   r\   r&   r/   r0   r1   r$  r"  r   compiler   rD   r	   r   ri   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r)  r@  rC  rG  rM  r-  r   r   rk  r   rR  r   ro  r|   r   r~  r   r   r   r   r   <module>r     s!   				 



              



  , , , , , , , ,  | 0 / / / /. / / /
        2133 	 	 	 	 	 	 	 	
-//	 	 	 	 	 	 	 	
-// )%(,,       
 
X		+/00-.. ! ! "
 #
#ABB   $       6=2 =2 =2 =2 =2 =2 =2 =2@       > gDtTD'$ $ $ $ $0  	F 	F 	F -1") ) ) ) )0	) 	) 	)9; 9; 9;x/ / /&9( 9( 9(x    2' ' '' ' '; ; ;4 4 4) ) )8 8 8v_ _ _B      7 7 70 0 0,d ,d,d -d -n	
 -d -i -d -i -o -i -o -i -o -i -o*h h h^9 9 94 4 4O O O 4 4 4n4dt5$5u    >H H H$' ' '
! ! ! !% , , , , ,0&" &" &"R #( . . . . .0" " "6 /1DtUD%u %G0 G0 G0 G0 G0T0$ 0$ 0$ 0$ 0$r   