
    dfx                       U d Z ddlmZ ddlZddlmZmZmZmZm	Z	 ddl
mZmZmZmZ ddlmZmZ erddlmZmZ  ed	      Z e	d
      Zed   Z eej2                        Zded<   	 d	 	 	 	 	 	 	 ddZ G d d      ZddZddZy)z(Pluggable schema validator for pydantic.    )annotationsN)TYPE_CHECKINGAnyCallableIterableTypeVar)
CoreConfig
CoreSchemaSchemaValidatorValidationError)Literal	ParamSpec   )BaseValidateHandlerProtocolPydanticPluginProtocolPR)on_validate_pythonon_validate_jsonon_validate_stringszlist[Event]eventsc                \    ddl m}  |       }|rt        | |||xs i       S t        | |      S )zCreate a `SchemaValidator` or `PluggableSchemaValidator` if plugins are installed.

    Returns:
        If plugins are installed then return `PluggableSchemaValidator`, otherwise return `SchemaValidator`.
    r   )get_plugins)_loaderr   PluggableSchemaValidatorr   )schemaconfigplugin_settingsr   pluginss        Z/home/api-vastappli/venv/lib/python3.12/site-packages/pydantic/plugin/_schema_validator.pycreate_schema_validatorr!      s5     %mG'AVTVWWvv..    c                  8    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 ddZddZy)r   zPluggable schema validator.)_schema_validatorvalidate_jsonvalidate_pythonvalidate_stringsc                   t        ||      | _        g }g }g }|D ]S  }|j                  |||      \  }	}
}|	|j                  |	       |
|j                  |
       |C|j                  |       U t	        | j                  j
                  |      | _        t	        | j                  j                  |      | _        t	        | j                  j                  |      | _        y N)r   r$   new_schema_validatorappendbuild_wrapperr&   r%   r'   )selfr   r   r   r   python_event_handlersjson_event_handlersstrings_event_handlerspluginpjss               r    __init__z!PluggableSchemaValidator.__init__*   s     "1!@CEACDF 	1F11&&/RGAq!}%,,Q/}#**1-}&--a0	1  -T-C-C-S-SUjk*4+A+A+O+OQde -d.D.D.U.UWm nr"   c                .    t        | j                  |      S r)   )getattrr$   )r-   names     r    __getattr__z$PluggableSchemaValidator.__getattr__C   s    t--t44r"   N)
r   r
   r   CoreConfig | Noner   z Iterable[PydanticPluginProtocol]r   zdict[str, Any]returnNone)r8   strr;   r   )__name__
__module____qualname____doc__	__slots__r5   r9    r"   r    r   r   %   sJ    %[Ioo "o 2	o
 (o 
o25r"   r   c                     |s S t        d |D              t        d |D              t        d |D              t        j                         d fd       }|S )Nc              3  N   K   | ]  }t        |d       s|j                    yw)on_enterN)filter_handlersrF   .0hs     r    	<genexpr>z build_wrapper.<locals>.<genexpr>K        _PQS]@^!**_   %%c              3  N   K   | ]  }t        |d       s|j                    yw)
on_successN)rG   rO   rH   s     r    rK   z build_wrapper.<locals>.<genexpr>L   s     fa_UVXdEeQ\\frM   c              3  N   K   | ]  }t        |d       s|j                    yw)on_errorN)rG   rQ   rH   s     r    rK   z build_wrapper.<locals>.<genexpr>M   rL   rM   c                     D ]
  } || i |  	  | i |}
D ]
  } ||        |S # t         $ r}	D ]
  } ||         d }~ww xY wr)   )r   )argskwargson_enter_handlerresulton_success_handlererroron_error_handlerfunc	on_enters	on_errorson_successess          r    wrapperzbuild_wrapper.<locals>.wrapperO   s    $- 2  $1&12	t.v. +7 /&&v./ # (1 ,$$U+,s   + 	A	AA	)rS   zP.argsrT   zP.kwargsr;   r   )tuple	functoolswraps)rZ   event_handlersr^   r[   r\   r]   s   `  @@@r    r,   r,   G   s]    _n__	f>ff_n__				 
	 r"   c                D    t        | |d      }|y|j                  dk(  ryy)zFilter out handler methods which are not implemented by the plugin directly - e.g. are missing
    or are inherited from the protocol.
    NFzpydantic.pluginT)r7   r?   )handler_clsmethod_namehandlers      r    rG   rG   b   s1     k;5G			0	0 r"   )NN)r   r
   r   r:   r   zdict[str, Any] | Noner;   r   )rZ   Callable[P, R]rb   z!list[BaseValidateHandlerProtocol]r;   rg   )rd   r   re   r=   r;   bool) rA   
__future__r   r`   typingr   r   r   r   r   pydantic_corer	   r
   r   r   typing_extensionsr   r    r   r   r   r   Eventlist__args__r   __annotations__r!   r   r,   rG   rC   r"   r    <module>rr      s    . "  B B R R 0E cNCLOP5>>* * dh// 1/K`//"5 5D6r"   