
    g                       U d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
 ddlmZ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y)zUsage docs: https://docs.pydantic.dev/2.10/concepts/plugins#build-a-plugin

Plugin interface for Pydantic plugins, and related types.
    )annotations)AnyCallable
NamedTuple)
CoreConfig
CoreSchemaValidationError)Literal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<   y)r   zQPath defining where `schema_type` was defined, or where `TypeAdapter` was called.strmodulenameN)__name__
__module____qualname____doc____annotations__     M/var/www/openai/venv/lib/python3.12/site-packages/pydantic/plugin/__init__.pyr   r      s    [K
Ir    r   )	BaseModelTypeAdapter	dataclasscreate_modelvalidate_callr   c                  4    e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)r   z5Protocol defining the interface for Pydantic plugins.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)selfschemaschema_typeschema_type_pathschema_kindconfigplugin_settingss          r!   new_schema_validatorz+PydanticPluginProtocol.new_schema_validator(   s    : ""]^^r    N)r+   r   r,   r   r-   r   r.   r   r/   zCoreConfig | Noner0   zdict[str, object]returnr   )r   r   r   r   r1   r   r    r!   r   r   %   sV    ?__ _ )	_
  _ "_ +_
_r    r   c                  6    e Zd ZU dZded<   	 ddZd	dZd
dZy)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_enterc                     y)z{Callback to be notified of successful validation.

        Args:
            result: The result of the validation.
        Nr   )r*   results     r!   
on_successz&BaseValidateHandlerProtocol.on_successR        	r    c                     y)znCallback to be notified of validation errors.

        Args:
            error: The validation error.
        Nr   )r*   errors     r!   on_errorz$BaseValidateHandlerProtocol.on_errorZ   r8   r    c                     y)zCallback to be notified of validation exceptions.

        Args:
            exception: The exception raised during validation.
        Nr   )r*   	exceptions     r!   on_exceptionz(BaseValidateHandlerProtocol.on_exceptionb   r8   r    N)r6   r   r2   None)r:   r	   r2   r?   )r=   	Exceptionr2   r?   )r   r   r   r   r   r7   r;   r>   r   r    r!   r   r   H   s!     "!Er    r   c                  :    e Zd ZdZddddd	 	 	 	 	 	 	 	 	 	 	 ddZy)r   z4Event handler for `SchemaValidator.validate_python`.N)strictfrom_attributescontextself_instancec                    y)aT  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.
        Nr   )r*   inputrB   rC   rD   rE   s         r!   r4   z&ValidatePythonHandlerProtocol.on_entern   s    & 	r    )rG   r   rB   bool | NonerC   rH   rD   dict[str, Any] | NonerE   
Any | Noner2   r?   r   r   r   r   r4   r   r    r!   r   r   k   sR    > #'+)-$( 	
 % ' " 
r    r   c                  4    e Zd ZdZdddd	 	 	 	 	 	 	 	 	 ddZy)r   z2Event handler for `SchemaValidator.validate_json`.N)rB   rD   rE   c                    y)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.
        Nr   )r*   rG   rB   rD   rE   s        r!   r4   z$ValidateJsonHandlerProtocol.on_enter   s    " 	r    )
rG   zstr | bytes | bytearrayrB   rH   rD   rI   rE   rJ   r2   r?   rK   r   r    r!   r   r      sE    < #)-$(& 	
 ' " 
r    r   zdict[str, StringInput]StringInputc                  .    e Zd ZdZddd	 	 	 	 	 	 	 ddZy)r   z5Event handler for `SchemaValidator.validate_strings`.N)rB   rD   c                    y)aI  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.
        Nr   )r*   rG   rB   rD   s       r!   r4   z'ValidateStringsHandlerProtocol.on_enter   s     	r    )rG   rN   rB   rH   rD   rI   r2   r?   rK   r   r    r!   r   r      s3    ? <@bf
 
-8
J_
	
r    r   N)r   
__future__r   typingr   r   r   pydantic_corer   r   r	   typing_extensionsr
   r   r   __all__r   r   r   r   r   r   r   r   rN   r   r   r    r!   <module>rV      s   
 # , , A A : :	 W )  WZ    hi
I i _X  _F (  F$? 2"=x . 2Y 1%@( r    