o
    Ci<                     @  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r6d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Z	ddddZdS )    )annotations)TYPE_CHECKINGCallableGenericTypeVar)SchemaSerializerSchemaValidator)Literal   )PydanticErrorCodesPydanticUserError)PydanticDataclass)	BaseModelValSerc                   @  s8   e Zd ZdZdZdddddZdddZ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error_messagestrcoder   
val_or_ser"Literal['validator', 'serializer']r   "Callable[[], ValSer | None] | NonereturnNonec                C  s(   || _ |dkr	tnt| _|| _|| _d S )N	validator)r   r   r   r   r   r   )selfr   r   r   r    r    x/var/www/html/fyndo/python/python_agents/rag_suite/venv/lib/python3.10/site-packages/pydantic/_internal/_mock_val_ser.py__init__   s   
zMockValSer.__init__itemc                 C  s@   d}| j r|   }|d urt||S t| j| t| j| jd)NTr   )r   getattrr   r   r   r   )r   r#   __tracebackhide__val_serr    r    r!   __getattr__&   s   
zMockValSer.__getattr__ValSer | Nonec                 C  s.   | j r|   }|d ur|S t| j| jdd S )Nr$   )r   r   r   r   )r   r'   r    r    r!   rebuild1   s   zMockValSer.rebuild)
r   r   r   r   r   r   r   r   r   r   )r#   r   r   r   )r   r)   )__name__
__module____qualname____doc__	__slots__r"   r(   r*   r    r    r    r!   r      s    
r   all referenced typesclstype[BaseModel]cls_namer   undefined_namer   r   c                   s\   d| d| d| d}d fdd}t |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()`.r   SchemaValidator | Nonec                         j ddddur jS d S NF   )raise_errors_parent_namespace_depth)model_rebuild__pydantic_validator__r    r1   r    r!   attempt_rebuild_validatorH      z2set_model_mocks.<locals>.attempt_rebuild_validatorclass-not-fully-definedr   r   r   r   SchemaSerializer | Nonec                     r8   r9   )r=   __pydantic_serializer__r    r?   r    r!   attempt_rebuild_serializerU   rA   z3set_model_mocks.<locals>.attempt_rebuild_serializer
serializerNr   r7   r   rD   )r   r>   rE   r1   r3   r4   undefined_type_error_messager@   rF   r    r?   r!   set_model_mocks;   s$   	rL   type[PydanticDataclass]c                   sl   ddl m d| d| d| d}d fd	d
}t|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_dataclassr5   r6   z4, then call `pydantic.dataclasses.rebuild_dataclass(z)`.r   r7   c                         ddddur j S d S r9   )r>   r    r1   rN   r    r!   r@   t   rA   z6set_dataclass_mocks.<locals>.attempt_rebuild_validatorrB   r   rC   rD   c                     rO   r9   )rE   r    rP   r    r!   rF      rA   z7set_dataclass_mocks.<locals>.attempt_rebuild_serializerNrH   rI   )dataclassesrN   r   r>   rE   rJ   r    rP   r!   set_dataclass_mocksc   s&   
rR   N)r0   )r1   r2   r3   r   r4   r   r   r   )r1   rM   r3   r   r4   r   r   r   )
__future__r   typingr   r   r   r   pydantic_corer   r   typing_extensionsr	   errorsr   r   rQ   r   mainr   r   r   rL   rR   r    r    r    r!   <module>   s    ))