§
     @gÁ$  ã                  ó’  — d Z ddlmZ ddlZddlZddlZddlmZm	Z	 ddlm
Z
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 ddlmZ ddlmZmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ej,        r'ddl-m.Z/ ddl0m1Z1 ddl2m3Z3  G d„ de/ej4        ¦  «        Z5neZ6	 	 d0d1d#„Z7d$dd%d&œd2d,„Z8d3d/„Z9dS )4z0Private logic for creating pydantic dataclasses.é    )ÚannotationsN)ÚpartialÚwraps)ÚAnyÚClassVar)Ú
ArgsKwargsÚSchemaSerializerÚSchemaValidatorÚcore_schema)Ú	TypeGuardé   )ÚPydanticUndefinedAnnotation)ÚPluggableSchemaValidatorÚcreate_schema_validator)ÚPydanticDeprecatedSince20é   )Ú_configÚ_decorators)Úcollect_dataclass_fields)ÚGenerateSchema)Úget_standard_typevars_map)Úset_dataclass_mocks)Ú
NsResolver)ÚCallbackGetCoreSchemaHandler)Úgenerate_pydantic_signature)ÚLazyClassAttribute)ÚDataclassInstance)Ú
ConfigDict)Ú	FieldInfoc                  óZ   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   dS )ÚPydanticDataclassai  A protocol containing attributes only available once a class has been decorated as a Pydantic dataclass.

        Attributes:
            __pydantic_config__: Pydantic-specific configuration settings for the dataclass.
            __pydantic_complete__: Whether dataclass building is completed, or if there are still undefined fields.
            __pydantic_core_schema__: The pydantic-core schema used to build the SchemaValidator and SchemaSerializer.
            __pydantic_decorators__: Metadata containing the decorators defined on the dataclass.
            __pydantic_fields__: Metadata about the fields defined on the dataclass.
            __pydantic_serializer__: The pydantic-core SchemaSerializer used to dump instances of the dataclass.
            __pydantic_validator__: The pydantic-core SchemaValidator used to validate instances of the dataclass.
        zClassVar[ConfigDict]Ú__pydantic_config__zClassVar[bool]Ú__pydantic_complete__z ClassVar[core_schema.CoreSchema]Ú__pydantic_core_schema__z$ClassVar[_decorators.DecoratorInfos]Ú__pydantic_decorators__zClassVar[dict[str, FieldInfo]]Ú__pydantic_fields__zClassVar[SchemaSerializer]Ú__pydantic_serializer__z4ClassVar[SchemaValidator | PluggableSchemaValidator]Ú__pydantic_validator__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úS/var/www/piapp/venv/lib/python3.11/site-packages/pydantic/_internal/_dataclasses.pyr!   r!   &   sr   € € € € € € ð
	ð 
	ð 	2Ð1Ð1Ñ1Ø-Ð-Ð-Ñ-ØBÐBÐBÑBØEÐEÐEÑEØ;Ð;Ð;Ñ;Ø;Ð;Ð;Ñ;ØTÐTÐTÑTÐTÐTr/   r!   Úclsútype[StandardDataclass]Úns_resolverúNsResolver | NoneÚconfig_wrapperú_config.ConfigWrapper | NoneÚreturnÚNonec                óX   — t          | ¦  «        }t          | |||¬¦  «        }|| _        dS )zîCollect and set `cls.__pydantic_fields__`.

    Args:
        cls: The class.
        ns_resolver: Namespace resolver to use when getting dataclass annotations.
        config_wrapper: The config wrapper instance, defaults to `None`.
    )r3   Útypevars_mapr5   N)r   r   r&   )r1   r3   r5   r:   Úfieldss        r0   Úset_dataclass_fieldsr<   A   s?   € õ -¨SÑ1Ô1€LÝ%Ø˜°<ÐP^ðñ ô €Fð %€CÔÐÐr/   TF)Úraise_errorsr3   Ú_force_buildú	type[Any]ú_config.ConfigWrapperr=   Úboolr>   c               óþ  ‡— | j         }d!d„}| j        › d	�|_        || _         |j        | _        |s|j        rt          | | j        ¦  «         d
