
    h5                       % S r SSKJr  SSKJrJrJrJr  SSKJ	r	J
r
Jr  SSKJrJr  SrSrS\S	'    " S
 S\5      r\S   rS\S'    " S S\5      r " S S\5      r " S S\\5      r " S S\\5      rSrS\S'    " S S\\5      rg)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                  .    \ rS rSr% SrS\S'   S\S'   Srg)r      zQPath defining where `schema_type` was defined, or where `TypeAdapter` was called.strmodulename N)__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r       J/var/www/html/env/lib/python3.13/site-packages/pydantic/plugin/__init__.pyr   r      s    [K
Ir#   r   )	BaseModelTypeAdapter	dataclasscreate_modelvalidate_callr   c                  >    \ rS rSrSr              SS jrSrg)r   &   z5Protocol defining the interface for Pydantic plugins.c                    [        S5      e)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_validator+PydanticPluginProtocol.new_schema_validator)   s    : ""]^^r#   r   N)r/   r	   r0   r   r1   r   r2   r   r3   zCoreConfig | Noner4   zdict[str, object]returnr   )r   r   r   r   r    r5   r"   r   r#   r$   r   r   &   sV    ?__ _ )	_
  _ "_ +_
_r#   r   c                  D    \ rS rSr% SrS\S'    S
S jrSS jrSS jrSr	g	)r   I   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                    g)zcCallback to be notified of successful validation.

Args:
    result: The result of the validation.
Nr   )r.   results     r$   
on_success&BaseValidateHandlerProtocol.on_successS        	r#   c                    g)zVCallback to be notified of validation errors.

Args:
    error: The validation error.
Nr   )r.   errors     r$   on_error$BaseValidateHandlerProtocol.on_error[   r?   r#   c                    g)zpCallback to be notified of validation exceptions.

Args:
    exception: The exception raised during validation.
Nr   )r.   	exceptions     r$   on_exception(BaseValidateHandlerProtocol.on_exceptionc   r?   r#   r   N)r<   r   r7   None)rA   r
   r7   rH   )rE   	Exceptionr7   rH   )
r   r   r   r   r    r!   r=   rB   rF   r"   r   r#   r$   r   r   I   s!     "!Er#   r   c                  R    \ rS rSrSrSSSSSSS.               SS jjrSrg)r   l   z4Event handler for `SchemaValidator.validate_python`.N)strictfrom_attributescontextself_instanceby_aliasby_namec                   g)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   )r.   inputrL   rM   rN   rO   rP   rQ   s           r$   r:   &ValidatePythonHandlerProtocol.on_entero   s    . 	r#   r   )rS   r   rL   bool | NonerM   rU   rN   dict[str, Any] | NonerO   
Any | NonerP   rU   rQ   rU   r7   rH   r   r   r   r   r    r:   r"   r   r#   r$   r   r   l   sq    > #'+)-$( $# 	
 % ' "   
 r#   r   c                  L    \ rS rSrSrSSSSSS.             SS jjrSrg)r      z2Event handler for `SchemaValidator.validate_json`.N)rL   rN   rO   rP   rQ   c                   g)aq  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   )r.   rS   rL   rN   rO   rP   rQ   s          r$   r:   $ValidateJsonHandlerProtocol.on_enter   s    * 	r#   r   )rS   zstr | bytes | bytearrayrL   rU   rN   rV   rO   rW   rP   rU   rQ   rU   r7   rH   rX   r   r#   r$   r   r      sd    < #)-$( $#& 	
 ' "   
 r#   r   zdict[str, StringInput]StringInputc                  F    \ rS rSrSrSSSSS.           SS jjrSrg)r      z5Event handler for `SchemaValidator.validate_strings`.N)rL   rN   rP   rQ   c                   g)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   )r.   rS   rL   rN   rP   rQ   s         r$   r:   'ValidateStringsHandlerProtocol.on_enter   s    $ 	r#   r   )rS   r]   rL   rU   rN   rV   rP   rU   rQ   rU   r7   rH   rX   r   r#   r$   r   r      sW    ? #)- $# 	
 '   
 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   r]   r   r   r#   r$   <module>rg      s    # 5 5 A A 1	 W )  WZ    hi
I i _X  _F (  F$? :"=x 6 2Y 1%@( r#   