
    bMh5                    <   U d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
mZ ddlmZmZ dZdZded	<    G d
 de          Zed         Zded<    G d de          Z G d de          Z G d dee          Z G d dee          ZdZded<    G d dee          ZdS )z!!! abstract "Usage Documentation"
    [Build a Plugin](../concepts/plugins.md#build-a-plugin)

Plugin interface for Pydantic plugins, and related types.
    )annotations)AnyCallableLiteral
NamedTuple)
CoreConfig
CoreSchemaValidationError)Protocol	TypeAlias)PydanticPluginProtocolBaseValidateHandlerProtocolValidatePythonHandlerProtocolValidateJsonHandlerProtocolValidateStringsHandlerProtocolNewSchemaReturnsSchemaTypePath
SchemaKindvtuple[ValidatePythonHandlerProtocol | None, ValidateJsonHandlerProtocol | None, ValidateStringsHandlerProtocol | None]r   r   c                  (    e Zd ZU dZded<   ded<   dS )r   zQPath defining where `schema_type` was defined, or where `TypeAdapter` was called.strmodulenameN)__name__
__module____qualname____doc____annotations__     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pydantic/plugin/__init__.pyr   r      s(         [[KKKIIIIIr    r   )	BaseModelTypeAdapter	dataclasscreate_modelvalidate_callr   c                      e Zd ZdZddZdS )r   z5Protocol defining the interface for Pydantic plugins.schemar	   schema_typer   schema_type_pathr   schema_kindr   configCoreConfig | Noneplugin_settingsdict[str, object]returnr   c                     t          d          )a  This method is called for each plugin every time a new [`SchemaValidator`][pydantic_core.SchemaValidator]
        is created.

        It should return an event handler for each of the three validation methods, or `None` if the plugin does not
        implement that method.

        Args:
            schema: The schema to validate against.
            schema_type: The original type which the schema was created from, e.g. the model class.
            schema_type_path: Path defining where `schema_type` was defined, or where `TypeAdapter` was called.
            schema_kind: The kind of schema to validate against.
            config: The config to use for validation.
            plugin_settings: Any plugin settings.

        Returns:
            A tuple of optional event handlers for each of the three validation methods -
                `validate_python`, `validate_json`, `validate_strings`.
        z9Pydantic plugins should implement `new_schema_validator`.)NotImplementedError)selfr(   r)   r*   r+   r,   r.   s          r!   new_schema_validatorz+PydanticPluginProtocol.new_schema_validator)   s    : ""]^^^r    N)r(   r	   r)   r   r*   r   r+   r   r,   r-   r.   r/   r0   r   )r   r   r   r   r4   r   r    r!   r   r   &   s4        ??_ _ _ _ _ _r    r   c                  8    e Zd ZU dZded<   	 ddZddZddZdS )r   zBase class for plugin callbacks protocols.

    You shouldn't implement this protocol directly, instead use one of the subclasses with adds the correctly
    typed `on_error` method.
    zCallable[..., None]on_enterresultr   r0   Nonec                    dS )z{Callback to be notified of successful validation.

        Args:
            result: The result of the validation.
        Nr   )r3   r7   s     r!   
on_successz&BaseValidateHandlerProtocol.on_successS   	     	r    errorr
   c                    dS )znCallback to be notified of validation errors.

        Args:
            error: The validation error.
        Nr   )r3   r<   s     r!   on_errorz$BaseValidateHandlerProtocol.on_error[   r;   r    	exception	Exceptionc                    dS )zCallback to be notified of validation exceptions.

        Args:
            exception: The exception raised during validation.
        Nr   )r3   r?   s     r!   on_exceptionz(BaseValidateHandlerProtocol.on_exceptionc   r;   r    N)r7   r   r0   r8   )r<   r
   r0   r8   )r?   r@   r0   r8   )r   r   r   r   r   r:   r>   rB   r   r    r!   r   r   I   sm           "!!!E           r    r   c                  *    e Zd ZdZdddddddddZdS )r   z4Event handler for `SchemaValidator.validate_python`.N)strictfrom_attributescontextself_instanceby_aliasby_nameinputr   rD   bool | NonerE   rF   dict[str, Any] | NonerG   
