Ë
    &V.jüF  ã                   ó�  — d Z ddlZddlZddlZddlmZ ddl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mZmZmZ ddlmZ ddlmZ dd	lmZmZmZmZ dd
lm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* ddl+m,Z, er,ddl(m-Z- ddl.m/Z/m0Z0  edd¬«      Z1eed   df   Z2 G d„ d«      Z3g d¢Z4 ed«      Z5ejl                  dk\  r³ eejn                  e$f¬«      edddddddddddœ
de8de8d e8d!e8d"e8d#e8d$eeee9   df   d%ee8   d&ee8   d'e8d(eee5   gd)f   fd*„«       «       Z: eejn                  e$f¬«      edddddddddddœ
d+ee5   de8de8d e8d!e8d"e8d#e8d$eeee9   df   d%ee8   d&ee8   d'e8d(d)fd,„«       «       Z:n¬ eejn                  e$f¬«      edddddddddd-œ	de8de8d e8d!e8d"e8d#e8d$eeee9   df   d%ee8   d&ee8   d(eee5   gd)f   fd.„«       «       Z: eejn                  e$f¬«      edddddddddd-œ	d+ee5   de8de8d e8d!e8d"e8d#e8d$eeee9   df   d%ee8   d&ee8   d(d)fd/„«       «       Z: eejn                  e$f¬«      	 dIdddddddddddœ
d+eee5      de8de8d e8d!e8d"e8d#e8d$eeee9   df   d%ee8   d&ee8   d'e8d(eeee5   gd)f   d)f   fd0„«       Z:ed1ed   d2e8d(eed   ddf   fd3„«       Z; G d4„ d«      Z<d5ed   d$ee   d%e8d6e=d(df
d7„Z>dJd9„Z?d1ed   d:ed(dfd;„Z@edfd5ed   d$ee   d6ee=   d(ed<   fd=„ZAejl                  d>k\  rd?dd@e=d(e8fdA„ZBn
d?dd@e=d(e8fdB„ZBdKdD„ZCdCddEe=d2ed(dfdF„ZDd+ee   d(e8fdG„ZEd5ed   d$ee   d(d8fdH„ZFy# e	$ r Y �Œ"w xY w)LaX  
The main purpose is to enhance stdlib dataclasses by adding validation
A pydantic dataclass can be generated from scratch or from a stdlib one.

Behind the scene, a pydantic dataclass is just like a regular one on which we attach
a `BaseModel` and magic methods to trigger the validation of the data.
`__init__` and `__post_init__` are hence overridden and have extra logic to be
able to validate input data.

When a pydantic dataclass is generated from scratch, it's just a plain dataclass
with validation triggered at initialization

The tricky part if for stdlib dataclasses that are converted after into pydantic ones e.g.

```py
@dataclasses.dataclass
class M:
    x: int

ValidatedM = pydantic.dataclasses.dataclass(M)
```

We indeed still want to support equality, hashing, repr, ... as if it was the stdlib one!

```py
assert isinstance(ValidatedM(x=1), M)
assert ValidatedM(x=1) == M(x=1)
```

This means we **don't want to create a new dataclass that inherits from it**
The trick is to create a wrapper around `M` that will act as a proxy to trigger
validation without altering default `M` behaviour.
é    N)Úcontextmanager)Úwraps)Úcached_property)ÚTYPE_CHECKINGÚAnyÚCallableÚClassVarÚDictÚ	GeneratorÚOptionalÚTypeÚTypeVarÚUnionÚoverload)Údataclass_transform)Úgather_all_validators)Ú
BaseConfigÚ
ConfigDictÚExtraÚ
get_config)ÚValidationError)ÚDataclassTypeError)ÚFieldÚ	FieldInfoÚRequiredÚ	Undefined)Úcreate_modelÚvalidate_model)ÚClassAttribute)Ú	BaseModel)ÚCallableGeneratorÚNoArgAnyCallableÚ
DataclassTÚ	Dataclass)ÚboundÚDataclassProxyc                   ó  — e Zd ZU eeeef      ed<   ee   ed<   eed      ed<   ee	   ed<   eed      ed<   ee	   ed<   ee
e      ed<   eed gd	f      ed
<   ee	   ed<   dededd	fd„Zede
d    ddfd„«       Zede
d   deddfd„«       Zy	)r$   Ú__dataclass_fields__Ú__dataclass_params__).NÚ__post_init__Ú__pydantic_run_validation__Ú__post_init_post_parse__Ú__pydantic_initialised__Ú__pydantic_model__NÚ__pydantic_validate_values__Ú#__pydantic_has_field_info_default__ÚargsÚkwargsÚreturnc                  ó   — y ©N© ©Úselfr1   r2   s      úYC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\pydantic/v1/dataclasses.pyÚ__init__zDataclass.__init__P   s   € Øó    Úclsr!   c                  ó   — y r5   r6   ©r<   s    r9   Ú__get_validators__zDataclass.__get_validators__S   ó   € àr;   r#   Úvc                  ó   — y r5   r6   ©r<   rA   s     r9   Ú__validate__zDataclass.__validate__W   r@   r;   )Ú__name__Ú
__module__Ú__qualname__r	   r
   Ústrr   Ú__annotations__r   Úboolr   r    Úobjectr:   Úclassmethodr?   rD   r6   r;   r9   r$   r$   B   sõ   … à& t¨C°¨H¡~Ñ6Ó6Ø& s™mÓ+Ø ¨Ñ 3Ñ4Ó4ð &.¨d¡^Ó3Ø"*¨8°IÑ+>Ñ"?Ó?Ø"*¨4¡.Ó0Ø$ T¨)¡_Ñ5Ó5Ø&.¨x¸¸ÀtÐ8KÑ/LÑ&MÓMØ-5°d©^Ó;ð	 &ð 	°Fð 	¸tó 	ð 
