
    zi)                       d Z ddlmZ ddl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 ddl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 d	dlmZ d	dlmZ ddl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, ddl-m.Z. ddl/m0Z0 ej1        r.d	dl2m3Z3  G d dej4                  Z5 G d de5ej4                  Z6neZ7d6d7d"Z8d#d$d8d*Z9d9d-Z:d:d2Z;d;d5Z<dS )<z0Private logic for creating pydantic dataclasses.    )annotationsN)partialwraps)	Parameter	Signature)AnyCallableClassVar)
ArgsKwargsPydanticUndefinedSchemaSerializerSchemaValidatorcore_schema)	TypeGuard   )PydanticUndefinedAnnotation)	FieldInfo)create_schema_validator)PydanticDeprecatedSince20   )_config_decorators_typing_extra)ConfigWrapper)collect_dataclass_fields)GenerateSchemagenerate_pydantic_signature)get_standard_typevars_map)set_dataclass_mocks)CallbackGetCoreSchemaHandler)is_valid_identifier)
ConfigDictc                  6    e Zd ZU ded<   ded<   ded<   ddZdS )StandardDataclasszClassVar[dict[str, Any]]__dataclass_fields__zClassVar[Any]__dataclass_params__zClassVar[Callable[..., None]]__post_init__argsobjectkwargsreturnNonec                    d S N )selfr(   r*   s      j/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/pydantic/_internal/_dataclasses.py__init__zStandardDataclass.__init__*   s    D    N)r(   r)   r*   r)   r+   r,   )__name__
__module____qualname____annotations__r2   r/   r3   r1   r$   r$   %   sN         6666++++4444	 	 	 	 	 	r3   r$   c                  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__zClassVar[SchemaValidator]__pydantic_validator__N)r4   r5   r6   __doc__r7   r/   r3   r1   r9   r9   -   sr         
	 
	 	2111----BBBBEEEE;;;;;;;;999999r3   r9   clstype[StandardDataclass]types_namespacedict[str, Any] | Noner+   r,   c                V    t          |           }t          | ||          }|| _        dS )zCollect and set `cls.__pydantic_fields__`.

    Args:
        cls: The class.
        types_namespace: The types namespace, defaults to `None`.
    )typevars_mapN)r   r   r>   )rB   rD   rG   fieldss       r1   set_dataclass_fieldsrI   H   s3     -S11L%c?VVVF$Cr3   T)raise_errors	type[Any]config_wrapper_config.ConfigWrapperrJ   boolc          	     ~   t          | d          rt          j        dt                     |t	          j        |           }t          | |           t          |           }t          |||          }t          | | j
        |          }dd}| j         d|_        || _        |j        | _        || _        t!          | dd          }	 |r1 || t#          t%          |j        d          |d                    }	n|                    | d          }	n:# t(          $ r-}