Any | NonerH   rI   r0   r8   c                   dS )a  Callback to be notified of validation start, and create an instance of the event handler.

        Args:
            input: The input to be validated.
            strict: Whether to validate the object in strict mode.
            from_attributes: Whether to validate objects as inputs by extracting attributes.
            context: The context to use for validation, this is passed to functional validators.
            self_instance: An instance of a model to set attributes on from validation, this is used when running
                validation from the `__init__` method of a model.
            by_alias: Whether to use the field's alias to match the input data to an attribute.
            by_name: Whether to use the field's name to match the input data to an attribute.
        Nr   )r3   rJ   rD   rE   rF   rG   rH   rI   s           r!   r6   z&ValidatePythonHandlerProtocol.on_entero   s	    . 	r    )rJ   r   rD   rK   rE   rK   rF   rL   rG   rM   rH   rK   rI   rK   r0   r8   r   r   r   r   r6   r   r    r!   r   r   l   sL        >> #'+)-$( $#       r    r   c                  (    e Zd ZdZddddddddZdS )r   z2Event handler for `SchemaValidator.validate_json`.N)rD   rF   rG   rH   rI   rJ   str | bytes | bytearrayrD   rK   rF   rL   rG   rM   rH   rI   r0   r8   c                   dS )a  Callback to be notified of validation start, and create an instance of the event handler.

        Args:
            input: The JSON data to be validated.
            strict: Whether to validate the object in strict mode.
            context: The context to use for validation, this is passed to functional validators.
            self_instance: An instance of a model to set attributes on from validation, this is used when running
                validation from the `__init__` method of a model.
            by_alias: Whether to use the field's alias to match the input data to an attribute.
            by_name: Whether to use the field's name to match the input data to an attribute.
        Nr   )r3   rJ   rD   rF   rG   rH   rI   s          r!   r6   z$ValidateJsonHandlerProtocol.on_enter   s	    * 	r    )rJ   rQ   rD   rK   rF   rL   rG   rM   rH   rK   rI   rK   r0   r8   rO   r   r    r!   r   r      sI        << #)-$( $#       r    r   zdict[str, StringInput]StringInputc                  &    e Zd ZdZdddddddZdS )r   z5Event handler for `SchemaValidator.validate_strings`.N)rD   rF   rH   rI   rJ   rS   rD   rK   rF   rL   rH   rI   r0   r8   c                   dS )a  Callback to be notified of validation start, and create an instance of the event handler.

        Args:
            input: The string data to be validated.
            strict: Whether to validate the object in strict mode.
            context: The context to use for validation, this is passed to functional validators.
            by_alias: Whether to use the field's alias to match the input data to an attribute.
            by_name: Whether to use the field's name to match the input data to an attribute.
        Nr   )r3   rJ   rD   rF   rH   rI   s         r!   r6   z'ValidateStringsHandlerProtocol.on_enter   s	    $ 	r    )rJ   rS   rD   rK   rF   rL   rH   rK   rI   rK   r0   r8   rO   r   r    r!   r   r      sF        ?? #)- $#       r    r   N)r   
__future__r   typingr   r   r   r   pydantic_corer   r	   r
   typing_extensionsr   r   __all__r   r   r   r   r   r   r   r   rS   r   r   r    r!   <module>r[      s     # " " " " " 5 5 5 5 5 5 5 5 5 5 5 5 A A A A A A A A A A 1 1 1 1 1 1 1 1	 W   W  W  W  W    Z      hi
 i i i i _  _  _  _  _X  _  _  _F         (      F    $?   :    "=x   6 2 1 1 1 1    %@(     r    