ð	 D¨Ñ$5ð 	Ð:Mò 	ó 
ð	ð 
ð	˜d <Ñ0ð 	°Sð 	¸\ò 	ó 
ñ	r;   )Ú	dataclassÚset_validationÚ$create_pydantic_model_from_dataclassÚis_builtin_dataclassÚmake_dataclass_validatorÚ_T©é   é
   )Úfield_specifiersTF.©
ÚinitÚreprÚeqÚorderÚunsafe_hashÚfrozenÚconfigÚvalidate_on_initÚ	use_proxyÚkw_onlyrX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r3   ÚDataclassClassOrWrapperc        
          ó   — y r5   r6   rW   s
             r9   rM   rM   h   ó   € ð 	r;   Ú_clsc       
          ó   — y r5   r6   )re   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   s              r9   rM   rM   y   s   € ð  	r;   ©	rX   rY   rZ   r[   r\   r]   r^   r_   r`   c        	          ó   — y r5   r6   rg   s	            r9   rM   rM   �   s   € ð 	r;   c       	          ó   — y r5   r6   )
re   rX   rY   rZ   r[   r\   r]   r^   r_   r`   s
             r9   rM   rM   �   rd   r;   c       
         ó€   ‡‡‡‡‡‡‡‡	‡
‡— t        |«      Šdt        t           ddfˆˆˆˆ
ˆˆˆˆˆ	ˆf
d„}| €|S  || «      S )a  
    Like the python standard lib dataclasses but with type validation.
    The result is either a pydantic dataclass that will validate input data
    or a wrapper that will trigger validation around a stdlib dataclass
    to avoid modifying it directly
    r<   r3   rb   c           
      ó  •
