ó
    pyüiüF  ã                   óª  • S r SSKrSSKrSSKrSSKJr  SSKJr   SSKJr  SSK
JrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKJr  SS	KJrJrJrJr  SS
KJ r   SSK!J"r"  SSK#J$r$J%r%J&r&J'r'  SSK(J)r)J*r*  SSK+J,r,  \(       a)  SSK(J-r-  SSK.J/r/J0r0  \" SSS9r1\\S   S4   r2 " S S5      r3/ SQr4\" S5      r5\Rl                  S:¼  a±  \" \Rn                  \$4S9\SSSSSSSSSSS.
S\8S\8S \8S!\8S"\8S#\8S$\\\\9   S4   S%\\8   S&\\8   S'\8S(\\\5   /S)4   4S* jj5       5       r:\" \Rn                  \$4S9\SSSSSSSSSSS.
S+\\5   S\8S\8S \8S!\8S"\8S#\8S$\\\\9   S4   S%\\8   S&\\8   S'\8S(S)4S, jj5       5       r:Oª\" \Rn                  \$4S9\SSSSSSSSSS-.	S\8S\8S \8S!\8S"\8S#\8S$\\\\9   S4   S%\\8   S&\\8   S(\\\5   /S)4   4S. jj5       5       r:\" \Rn                  \$4S9\SSSSSSSSSS-.	S+\\5   S\8S\8S \8S!\8S"\8S#\8S$\\\\9   S4   S%\\8   S&\\8   S(S)4S/ jj5       5       r:\" \Rn                  \$4S9 SISSSSSSSSSSS.
S+\\\5      S\8S\8S \8S!\8S"\8S#\8S$\\\\9   S4   S%\\8   S&\\8   S'\8S(\\\\5   /S)4   S)4   4S0 jjj5       r:\S1\S   S2\8S(\\S   SS4   4S3 j5       r; " S4 S5      r<S5\S   S$\\   S%\8S6\=S(S4
S7 jr>SJS9 jr?S1\S   S:\S(S4S; jr@\S4S5\S   S$\\   S6\\=   S(\S<   4S= jjrA\Rl                  S>:¼  a  S?SS@\=S(\84SA jrBOS?SS@\=S(\84SB jrBSKSD jrCSCSSE\=S2\S(S4SF jrDS+\\   S(\84SG jrES5\S   S$\\   S(S84SH jrFg! \	 a     GN/f = f)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                   ó,  • \ rS rSr% \\\\4      \S'   \\   \S'   \\	S      \S'   \\
   \S'   \\	S      \S'   \\
   \S'   \\\      \S	'   \\	S /S
4      \S'   \\
   \S'   S\S\SS
4S jr\S\S    SS4S j5       r\S\S   S\SS4S j5       rSrg
)r$   éB   Ú__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                 ó   • g ©N© ©Úselfr2   r3   s      ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic/v1/dataclasses.pyÚ__init__ÚDataclass.__init__P   s   € Øó    Úclsr!   c                 ó   • g r6   r7   ©r>   s    r:   Ú__get_validators__ÚDataclass.__get_validators__S   ó   € àr=   r#   Úvc                 ó   • g r6   r7   ©r>   rD   s     r:   Ú__validate__ÚDataclass.__validate__W   rC   r=   r7   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r	   r
   Ústrr   Ú__annotations__r   Úboolr   r    Úobjectr;   ÚclassmethodrA   rG   Ú__static_attributes__r7   r=   r:   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_onlyr^   r_   r`   ra   rb   rc   rd   re   rf   rg   r4   ÚDataclassClassOrWrapperc        
         ó   • g r6   r7   r]   s
             r:   rS   rS   h   ó   € ð 	r=   Ú_clsc       
         ó   • g r6   r7   )rk   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   s              r:   rS   rS   y   s   € ð  	r=   ©	r^   r_   r`   ra   rb   rc   rd   re   rf   c        	         ó   • g r6   r7   rm   s	            r:   rS   rS   �   s   € ð 	r=   c       	         ó   • g r6   r7   )
rk   r^   r_   r`   ra   rb   rc   rd   re   rf   s
             r:   rS   rS   �   rj   r=   c       
         ó†   ^^^^^^^^	^
^• [        U5      mS[        [           SS4UUUU
UUUUU	U4
S jjnU c  U$ U" U 5      $ )zï
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>   r4   rh   c                 óB  >
• Tb  TOc[        U 5      =(       aR    U R                  S   [        L =(       d6    [        [	        U 5      5      [        [	        U R                  S   5      5      :H  nU(       a  Sn[        U 5      nSnOaU R                  =(       d    Sn[        R                  S:¼  a  [        R                  " U TTTT
TTT	S9nO[        R                  " U TTTT
TTS9nSnTc  UOTn[        U TXR5        UR                  R                  " S0 U R                  U 0D6  U$ )	Nr   Ú FrY   )r^   r_   r`   ra   rb   rc   rg   )r^   r_   r`   ra   rb   rc   Tr7   )rV   Ú	__bases__rP   ÚsetÚdirr&   Ú__doc__ÚsysÚversion_infoÚdataclassesrS   Ú#_add_pydantic_validation_attributesr/   Ú__try_update_forward_refs__rI   )r>   Úshould_use_proxyÚ
dc_cls_docÚdc_clsÚdefault_validate_on_initÚshould_validate_on_initr`   rc   r^   rg   ra   r_   Ú
the_configrb   rf   re   s         €€€€€€€€€€r:   ÚwrapÚ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ÔaØ×!Ñ!×=Ò=ÑTÀÇÁÈsÐ@SÒTØˆr=   )r   r   r   )rk   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   r‚   r�   s    `````` ``` @r:   rS   rS   ¯   sI   ÿù€ ô* ˜FÓ#€Jð#”$”s‘)ð #Ð 9÷ #÷ #ð #ðJ �|Øˆá�‹:Ðr=   r>   Úvaluec              #   ó\   #   • U R                   n Xl         U v •  X l         g ! X l         f = f7fr6   )r,   )r>   r„   Úoriginal_run_validations      r:   rT   rT   ñ   s/   é € à!×=Ñ=ÐðBØ*/Ô'ØŠ	à*AÕ'øÐ*AÕ'üs   ‚,�
! š,¡)©,c                   óœ   • \ rS rSrSrS\S   SS4S jrS\S	\S\4S
 jrS\	S\4S jr
S\	S\SS4S jrS\S\4S jrSS jrS\SS 4S jrSrg)r&   éû   Ú__dataclass__r~   r$   r4   Nc                 ó2   • [         R                  U SU5        g )Nr‰   )rP   Ú__setattr__)r9   r~   s     r:   r;   ÚDataclassProxy.__init__þ   s   € Ü×Ñ˜4 °&Õ9r=   r2   r3   c                 óˆ   • [        U R                  S5         U R                  " U0 UD6sS S S 5        $ ! , (       d  f       g = f)NT)rT   r‰   r8   s      r:   Ú__call__ÚDataclassProxy.__call__  s1   € Ü˜D×.Ñ.°Õ5Ø×%Ò% tÐ6¨vÑ6÷ 6×5×5ús	   —3³
AÚnamec                 ó.   • [        U R                  U5      $ r6   )Úgetattrr‰   )r9   r�   s     r:   Ú__getattr__ÚDataclassProxy.__getattr__  s   € Ü�t×)Ñ)¨4Ó0Ð0r=   Ú_DataclassProxy__nameÚ_DataclassProxy__valuec                 ó.   • [        U R                  X5      $ r6   )Úsetattrr‰   )r9   r•   r–   s      r:   r‹   ÚDataclassProxy.__setattr__  s   € Ü�t×)Ñ)¨6Ó;Ð;r=   Úinstancec                 ó,   • [        XR                  5      $ r6   )Ú
isinstancer‰   )r9   rš   s     r:   Ú__instancecheck__Ú DataclassProxy.__instancecheck__  s   € Ü˜(×$6Ñ$6Ó7Ð7r=   c                 óT   • [        [        R                  " U R                  5      5      $ r6   )r&   Úcopyr‰   )r9   s    r:   Ú__copy__ÚDataclassProxy.__copy__  s   € ÜœdŸiši¨×(:Ñ(:Ó;Ó<Ð<r=   Úmemoc                 óV   • [        [        R                  " U R                  U5      5      $ r6   )r&   r    Údeepcopyr‰   )r9   r£   s     r:   Ú__deepcopy__ÚDataclassProxy.__deepcopy__  s   € ÜœdŸmšm¨D×,>Ñ,>ÀÓEÓFÐFr=   r7   )r4   r&   )rI   rJ   rK   rL   Ú	__slots__r   r;   r   rŽ   rM   r“   r‹   rO   r�   r¡   r¦   rR   r7   r=   r:   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=   r~   r}   c           	      óŽ  ^^^^• U R                   m[        T5      SSS[        S[        SS4UU4S jj5       m[        U S5      (       aY   U R                  R
                  m[        T5      SSS[        S[        SS4UU4S	 jj5       n[        U S
T5        [        U SU5        O3[        T5      SSS[        S[        SS4U4S jj5       n[        U S
U5        [        U S[        SU5      5        [        U SS5        [        U S[        U TU5      5        [        U S[        5        [        U S[        [        5      5        [        U S[        [        5      5        U R                  R                  R                   (       a.  U R"                  R$                  (       d  [        U S[&        5        ggg! [         a    U R                  m GNcf = f)zò
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
r9   r$   r2   r3   r4   Nc           
      ó  >• TR                   [        R                  :X  aA  T" U /UQ70 UR                  5        VVs0 s H  u  p4X0R                  ;   d  M  X4_M     snnD6  g TR                   [        R
                  :X  au  UR                  5        H   u  p4U R                  R                  X45        M"     T" U /UQ70 UR                  5        VVs0 s H  u  p4X0R                  ;   d  M  X4_M     snnD6  g T" U /UQ70 UD6  g s  snnf s  snnf r6   )Úextrar   ÚignoreÚitemsr)   ÚallowÚ__dict__Ú
setdefault)r9   r2   r3   ÚkrD   rd   r^   s        €€r:   Úhandle_extra_initÚ>_add_pydantic_validation_attributes.<locals>.handle_extra_init"  s×   ø€ à�<‰<œ5Ÿ<™<Ó'Ù�Ðd˜Òd°&·,±,´.Ô c².©$¨!ÀA×IbÑIbÑDb£ ¢±.Ò cÓdà�\‰\œUŸ[™[Ó(ØŸ™ž‘�Ø—‘×(Ñ(¨Ö.ñ 'á�Ðd˜Òd°&·,±,´.Ô c².©$¨!ÀA×IbÑIbÑDb£ ¢±.Ò cÓdñ �Ð'˜Ò' Ó'ùó !dùó
 !ds   »DÁDÃDÃ'Dr+   c                 ó  >• TR                   S:X  a  T" U /UQ70 UD6  U R                  R                  (       a3  U R                  5         [	        U S5      (       a  U R
                  " U0 UD6  TR                   S:X  a  T" U /UQ70 UD6  g g )NÚbefore_validationr-   Úafter_validation)Úpost_init_callÚ	__class__r,   r0   Úhasattrr-   )r9   r2   r3   rd   Ú	post_inits      €€r:   Únew_post_initÚ:_add_pydantic_validation_attributes.<locals>.new_post_init5  s„   ø€ à×$Ñ$Ð(;Ó;Ù˜$Ð0 Ò0¨Ò0à�~‰~×9×9Ø×1Ñ1Ô3Ü˜4Ð!;×<Ñ<Ø×1Ò1°4ÐB¸6ÒBà×$Ñ$Ð(:Ó:Ù˜$Ð0 Ò0¨Ó0ð ;r=   r;   c                 ó  >• T" U /UQ70 UD6  U R                   R                  (       a  U R                  5         [        U S5      (       a{  0 n[	        U R                   R
                  R                  5       5       H5  u  pEUR                  [        R                  L d  M$   X   X5R                  '   M7     U R                  " S0 UD6  g g ! [         a6    UR                  UR                  UR                  5      X5R                  '    MŒ  f = f)Nr-   r7   )r¸   r,   r0   r¹   Ú	enumerater)   ÚvaluesÚ_field_typery   Ú_FIELD_INITVARr�   Ú
IndexErrorÚgetÚdefaultr-   )r9   r2   r3   Úinitvars_and_valuesÚiÚfr²   s         €r:   Únew_initÚ5_add_pydantic_validation_attributes.<locals>.new_initG  sÜ   ø€ á˜dÐ4 TÒ4¨VÒ4à�~‰~×9×9Ø×1Ñ1Ô3ä�tÐ7×8Ñ8ð
 79Ð#Ü% d§n¡n×&IÑ&I×&PÑ&PÓ&RÖS‘D�AØ—}‘}¬×(BÑ(BÔBðXà:>¹'Ð/·±Ó7ñ	 Tð ×-Ò-ÑDÐ0CÓDð 9øô  *ó XØ:@¿*¹*ÀQÇVÁVÈQÏYÉYÓ:WÐ/·±Ô7ðXús   ÂCÃ<DÄDr,   r.   Fr/   r0   rG   rA   r‹   )r;   r   r   r¹   r+   Ú__wrapped__ÚAttributeErrorr˜   r   rU   Ú_dataclass_validate_valuesrQ   Ú_validate_dataclassÚ_get_validatorsr/   Ú
__config__Úvalidate_assignmentr*   rc   Ú&_dataclass_validate_assignment_setattr)	r~   rd   re   r}   r»   rÈ   r²   r^   rº   s	    `    @@@r:   rz   rz     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* Æ*GÇGr!   c              #   ó(   #   • U R                   v •  g 7fr6   )rG   r@   s    r:   rÎ   rÎ   k  s   é € Ø
×
Ñ
Óùs   ‚rD   c                 óX  • [        U S5         [        X5      (       a  UR                  5         UsS S S 5        $ [        U[        [        45      (       a  U " U6 sS S S 5        $ [        U[
        5      (       a  U " S0 UD6sS S S 5        $ [        U R                  S9e! , (       d  f       g = f)NT)Ú
class_namer7   )rT   rœ   r0   ÚlistÚtupleÚdictr   rI   rF   s     r:   rÍ   rÍ   o  sŠ   € Ü	˜˜TÕ	"Ü�a×ÑØ×*Ñ*Ô,Ø÷ 
#Ñ	"ô ˜œD¤%˜=×)Ñ)Ù˜�7÷ 
#Ñ	"ô ˜œ4× Ñ Ù‘8˜‘8÷ 
#Ñ	"ô %°·±Ñ=Ð=÷ 
#Õ	"ús   �"B¹BÁ"BÂBÂ
B)r    c                 óV  • 0 n[         R                  " U 5       Hµ  n[        nS nUR                  [         R                  La  UR                  nO0UR
                  [         R                  La  UR
                  nO[        n[        U[        5      (       a
  UnSU l	        O[        SXVS.UR                  D6nUR                  U4X4R                  '   M·     [        U 5      n[        U R                   4UU R"                  USS0S.UD6n	Ub  X)l        U	$ U R$                  =(       d    SU	l        U	$ )NT)rÄ   Údefault_factoryÚ__resolve_forward_refs__F)rÏ   rJ   Ú__validators__Ú__cls_kwargs__rr   r7   )ry   Úfieldsr   rÄ   ÚMISSINGrÙ   r   rœ   r   r1   r   ÚmetadataÚtyper�   r   r   rI   rJ   rv   )
r~   rd   r}   Úfield_definitionsÚfieldrÄ   rÙ   Ú
field_infoÚ
validatorsÚmodels
             r:   rU   rU   |  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„MØ€Lð ?E¿n¹n×>RÐPR€E„MØ€Lr=   )rZ   é   Úobjr±   c                 óJ   • [        [        [        U 5      US 5      [        5      $ r6   )rœ   r’   rà   r   ©rç   r±   s     r:   Ú_is_field_cached_propertyrê   ¥  s   € Üœ'¤$ s£)¨Q°Ó5´ÓGÐGr=   c                 ó   • g)NFr7   ré   s     r:   rê   rê   ª  s   € Ør=   r9   c                 óL  • [        U S5      (       a  g [        U SS5      (       aX  U R                  R                  5        VVs0 s H0  u  p[        U[        5      (       a  M  [        X5      (       a  M.  X_M2     nnnO@U R                  R                  5        VVs0 s H  u  p[        X5      (       a  M  X_M     nnn[        U R                  X0R                  S9u  pEnU(       a  UeU R                  R                  U5        [        R                  U SS5        g s  snnf s  snnf )Nr.   r1   Fr@   T)r’   r¯   r­   rœ   r   rê   r   r/   r¸   ÚupdaterP   r‹   )r9   r±   rD   Ú
input_dataÚdÚ_Úvalidation_errors          r:   rÌ   rÌ   ®  sþ   € ô ˆtÐ/×0Ñ0ØÜˆtÐ:¸E×BÑBð
 Ÿ™×+Ñ+Ô-ô
â-‘�Ü˜q¤)×,ó ä0IÈ$×0Ró ˆAŠDÙ-ð 	ñ 
ˆ
ð (,§}¡}×':Ñ':Ô'<ÔgÒ'<™t˜qÔD]Ð^b×Df“d�a’dÑ'<ˆ
ÑgÜ+¨D×,CÑ,CÀZ×UcÑUcÑdÑ€AÐ
ÞØÐØ‡M�M×Ñ˜ÔÜ
×Ñ�tÐ7¸Õ>ùó
ùó hs   ÁDÁ!DÁ3DÂD Â4D r�   c                 ón  • U R                   (       aŽ  [        U R                  5      nUR                  US 5        U R                  R
                  R                  US 5      nU(       a:  UR                  X#XR                  S9u  p%U(       a  [        U/U R                  5      e[        R                  XU5        g )N)Úlocr>   )r.   r×   r¯   Úpopr/   Ú
__fields__rÃ   Úvalidater¸   r   rP   r‹   )r9   r�   r„   rï   Úknown_fieldÚerror_s         r:   rÑ   rÑ   Ä  s‰   € Ø×$×$Ü�—‘ÓˆØ	�‰ˆd�DÔØ×-Ñ-×8Ñ8×<Ñ<¸TÀ4ÓHˆÞØ'×0Ñ0°¸tÏÉÐ0ÐX‰MˆEÞÜ% v h°·±Ó?Ð?ä
×Ñ�t 5Õ)r=   c           	      óÜ   • [         R                  " U 5      =(       aP    [        U S5      (       + =(       a8    [        U R                  5      R                  [        [        U S0 5      5      5      $ )aw  
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/   rN   )ry   Úis_dataclassr¹   rt   r)   Ú
issupersetr’   )rk   s    r:   rV   rV   Ñ  sZ   € ô. 	× Ò  Ó&÷ 	aÜ˜Ð2Ó3Ô3÷	aä�×)Ñ)Ó*×5Ñ5´c¼'À$ÐHYÐ[]Ó:^Ó6_Ó`ðr=   c              #   óF   #   • [        [        XSS95       Sh  v•N   g N7f)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)rd   rf   N)rÎ   rS   )r~   rd   s     r:   rW   rW   î  s   é € ô œy¨È$ÑOÓP×PÓPùs   ‚!™š!r6   )r>   rh   r4   r!   )r9   r$   r4   N)Grv   r    ry   rw   Ú
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#   rh   r$   Ú__all__rX   rx   râ   rO   rP   rS   rT   r&   rM   rz   rÎ   rÍ   rU   rê   rÌ   rÑ   rV   rW   r7   r=   r:   Ú<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   œM ÍMÍM