
    dfs                        d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dl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mZ e G d d             Z G d d      Zy)    )annotationsN)	dataclass)partial)Any	AwaitableCallable   )
ConfigDict)create_schema_validator   )_discriminated_union_generate_schema_typing_extra)ConfigWrapper)simplify_schema_referencesvalidate_core_schemac                  "    e Zd ZU ded<   ded<   y)
CallMarkerCallable[..., Any]functionboolvalidate_returnN)__name__
__module____qualname____annotations__     Z/home/api-vastappli/venv/lib/python3.12/site-packages/pydantic/_internal/_validate_call.pyr   r      s      r   r   c                  >    e Zd ZdZdZd	dZd
dZdddZddZddZ	y)ValidateCallWrapperaQ  This is a wrapper around a function that validates the arguments passed to it, and optionally the return value.

    It's partially inspired by `wraps` which in turn uses `partial`, but extended to be a descriptor so
    these functions can be applied to instance methods, class methods, static methods, as well as normal functions.
    )
raw_function_config_validate_return__pydantic_core_schema____pydantic_validator____signature__r   r   r   __dict__c                   || _         || _        || _        t        j                  |      | _        t        |t              rj|j                  }d|j                   d| _	        d|j                   d| _
        |j                  | _        |j                  | _        |j                  | _        nU|j                  | _	        |j                  | _
        |j                  | _        |j                  | _        |j                  | _        t        j                  |d       }t!        |      }t#        j$                  ||      }|j'                  |j)                  |            }t+        |      }|x| _        }|j/                  |       }	t1        j2                  |      }t5        ||	|j6                        | _        | j                  r"| j
                  j:                  | j
                  j<                  ur| j
                  j:                  nt>        }
t#        j$                  ||      }|j'                  |j)                  |
            }t1        j2                  t+        |            }|| _         |j/                  |       }	tC        |      }tE        jF                  ||	      t        jH                  | j                         rdfd}|| _%        d | _'        y jL                  | _%        d | _'        y d | _         d | _%        d | _'        y )Nzpartial()c                B   K   j                  |  d {         S 7 wN)validate_python)aw	validators    r   return_val_wrapperz8ValidateCallWrapper.__init__.<locals>.return_val_wrapperW   s     $442X>>Xs   	)r.   zAwaitable[Any]returnNone)(r"   r#   r$   inspect	signaturer'   
isinstancer   funcr   r   r   r   __doc__r   add_module_globalsr   r   GenerateSchemacollect_definitionsgenerate_schemar   r%   core_configr   apply_discriminatorsr   plugin_settingsr&   return_annotationemptyr   __return_pydantic_core_schema__r   pydantic_coreSchemaValidatoriscoroutinefunction__return_pydantic_validator__r-   _name)selfr   configr   r6   	namespaceconfig_wrapper
gen_schemaschemar<   return_typer0   r/   s               @r   __init__zValidateCallWrapper.__init__+   s   $ /$..x8h(==D&t}}oQ7DM"*4+<+<*=Q ?D#'#7#7D "ooDO<<DL$--DM ( 5 5D#+#;#;D &11DO#++DL!44XtD	&v.%44^YO
//
0J0J80TU+F3177%$006%::6B&=fkSaSqSq&r#   %%77t?Q?Q?W?WW ""44 
 *88SJ33J4N4N{4[\F)>>?YZ`?abF39D0(44T:K)&1F%55fkJI**4+<+<=? 6H2 "&
 6?5N5N2
 "&
 48D015D.!%
r   c                    | j                   j                  t        j                  ||            }| j                  r| j	                  |      S |S r,   )r&   r-   rB   
ArgsKwargsrE   )rG   argskwargsress       r   __call__zValidateCallWrapper.__call__c   sF    ))99-:R:RSWY_:`a--55c::
r   Nc                   |	 |j                  || j                        S | j                  j	                  ||      }| j                  || j                  | j                        }| j                  F|#t        j                  || j                  |       |S t        j                  || j                  |       |S # t        $ r Y w xY w)zKBind the raw function and return another ValidateCallWrapper wrapping that.)
__getattribute__rF   AttributeErrorr"   __get__	__class__r#   r$   object__setattr__)rG   objobjtypebound_functionresults        r   rX   zValidateCallWrapper.__get__i   s    ;//DD
 **223@d>S>ST::!""3

F;  ""7DJJ? " s   B7 7	CCc                    || _         y r,   )rF   )rG   ownernames      r   __set_name__z ValidateCallWrapper.__set_name__|   s	    
r   c                "    d| j                    dS )NzValidateCallWrapper(r*   )r"   )rG   s    r   __repr__zValidateCallWrapper.__repr__   s    %d&7&7%8::r   )r   r   rH   zConfigDict | Noner   r   )rQ   r   rR   r   r1   r   r,   )r\   r   r]   ztype[Any] | Noner1   r!   )ra   r   rb   strr1   r2   )r1   rf   )
r   r   r   r7   	__slots__rN   rT   rX   rc   re   r   r   r   r!   r!      s(    I6&p&;r   r!   )
__future__r   _annotationsr3   dataclassesr   	functoolsr   typingr   r   r   rB   rH   r
   plugin._schema_validatorr    r   r   r   r#   r   _core_utilsr   r   r   r!   r   r   r   <module>rp      sQ    2  !  + +   > C C " I   
i; i;r   