— ‰�‰nYt        | «      xrM | j                  d   t        u xs6 t        t	        | «      «      t        t	        | j                  d   «      «      k(  }|rd}t        | «      }d}n_| j                  xs d}t        j                  dk\  rt        j                  | ‰‰‰‰
‰‰‰	¬«      }nt        j                  | ‰‰‰‰
‰‰¬«      }d}‰€|n‰}t        | ‰||«        |j                  j                  di | j                  | i¤Ž |S )	Nr   Ú FrS   )rX   rY   rZ   r[   r\   r]   ra   )rX   rY   rZ   r[   r\   r]   Tr6   )rP   Ú	__bases__rK   ÚsetÚdirr&   Ú__doc__ÚsysÚversion_infoÚdataclassesrM   Ú#_add_pydantic_validation_attributesr.   Ú__try_update_forward_refs__rE   )r<   Úshould_use_proxyÚ
dc_cls_docÚdc_clsÚdefault_validate_on_initÚshould_validate_on_initrZ   r]   rX   ra   r[   rY   Ú
the_configr\   r`   r_   s         €€€€€€€€€€r9   Úwrapzdataclass.<locals>.wrapÆ   s*  ø€ ð Ð$ñ ô % SÓ)ò `Ø—]‘] 1Ñ%¬Ð/Ò^´3´s¸3³x³=ÄCÌÈCÏMÉMÐZ[ÑL\ÓH]ÓD^Ñ3^ð 	ñ ØˆJÜ# CÓ(ˆFØ',Ñ$àŸ™Ò*¨ˆJÜ×Ñ 7Ò*Ü$×.Ñ.ØØØØØØ +Ø!Ø#ô	‘ô %×.Ñ.Ø˜d¨°"¸EÈ{Ðciô�ð (,Ð$à>NÐ>VÑ":Ð\lÐÜ+¨C°Ð=TÐV`ÔaØ=ˆ×!Ñ!×=Ñ=ÑTÀÇÁÈsÐ@SÒTØˆr;   )r   r   r   )re   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r|   r{   s    `````` ``` @r9   rM   rM   ¯   sD   ÿù€ ô* ˜FÓ#€Jð#”$”s‘)ð #Ð 9÷ #ö #ðJ €|Øˆá�‹:Ðr;   r<   Úvaluec              #   ób   K  — | j                   }	 || _         | –— || _         y # || _         w xY w­wr5   )r+   )r<   r}   Úoriginal_run_validations      r9   rN   rN   ñ   s6   è ø€ à!×=Ñ=ÐðBØ*/ˆÔ'ØŠ	à*AˆÕ'øÐ*AˆÕ'üs   ‚/�# ›/£	,¬/c                   ó†   — e Zd ZdZded   ddfd„Zdededefd	„Zd
edefd„Z	dededdfd„Z
dedefd„Zdd„Zdedd fd„Zy)r&   Ú__dataclass__rx   r$   r3   Nc                 ó2   — t         j                  | d|«       y )Nr�   )rK   Ú__setattr__)r8   rx   s     r9   r:   zDataclassProxy.__init__þ   s   € Ü×Ñ˜4 °&Õ9r;   r1   r2   c                 ó~   — t        | j                  d«      5   | j                  |i |¤Žcd d d «       S # 1 sw Y   y xY w)NT)rN   r�   r7   s      r9   Ú__call__zDataclassProxy.__call__  s3   € Ü˜D×.Ñ.°Õ5Ø%�4×%Ñ% tÐ6¨vÑ6÷ 6×5Ò5ús   —3³<Únamec                 ó.   — t        | j                  |«      S r5   )Úgetattrr�   )r8   r†   s     r9   Ú__getattr__zDataclassProxy.__getattr__  s   € Ü�t×)Ñ)¨4Ó0Ð0r;   Ú_DataclassProxy__nameÚ_DataclassProxy__valuec                 ó0   — t        | j                  ||«      S r5   )Úsetattrr�   )r8   rŠ   r‹   s      r9   rƒ   zDataclassProxy.__setattr__  s   € Ü�t×)Ñ)¨6°7Ó;Ð;r;   Úinstancec                 ó.   — t        || j                  «      S r5   )Ú
isinstancer�   )r8   rŽ   s     r9   Ú__instancecheck__z DataclassProxy.__instancecheck__  s   € Ü˜( D×$6Ñ$6Ó7Ð7r;   c                 óR   — t        t        j                  | j                  «      «      S r5   )r&   Úcopyr�   )r8   s    r9   Ú__copy__zDataclassProxy.__copy__  s   € ÜœdŸi™i¨×(:Ñ(:Ó;Ó<Ð<r;   Úmemoc                 óT   — t        t        j                  | j                  |«      «      S r5   )r&   r“   Údeepcopyr�   )r8   r•   s     r9   Ú__deepcopy__zDataclassProxy.__deepcopy__  s   € ÜœdŸm™m¨D×,>Ñ,>ÀÓEÓFÐFr;   )r3   r&   )rE   rF   rG   Ú	__slots__r   r:   r   r…   rH   r‰   rƒ   rJ   r‘   r”   r˜   r6   r;   r9   r&   r&   û   s•   „ Ø€Ið:˜t KÑ0ð :°Tó :ð7˜cð 7¨Sð 7°Só 7ð1 ð 1¨ó 1ð< #ð <°ð <¸ó <ð8¨#ð 8°$ó 8ó=ðG ð GÐ)9ô Gr;   rx   rw   c           	      ób  ‡‡‡‡— | j                   Št        ‰«      dddt        dt        ddfˆˆfd„«       Št        | d«      rW	 | j                  j
                  Št        ‰«      dddt        dt        ddfˆˆfd	„«       }t        | d