S t          | d¦  «        rt          j	        dt          ¦  «         t          | ||¬¦  «         t          | ¦  «        }t          |||¬¦  «        }t          dt          t           || j        |j        |j        d¬¦  «        ¦  «        | _        t+          | dd¦  «        }		 |	r1 |	| t-          t          |j        d
¬¦  «        |d¬¦  «        ¦  «        }
n|                     | d
¬¦  «        }
n:# t0          $ r-}|r‚ t          | | j        d|j        › d�¦  «         Y d}~d
S d}~ww xY w|                     | j        ¬¦  «        }	 |                     |
¦  «        }
n'# |j        $ r t          | | j        d¦  «         Y d
S w xY wt;          j        d| ¦  «        } |
| _        tA          |
| | j!        | j        d||j"        ¦  «        x| _#        ŠtI          |
|¦  «        | _%        |j&        r;tO          | j(        ¦  «        d"ˆfd „¦   «         }| )                    d| ¦  «        | _(        d| _*        dS )#a†  Finish building a pydantic dataclass.

    This logic is called on a class which has already been wrapped in `dataclasses.dataclass()`.

    This is somewhat analogous to `pydantic._internal._model_construction.complete_model_class`.

    Args:
        cls: The class.
        config_wrapper: The config wrapper instance.
        raise_errors: Whether to raise errors, defaults to `True`.
        ns_resolver: The namespace resolver instance to use when collecting dataclass fields
            and during schema building.
        _force_build: Whether to force building the dataclass, no matter if
            [`defer_build`][pydantic.config.ConfigDict.defer_build] is set.

    Returns:
        `True` if building a pydantic dataclass is successfully completed, `False` otherwise.

    Raises:
        PydanticUndefinedAnnotation: If `raise_error` is `True` and there is an undefined annotations.
    Ú__dataclass_self__r!   Úargsr   Úkwargsr7   r8   c                ób   — d}| }|j                              t          ||¦  «        |¬¦  «         d S )NT)Úself_instance)r(   Úvalidate_pythonr   )rC   rD   rE   Ú__tracebackhide__Úss        r0   Ú__init__z$complete_dataclass.<locals>.__init__v   s:   € Ø ÐØˆØ	Ô ×0Ò0µ¸DÀ&Ñ1IÔ1IÐYZÐ0Ñ[Ô[Ð[Ð[Ð[r/   z	.__init__FÚ__post_init_post_parse__zVSupport for `__post_init_post_parse__` has been dropped, the method will not be called)r5   )r3   r:   Ú__signature__T)Úinitr;   Úpopulate_by_nameÚextraÚis_dataclassÚ__get_pydantic_core_schema__N)Úfrom_dunder_get_core_schemaÚunpack)Úref_modeú`)Útitlezall referenced typesztype[PydanticDataclass]Ú	dataclassÚinstanceÚfieldÚstrÚvaluec               ó6   •— ‰                      | ||¦  «         d S )N)Úvalidate_assignment)rY   rZ   r\   Ú	validators      €r0   Úvalidated_setattrz-complete_dataclass.<locals>.validated_setattrÉ   s!   ø€ à×)Ò)¨(°E¸5ÑAÔAÐAÐAÐAr/   )rC   r!   rD   r   rE   r   r7   r8   )rY   r   rZ   r[   r\   r[   r7   r8   )+rK   r+   Úconfig_dictr"   Údefer_buildr   r)   ÚhasattrÚwarningsÚwarnÚDeprecationWarningr<   r   r   r   r   r   r&   rO   rP   rM   Úgetattrr   Úgenerate_schemar   ÚnameÚcore_configÚclean_schemaÚCollectedInvalidÚtypingÚcastr$   r   r*   Úplugin_settingsr(   r	   r'   r^   r   Ú__setattr__Ú__get__r#   )r1   r5   r=   r3   r>   Úoriginal_initrK   r:   Ú
gen_schemaÚget_core_schemaÚschemaÚerj   r`   r_   s                 @r0   Úcomplete_dataclassrw   U   s7  ø€ ð: ”L€Mð\ð \ð \ð \ð
  #Ô/Ð:Ð:Ð:€HÔà€C„LØ,Ô8€CÔàð ˜NÔ6ð Ý˜C ¤Ñ.Ô.Ð.ØˆuåˆsÐ.Ñ/Ô/ð 
