U
    	f<                     @  s   d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZ ddlmZmZ erlddlmZ ddlmZ ed	e	eZG d
d dee ZddddddddZddddddddZdS )    )annotations)TYPE_CHECKINGCallableGenericTypeVar)SchemaSerializerSchemaValidator)Literal   )PydanticErrorCodesPydanticUserError)PydanticDataclass)	BaseModelValSerc                   @  sN   e Zd ZdZdZddddddd	d
ddZdd	dddZddddZdS )
MockValSerzMocker for `pydantic_core.SchemaValidator` or `pydantic_core.SchemaSerializer` which optionally attempts to
    rebuild the thing it's mocking when one of its methods is accessed and raises an error if that fails.
    )_error_message_code_val_or_ser_attempt_rebuildN)attempt_rebuildstrr   z$Literal[('validator', 'serializer')]z"Callable[[], ValSer | None] | NoneNone)error_messagecode
val_or_serr   returnc                C  s(   || _ |dkrtnt| _|| _|| _d S )N	validator)r   r   r   r   r   r   )selfr   r   r   r    r   c/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/pydantic/_internal/_mock_val_ser.py__init__   s    zMockValSer.__init__)itemr   c                 C  sD   d}| j r$|   }|d k	r$t||S t| j| t| j| jdd S )NTr   )r   getattrr   r   r   r   )r   r!   __tracebackhide__val_serr   r   r   __getattr__&   s    
zMockValSer.__getattr__zValSer | Noner   c                 C  s.   | j r*|   }|d k	r|S t| j| jdd S )Nr"   )r   r   r   r   )r   r%   r   r   r   rebuild1   s    zMockValSer.rebuild)__name__
__module____qualname____doc__	__slots__r    r&   r(   r   r   r   r   r      s   r   all referenced typesztype[BaseModel]r   r   )clscls_nameundefined_namer   c                   sd   d| d| d| d}dd fdd}t |d	d
|d _dd fdd}t |d	d|d _dS )a&  Set `__pydantic_validator__` and `__pydantic_serializer__` to `MockValSer`s on a model.

    Args:
        cls: The model class to set the mocks on
        cls_name: Name of the model class, used in error messages
        undefined_name: Name of the undefined thing, used in error messages
    `*` is not fully defined; you should define z, then call `z.model_rebuild()`.SchemaValidator | Noner'   c                     s     j ddddk	r jS d S d S NF   )raise_errors_parent_namespace_depth)model_rebuild__pydantic_validator__r   r/   r   r   attempt_rebuild_validatorH   s    z2set_model_mocks.<locals>.attempt_rebuild_validatorclass-not-fully-definedr   r   r   r   SchemaSerializer | Nonec                     s     j ddddk	r jS d S d S r5   )r9   __pydantic_serializer__r   r;   r   r   attempt_rebuild_serializerU   s    z3set_model_mocks.<locals>.attempt_rebuild_serializer
serializerN)r   r:   r@   r/   r0   r1   Zundefined_type_error_messager<   rA   r   r;   r   set_model_mocks;   s     	rD   ztype[PydanticDataclass]c                   st   ddl m d| d| d| d}dd fd	d
}t|dd|d _dd fdd}t|dd|d _dS )a*  Set `__pydantic_validator__` and `__pydantic_serializer__` to `MockValSer`s on a dataclass.

    Args:
        cls: The model class to set the mocks on
        cls_name: Name of the model class, used in error messages
        undefined_name: Name of the undefined thing, used in error messages
    r
   )rebuild_dataclassr2   r3   z4, then call `pydantic.dataclasses.rebuild_dataclass(z)`.r4   r'   c                     s     ddddk	r j S d S d S r5   )r:   r   r/   rE   r   r   r<   t   s    z6set_dataclass_mocks.<locals>.attempt_rebuild_validatorr=   r   r>   r?   c                     s     ddddk	r j S d S d S r5   )r@   r   rF   r   r   rA      s    z7set_dataclass_mocks.<locals>.attempt_rebuild_serializerN)dataclassesrE   r   r:   r@   rC   r   rF   r   set_dataclass_mocksc   s"    
rH   N)r.   )r.   )
__future__r   typingr   r   r   r   pydantic_corer   r   typing_extensionsr	   errorsr   r   rG   r   mainr   r   r   rD   rH   r   r   r   r   <module>   s   )) 