‰«       t        | d|«       n1t        ‰«      dddt        dt        ddfˆfd„«       }t        | d
|«       t        | dt        d|«      «       t        | dd«       t        | dt        | ‰|«      «       t        | dt        «       t        | dt        t        «      «       t        | dt        t        «      «       | j                  j                  j                   r)| j"                  j$                  st        | dt&        «       yyy# t        $ r | j                  ŠY �ŒTw xY w)a  
    We need to replace the right method. If no `__post_init__` has been set in the stdlib dataclass
    it won't even exist (code is generated on the fly by `dataclasses`)
    By default, we run validation after `__init__` or `__post_init__` if defined
    r8   r$   r1   r2   r3   Nc           
      ó
  •— ‰j                   t        j                  k(  r> ‰| g|¢­i |j                  «       D ��ci c]  \  }}|| j                  v sŒ||“Œ c}}¤Ž y ‰j                   t        j
                  k(  rr|j                  «       D ]!  \  }}| j                  j                  ||«       Œ#  ‰| g|¢­i |j                  «       D ��ci c]  \  }}|| j                  v sŒ||“Œ c}}¤Ž y  ‰| g|¢­i |¤Ž y c c}}w c c}}w r5   )Úextrar   ÚignoreÚitemsr(   ÚallowÚ__dict__Ú