ÝŒØdÕfxñ	
ô 	
ð 	
õ ˜˜k¸.ÐIÑIÔIÐIå,¨SÑ1Ô1€LÝØØØ!ðñ ô €Jõ +ØÝÝ'àØÔ*Ø+Ô<Ø Ô&Øð	
ñ 	
ô 	
ñô €CÔõ ˜cÐ#AÀ4ÑHÔH€OðØð 
	XØ$�_ØÝ,Ý˜JÔ6ÐTYÐZÑZÔZØØ%ðñ ô ñô ˆFˆFð  ×/Ò/°ÐQVÐ/ÑWÔWˆFøøÝ&ð ð ð Øð 	ØÝ˜C ¤¨}°1´6¨}¨}¨}Ñ=Ô=Ð=Øˆuˆuˆuˆuˆuøøøøð	øøøð !×,Ò,°3´<Ð,Ñ@Ô@€KðØ×(Ò(¨Ñ0Ô0ˆˆøØÔ&ð ð ð Ý˜C ¤Ð/EÑFÔFÐFØˆuˆuðøøøõ Œ+Ð/°Ñ
5Ô
5€Cð $*€CÔ Ý-DØ��S”^ SÔ%5°{ÀKÐQ_ÔQoñ.ô .ð €CÔ õ #3°6¸;Ñ"GÔ"G€CÔàÔ)ð ?å	ˆsŒÑ	Ô	ð	Bð 	Bð 	Bð 	Bð 	Bñ 
 Ô	ð	Bð ,×3Ò3°D¸#Ñ>Ô>ˆŒà $€CÔØˆ4s+   Ã:A
E Å
E<Å"E7Å7E<ÆF1 Æ1 GÇGÚ_clsú"TypeGuard[type[StandardDataclass]]c           	     óÒ   — t          j        | ¦  «        oSt          | d¦  «         oBt          | j        ¦  «                             t          t          | di ¦  «        ¦  «        ¦  «        S )aB  Returns True if a class is a stdlib dataclass and *not* a pydantic dataclass.

    We check that
    - `_cls` is a dataclass
    - `_cls` does not inherit from a processed pydantic dataclass (and thus have a `__pydantic_validator__`)
    - `_cls` does not have any annotations that are not dataclass fields
    e.g.
    ```python
    import dataclasses

    import pydantic.dataclasses

    @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')

    Args:
        cls: The class.

    Returns:
        `True` if the class is a stdlib dataclass, `False` otherwise.
    r(   r-   )ÚdataclassesrQ   rc   ÚsetÚ__dataclass_fields__Ú
issupersetrg   )rx   s    r0   Úis_builtin_dataclassr   Ó   sf   € õ> 	Ô  Ñ&Ô&ð 	aÝ˜Ð6Ñ7Ô7Ð7ð	aå�Ô)Ñ*Ô*×5Ò5µc½'À$ÐHYÐ[]Ñ:^Ô:^Ñ6_Ô6_Ñ`Ô`ðr/   )NN)r1   r2   r3   r4   r5   r6   r7   r8   )r1   r?   r5   r@   r=   rA   r3   r4   r>   rA   r7   rA   )rx   r?   r7   ry   ):r,   Ú
__future__r   Ú_annotationsr{   rm   rd   Ú	functoolsr   r   r   r   Úpydantic_corer   r	   r
   r   Útyping_extensionsr   Úerrorsr   Úplugin._schema_validatorr   r   r   Ú r   r   Ú_fieldsr   Ú_generate_schemar   Ú	_genericsr   Ú_mock_val_serr   Ú_namespace_utilsr   Ú_schema_generation_sharedr   Ú
_signaturer   Ú_utilsr   ÚTYPE_CHECKINGÚ	_typeshedr   ÚStandardDataclassÚconfigr   r;   r   ÚProtocolr!   rf   r<   rw   r   r.   r/   r0   ú<module>r•      s”  ðØ 6Ð 6à 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø .Ð .Ð .Ð .Ð .Ð .Ø (Ð (Ð (Ð (Ð (Ð (Ø CÐ CÐ CÐ CÐ CÐ CØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &à	Ôð 3Ø@Ð@Ð@Ð@Ð@Ð@à#Ð#Ð#Ð#Ð#Ð#Ø"Ð"Ð"Ð"Ð"Ð"ðUð Uð Uð Uð UÐ-¨v¬ñ Uô Uð Uð Uð0 3Ðð
 &*Ø37ð%ð %ð %ð %ð %ð0 Ø%)Øð{ð {ð {ð {ð {ð {ð|"ð "ð "ð "ð "ð "r/   