|r t+          | | j        d|
j         d           Y d}
~
dS d}
~
ww xY w|                    |           }	 |                    |	          }	n'# |j        $ r t+          | | j        d           Y dS w xY wt7          j        d|           } |	| _        t=          |	| | j        | j        d||j                   x| _!        tE          |	|          | _#        |j$        r;tK          | j&                  df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`.
        types_namespace: The types namespace.

    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.
    __post_init_post_parse__zVSupport for `__post_init_post_parse__` has been dropped, the method will not be calledN__dataclass_self__r9   r(   r   r*   r+   r,   c                b    d}| }|j                             t          ||          |           d S )NT)self_instance)r@   validate_pythonr   )rQ   r(   r*   __tracebackhide__ss        r1   r2   z$complete_dataclass.<locals>.__init__   s:     	 00D&1I1IYZ0[[[[[r3   z	.__init____get_pydantic_core_schema__F)from_dunder_get_core_schemaunpack)ref_mode`zall referenced typesztype[PydanticDataclass]	dataclassinstance__fieldstr__valuec                6                         | ||           d S r.   )validate_assignment)r]   r^   r`   	validators      r1   validated_setattrz-complete_dataclass.<locals>.validated_setattr   s!    ))(GWEEEEEr3   T)rQ   r9   r(   r   r*   r   r+   r,   )r]   r   r^   r_   r`   r_   r+   r,   )(hasattrwarningswarnDeprecationWarningr   get_cls_types_namespacerI   r   r   generate_dataclass_signaturer>   r6   r2   config_dictr:   __signature__getattrr    r   generate_schemar   r   r4   namecore_configclean_schemaCollectedInvalidtypingcastr<   r   r5   plugin_settingsr@   r   r?   rb   r   __setattr____get__)rB   rL   rJ   rD   rG   
gen_schemasigr2   get_core_schemaschemaerp   rd   rc   s                @r1   complete_dataclassr}   U   s   2 s.// 
dfx	
 	
 	
 '?DDo...,S11L J 'sC,C^
T
TC\ \ \ \
  #/:::HCL,8CCc#A4HHO 
	X$_,J6TYZZZ%   FF  //QV/WWF&    	C}16}}}===uuuuu	 !,,S11K((00&   C/EFFFuu +/
5
5C $*C -DS^S%5{KQ_Qo. . C #36;"G"GC) ?	s			F 	F 	F 	F 	F 
 		F ,33D#>>4s+   A
D 
E	"EE	"E8 8 FFparamr   c                   | j         }t          |t                    r| j        }|dk    rt          }| j        }|j        }|j        }|'t          |t                    rt          |          r|}n&t          |t                    rt          |          r|}|j         }|t          u r,|j        t          u rt          j        j        }nt          j        }|                     |||          S | S )zCustom processing where the parameter default is of type FieldInfo

    Args:
        param (Parameter): The parameter

    Returns:
        Parameter: The custom processed parameter
    r   N)
annotationro   default)r   
isinstancer   r   r   ro   aliasvalidation_aliasr_   r!   r   default_factoryinspectr   emptydataclasses_HAS_DEFAULT_FACTORYreplace)r~   param_defaultr   ro   r   r   r   s          r1   process_param_defaultsr      s     MM-++ P%
 J z#(9#
5#(>(>#CVW\C]C]#DD(#.. 	$3FGW3X3X 	$#D  '''',0AAA!+1 &:}}
w}OOOLr3   rH   dict[str, FieldInfo]r   r   c                <    t          | j        ||t                    S )zGenerate signature for a pydantic dataclass.

    Args:
        cls: The dataclass.
        fields: The model fields.
        config_wrapper: The config wrapper instance.

    Returns:
        The dataclass signature.
    )initrH   rL   post_process_parameter)r   r2   r   )rB   rH   rL   s      r1   rj   rj      s'     '\&`v   r3   _cls"TypeGuard[type[StandardDataclass]]c           	         t          j        |           oSt          | d           oBt          | j                                      t          t          | di                               S )a>  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.
    ```py
    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@   r7   )r   is_dataclassre   setr%   
issupersetrm   )r   s    r1   is_builtin_dataclassr      sf    > 	 && 	a6777	a)**55c'$HY[]:^:^6_6_``r3   r.   )rB   rC   rD   rE   r+   r,   )
rB   rK   rL   rM   rJ   rN   rD   rE   r+   rN   )r~   r   r+   r   )rB   rC   rH   r   rL   r   r+   r   )r   rK   r+   r   )=rA   
__future__r   _annotationsr   r   rs   rf   	functoolsr   r   r   r   r   r	   r
   pydantic_corer   r   r   r   r   typing_extensionsr   errorsr   rH   r   plugin._schema_validatorr   r    r   r   r   r   _fieldsr   _generate_schemar   r   	_genericsr   _mock_val_serr   _schema_generation_sharedr    _utilsr!   TYPE_CHECKINGconfigr"   Protocolr$   r9   rh   rI   r}   r   rj   r   r/   r3   r1   <module>r      s   6 6 2 2 2 2 2 2        $ $ $ $ $ $ $ $ ( ( ( ( ( ( ( ( * * * * * * * * * *              ( ' ' ' ' ' 0 0 0 0 0 0       > > > > > > 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 " " " " " " - - - - - - I I I I I I I I 0 0 0 0 0 0 . . . . . . C C C C C C ' ' ' ' ' '	 #3######    FO   : : : : :-v : : : :0 3
% 
% 
% 
% 
%" 	f f f f f fR$ $ $ $N   $" " " " " "r3   