setdefault)r8   r1   r2   ÚkrA   r^   rX   s        €€r9   Úhandle_extra_initz>_add_pydantic_validation_attributes.<locals>.handle_extra_init"  sã   ø€ à�<‰<œ5Ÿ<™<Ò'Ù�Ðd˜Òd°&·,±,´.Ô c±.©$¨!¨QÀAÈ×IbÑIbÒDb  A¡°.Ò cÓdà�\‰\œUŸ[™[Ò(ØŸ™ž‘��1Ø—‘×(Ñ(¨¨AÕ.ð 'á�Ðd˜Òd°&·,±,´.Ô c±.©$¨!¨QÀAÈ×IbÑIbÒDb  A¡°.Ò cÓdñ �Ð'˜Ò' Ó'ùó !dùó
 !ds   ºC9ÁC9Ã	C?Ã C?r*   c                 óü   •— ‰j                   dk(  r ‰| g|¢­i |¤Ž | j                  j                  r.| j                  «        t	        | d«      r | j
                  |i |¤Ž ‰j                   dk(  r ‰| g|¢­i |¤Ž y y )NÚbefore_validationr,   Úafter_validation)Úpost_init_callÚ	__class__r+   r/   Úhasattrr,   )r8   r1   r2   r^   Ú	post_inits      €€r9   Únew_post_initz:_add_pydantic_validation_attributes.<locals>.new_post_init5  sƒ   ø€ à×$Ñ$Ð(;Ò;Ù˜$Ð0 Ò0¨Ò0à�~‰~×9Ò9Ø×1Ñ1Ô3Ü˜4Ð!;Ô<Ø1�D×1Ñ1°4ÐB¸6ÒBà×$Ñ$Ð(:Ò:Ù˜$Ð0 Ò0¨Ó0ð ;r;   r:   c                 óú  •—  ‰| g|¢­i |¤Ž | j                   j                  r| j                  «        t        | d«      rzi }t	        | j                   j
                  j                  «       «      D ]5  \  }}|j                  t        j                  u sŒ#	 ||   ||j                  <   Œ7  | j                  di |¤Ž y y # t        $ r6 |j                  |j                  |j                  «      ||j                  <   Y ŒŠw xY w)Nr,   r6   )r¨   r+   r/   r©   Ú	enumerater(   ÚvaluesÚ_field_typers   Ú_FIELD_INITVARr†   Ú
IndexErrorÚgetÚdefaultr,   )r8   r1   r2   Úinitvars_and_valuesÚiÚfr£   s         €r9   Únew_initz5_add_pydantic_validation_attributes.<locals>.new_initG  sã   ø€ á˜dÐ4 TÒ4¨VÒ4à�~‰~×9Ò9Ø×1Ñ1Ô3ä�tÐ7Ô8ð
 79Ð#Ü% d§n¡n×&IÑ&I×&PÑ&PÓ&RÖS‘D�A�qØ—}‘}¬×(BÑ(BÒBðXà:>¸q¹'Ð/°·±Ò7ð	 Tð .�×-Ñ-ÑDÐ0CÓDð 9øô  *ò XØ:@¿*¹*ÀQÇVÁVÈQÏYÉYÓ:WÐ/°·±Ó7ðXús   ÂB;Â;<C:Ã9C:r+   r-   Fr.   r/   rD   r?   rƒ   )r:   r   r   r©   r*   Ú__wrapped__ÚAttributeErrorr�   r   rO   Ú_dataclass_validate_valuesrL   Ú_validate_dataclassÚ_get_validatorsr.   Ú
__config__Úvalidate_assignmentr)   r]   Ú&_dataclass_validate_assignment_setattr)	rx   r^   r_   rw   r«   r·   r£   rX   rª   s	    `    @@@r9   rt   rt     s¿  û€ ð �?‰?€Dä
ˆ4ƒ[ð
( ð 
(´Cð 
(Ä3ð 
(È4õ 
(ó ð
(ô ˆv�Ô'ð	-Ø×,Ñ,×8Ñ8ˆIô 
ˆyÓ	ð
	1 ð 
	1´Cð 
	1Ä3ð 
	1È4õ 
	1ó 
ð
	1ô 	�˜
Ð$5Ô6Ü�˜¨Õ7ô 
ˆt‹ð	E˜;ð 	E¬sð 	E¼cð 	EÀdô 	Eó 
ð	Eô, 	�˜
 HÔ-äˆFÐ1´>ÐB_ÐaqÓ3rÔsÜˆFÐ.°Ô6ÜˆFÐ(Ô*NÈvÐW]Ð_iÓ*jÔkÜˆFÐ2Ô4NÔOÜˆF�N¤KÔ0CÓ$DÔEÜˆFÐ(¬+´oÓ*FÔGà× Ñ ×+Ñ+×?Ò?È×HcÑHc×HjÒHjÜ�˜Ô'MÕNð IkÐ?øôk ò 	-Ø×,Ñ,‹Ið	-ús   ÁF ÆF.Æ-F.r!   c              #   ó(   K  — | j                   –— y ­wr5   )rD   r>   s    r9   r¼   r¼   k  s   è ø€ Ø
×
Ñ
Óùs   ‚rA   c                 ó8  — t        | d«      5  t        || «      r|j                  «        |cd d d «       S t        |t        t        f«      r | |Ž cd d d «       S t        |t
        «      r | di |¤Žcd d d «       S t        | j                  ¬«      ‚# 1 sw Y   y xY w)NT)Ú
class_namer6   )rN   r�   r/   ÚlistÚtupleÚdictr   rE   rC   s     r9   r»   r»   o  sƒ   € Ü	˜˜TÕ	"Ü�a˜ÔØ×*Ñ*Ô,Ø÷ 
#Ñ	"ô ˜œD¤%˜=Ô)Ù˜�7÷ 
#Ñ	"ô ˜œ4Ô Ù‘8˜‘8÷ 
#Ñ	"ô %°·±Ô=Ð=÷ 
#Ð	"ús   �BµBÁBÁ:BÂBr    c                 ó<  — i }t        j                  | «      D ]¯  }t        }d }|j                  t         j                  ur|j                  }n/|j
                  t         j                  ur|j
                  }nt        }t        |t        «      r
|}d| _	        nt        d||dœ|j                  ¤Ž}|j                  |f||j                  <   Œ± t        | «      }t        | j                   f|| j"                  |ddidœ|¤Ž}	|�	||	_        |	S | j$                  xs d|	_        |	S )NT)r³   Údefault_factoryÚ__resolve_forward_refs__F)r½   rF   Ú__validators__Ú__cls_kwargs__rl   r6   )rs   Úfieldsr   r³   ÚMISSINGrÇ   r   r�   r   r0   r   ÚmetadataÚtyper†   r   r   rE   rF   rp   )
rx   r^   rw   Úfield_definitionsÚfieldr³   rÇ   Ú
field_infoÚ
validatorsÚmodels
             r9   rO   rO   |  s#  € ð
 )+ÐÜ×#Ñ# FÖ+ˆÜ ˆØ8<ˆð �=‰=¤× 3Ñ 3Ñ3Ø—m‘m‰GØ×"Ñ"¬+×*=Ñ*=Ñ=Ø#×3Ñ3‰OäˆGä�gœyÔ)Ø ˆJØ9=ˆFÕ6äÐb wÀÑbÐSX×SaÑSaÑbˆJà).¯©°ZÐ(@Ð˜%Ÿ*™*Ò%ð% ,ô( ' vÓ.€JÜ+Ø�‰ð àØ×$Ñ$Ø!Ø2°EÐ:ñ ð ñ €Eð #-Ð"8�J€E„MØ€Lð ?E¿n¹nÒ>RÐPR€E„MØ€Lr;   )rT   é   Úobjr¢   c                 óJ   — t        t        t        | «      |d «      t        «      S r5   )r�   rˆ   rÎ   r   ©rÕ   r¢   s     r9   Ú_is_field_cached_propertyrØ   ¥  s   € Üœ'¤$ s£)¨Q°Ó5´ÓGÐGr;   c                  ó   — y)NFr6   r×   s     r9   rØ   rØ   ª  s   € Ør;   r8   c                 ó  — t        | d«      ry t        | dd«      rJ| j                  j                  «       D ��ci c]$  \  }}t        |t        «      st        | |«      s||“Œ& }}}n:| j                  j                  «       D ��ci c]  \  }}t        | |«      rŒ||“Œ }}}t        | j                  || j                  ¬«      \  }}}|r|‚| j                  j                  |«       t        j                  | dd«       y c c}}w c c}}w )Nr-   r0   Fr>   T)rˆ   r    rž   r�   r   rØ   r   r.   r¨   ÚupdaterK   rƒ   )r8   r¢   rA   Ú
input_dataÚdÚ_Úvalidation_errors          r9   rº   rº   ®  s   € ô ˆtÐ/Ô0ØÜˆtÐ:¸EÔBð
 Ÿ™×+Ñ+Ô-ô
á-‘��1Ü˜q¤)Ô,Ô0IÈ$ÐPQÔ0Rð ˆq‰DØ-ð 	ò 
ð (,§}¡}×':Ñ':Ô'<ÔgÑ'<™t˜q !ÔD]Ð^bÐdeÕDf�a˜‘dÐ'<ˆ
ÑgÜ+¨D×,CÑ,CÀZÐUY×UcÑUcÔdÑ€A€qÐ
ÙØÐØ‡M�M×Ñ˜ÔÜ
×Ñ�tÐ7¸Õ>ùó
ùó hs   ¸)C<ÂDÂDr†   c                 ó^  — | j                   rŠt        | j                  «      }|j                  |d «       | j                  j
                  j                  |d «      }|r;|j                  |||| j                  ¬«      \  }}|rt        |g| j                  «      ‚t        j                  | ||«       y )N)Úlocr<   )r-   rÅ   r    Úpopr.   Ú
__fields__r²   Úvalidater¨   r   rK   rƒ   )r8   r†   r}   rÝ   Úknown_fieldÚerror_s         r9   r¿   r¿   Ä  s‘   € Ø×$Ò$Ü�—‘ÓˆØ	�‰ˆd�DÔØ×-Ñ-×8Ñ8×<Ñ<¸TÀ4ÓHˆÙØ'×0Ñ0°¸¸tÈÏÉÐ0ÓX‰MˆE�6ÙÜ% v h°·±Ó?Ð?ä
×Ñ�t˜T 5Õ)r;   c           	      ó¾   — t        j                  | «      xrG t        | d«       xr8 t        | j                  «      j                  t        t        | di «      «      «      S )a¿  
    Whether a class is a stdlib dataclass
    (useful to discriminated a pydantic dataclass that is actually a wrapper around a stdlib dataclass)

    we check that
    - `_cls` is a dataclass
    - `_cls` is not a processed pydantic dataclass (with a basemodel attached)
    - `_cls` is not a pydantic dataclass inheriting directly from a stdlib dataclass
    e.g.
    ```
    @dataclasses.dataclass
    class A:
        x: int

    @pydantic.dataclasses.dataclass
    class B(A):
        y: int
    ```
    In this case, when we first check `B`, we make an extra check and look at the annotations ('y'),
    which won't be a superset of all the dataclass fields (only the stdlib fields i.e. 'x')
    r.   rI   )rs   Úis_dataclassr©   rn   r(   Ú
issupersetrˆ   )re   s    r9   rP   rP   Ñ  sZ   € ô. 	× Ñ  Ó&ò 	aÜ˜Ð2Ó3Ð3ò	aä�×)Ñ)Ó*×5Ñ5´c¼'À$ÐHYÐ[]Ó:^Ó6_Ó`ðr;   c              #   óN   K  — t        t        | |d¬«      «      E d{  –—†  y7 Œ­w)zÔ
    Create a pydantic.dataclass from a builtin dataclass to add type validation
    and yield the validators
    It retrieves the parameters of the dataclass and forwards them to the newly created dataclass
    T)r^   r`   N)r¼   rM   )rx   r^   s     r9   rQ   rQ   î  s   è ø€ ô œy¨¸È$ÔOÓP×PÒPús   ‚%�#ž%r5   )r<   rb   r3   r!   )r8   r$   r3   N)Grp   r“   rs   rq   Ú
contextlibr   Ú	functoolsr   r   ÚImportErrorÚtypingr   r   r   r	   r
   r   r   r   r   r   r   Útyping_extensionsr   Úpydantic.v1.class_validatorsr   Úpydantic.v1.configr   r   r   r   Úpydantic.v1.error_wrappersr   Úpydantic.v1.errorsr   Úpydantic.v1.fieldsr   r   r   r   Úpydantic.v1.mainr   r   Úpydantic.v1.utilsr   r    Úpydantic.v1.typingr!   r"   r#   rb   r$   Ú__all__rR   rr   rÐ   rJ   rK   rM   rN   r&   rH   rt   r¼   r»   rO   rØ   rº   r¿   rP   rQ   r6   r;   r9   Ú<module>rù      sÖ  ðñ óB Û Û 
Ý %Ý ð	Ý)÷
 u× t× tÑ tå 1å >ß HÓ HÝ 6Ý 1ß DÓ Dß 9Ý ,áÝ*ßFá˜¨[Ô9€Jà# D¨Ñ$5Ð7GÐ$GÑHÐ÷ñ ò4€ñ ˆTƒ]€à×Ñ�wÒá¨;×+<Ñ+<¸eÐ*DÔEØð ØØØØ!ØØ8<Ø+/Ø$(Øòàðð ðð ð	ð
 ðð ðð ðð �j $ v¡,°Ð4Ñ5ðð # 4™.ðð ˜D‘>ðð ðð 
�4˜‘8�*Ð7Ð7Ñ	8òó ó Fðñ ¨;×+<Ñ+<¸eÐ*DÔEØð ØØØØ!ØØ8<Ø+/Ø$(ØòØ�2‰hðð ðð ð	ð
 ðð ðð ðð ðð �j $ v¡,°Ð4Ñ5ðð # 4™.ðð ˜D‘>ðð ðð 
#òó ó Fññ$ ¨;×+<Ñ+<¸eÐ*DÔEØð ØØØØ!ØØ8<Ø+/Ø$(òàðð ðð ð	ð
 ðð ðð ðð �j $ v¡,°Ð4Ñ5ðð # 4™.ðð ˜D‘>ðð 
�4˜‘8�*Ð7Ð7Ñ	8òó ó Fðñ ¨;×+<Ñ+<¸eÐ*DÔEØð ØØØØ!ØØ8<Ø+/Ø$(òØ�2‰hðð ðð ð	ð
 ðð ðð ðð ðð �j $ v¡,°Ð4Ñ5ðð # 4™.ðð ˜D‘>ðð 
#òó ó Fðñ   {×'8Ñ'8¸%Ð&@ÔAà#ð>ð ØØØØØØ48Ø'+Ø $Øò>Ø
�4˜‘8Ñ
ð>ð ð>ð ð	>ð
 	ð>ð ð>ð ð>ð ð>ð �*˜d 6™l¨DÐ0Ñ1ð>ð ˜t‘nð>ð ˜‰~ð>ð ð>ð ˆ8�T˜"‘X�JÐ 9Ð9Ñ:Ð<UÐUÑVò>ó Bð>ðB ðB˜˜\Ñ*ð B°4ð B¸IÀdÈ<ÑFXÐZ^Ð`dÐFdÑ<eò Bó ðB÷Gñ Gð4SOØ�ÑðSOà�ÑðSOð ðSOð ð	SOð
 
óSOólð
>˜T ,Ñ/ð 
>°Cð 
>¸Ló 
>ð #Ø $ñ$Ø�Ñð$à�‰Ið$ð ˜‘ð$ð 
ˆ+Ñó	$ðN ×Ñ�vÒðH {ð H°sð H¸tô Hð
 {ð °sð ¸tó ó?ð,
*°ð 
*ÀCð 
*ÐPSð 
*ÐX\ó 
*ð˜t C™yð ¨Tó ð:Q T¨+Ñ%6ð QÀÀZÑ@Pð QÐUhô QøðI ò 	âð	ús   œL< Ì<MÍM