o
    @j                     @  s   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZ d dlmZ ddlmZmZ ddlmZ erFddlmZ dd	lmZ e	d
e
eeef dZe	dZG dd deeef ZG dd dee Zdd ddZ	dd!ddZ dS )"    )annotations)TYPE_CHECKINGAnyCallableGenericIteratorMappingTypeVarUnion)
CoreSchemaSchemaSerializerSchemaValidator)Literal   )PydanticErrorCodesPydanticUserError)PluggableSchemaValidator)PydanticDataclass)	BaseModelValSer)boundTc                   @  sV   e Zd ZdZdZdddddZd ddZd!ddZd"ddZd#ddZ	d$ddZ
dS )%MockCoreSchemazMocker for `pydantic_core.CoreSchema` 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_attempt_rebuild_built_memoNattempt_rebuilderror_messagestrcoder   r   &Callable[[], CoreSchema | None] | NonereturnNonec                C  s   || _ || _|| _d | _d S Nr   )selfr    r"   r    r(   o/var/www/www-root/data/www/ai-bot.pdev.uz/venv/lib/python3.10/site-packages/pydantic/_internal/_mock_val_ser.py__init__   s   
zMockCoreSchema.__init__keyr   c                 C  s   |   |S r&   )
_get_built__getitem__)r'   r+   r(   r(   r)   r-   '   s   zMockCoreSchema.__getitem__intc                 C     |    S r&   )r,   __len__r'   r(   r(   r)   r0   *      zMockCoreSchema.__len__Iterator[str]c                 C  r/   r&   )r,   __iter__r1   r(   r(   r)   r4   -   r2   zMockCoreSchema.__iter__r   c                 C  s@   | j d ur| j S | jr|  }|d ur|| _ |S t| j| jdNr"   r   r   r   r   r   )r'   schemar(   r(   r)   r,   0   s   
zMockCoreSchema._get_builtCoreSchema | Nonec                 C  s4   d | _ | jr|  }|d ur|S t| j| jdd S r5   r7   r'   val_serr(   r(   r)   rebuild;   s   zMockCoreSchema.rebuild)r    r!   r"   r   r   r#   r$   r%   )r+   r!   r$   r   )r$   r.   )r$   r3   )r$   r   )r$   r9   )__name__
__module____qualname____doc__	__slots__r*   r-   r0   r4   r,   r<   r(   r(   r(   r)   r      s    



r   c                   @  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.
    )r   r   _val_or_serr   Nr   r    r!   r"   r   
val_or_ser"Literal['validator', 'serializer']r   "Callable[[], ValSer | None] | Noner$   r%   c                C  s(   || _ |dkr	tnt| _|| _|| _d S )N	validator)r   r   r   rC   r   r   )r'   r    r"   rD   r   r(   r(   r)   r*   M   s   
zMockValSer.__init__itemc                 C  s@   d}| j r|   }|d urt||S t| j| t| j| jd)NTr6   )r   getattrrC   r   r   r   )r'   rH   __tracebackhide__r;   r(   r(   r)   __getattr__Z   s   
zMockValSer.__getattr__ValSer | Nonec                 C  s.   | j r|   }|d ur|S t| j| jdd S r5   )r   r   r   r   r:   r(   r(   r)   r<   e   s   zMockValSer.rebuild)
r    r!   r"   r   rD   rE   r   rF   r$   r%   )rH   r!   r$   r%   )r$   rL   )r=   r>   r?   r@   rA   r*   rK   r<   r(   r(   r(   r)   rB   F   s    
rB   all referenced typesclstype[BaseModel]cls_namer!   undefined_namer$   r%   c                   sv   d| d| d| d}d fd	d
}t |d|dd d _t|dd|dd d _t|dd|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()`.attr_fnCallable[[type[BaseModel]], T]r$   Callable[[], T | None]c                   s   d fdd}|S )Nr$   T | Nonec                     s   j ddddur S d S NF   )raise_errors_parent_namespace_depth)model_rebuildr(   )rT   rN   r(   r)   handler}      z<set_model_mocks.<locals>.attempt_rebuild_fn.<locals>.handlerr$   rW   r(   rT   r]   rN   rT   r)   attempt_rebuild_fn|   s   z+set_model_mocks.<locals>.attempt_rebuild_fnclass-not-fully-definedc                 S     | j S r&   __pydantic_core_schema__cr(   r(   r)   <lambda>       z!set_model_mocks.<locals>.<lambda>r"   r   rG   c                 S  re   r&   __pydantic_validator__rh   r(   r(   r)   rj      rk   r"   rD   r   
serializerc                 S  re   r&   __pydantic_serializer__rh   r(   r(   r)   rj      rk   N)rT   rU   r$   rV   )r   rg   rB   rn   rr   rN   rP   rQ   undefined_type_error_messagerc   r(   ra   r)   set_model_mockso   s,   		


ru   type[PydanticDataclass]c                   s   ddl m d| d| d| d}d fdd}t|d|dd d _t|dd|dd d _t|dd|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_dataclassrR   rS   z4, then call `pydantic.dataclasses.rebuild_dataclass(z)`.rT   &Callable[[type[PydanticDataclass]], T]r$   rV   c                   s   d fdd}|S )Nr$   rW   c                     s   ddddur S d S rX   r(   r(   )rT   rN   rw   r(   r)   r]      r^   z@set_dataclass_mocks.<locals>.attempt_rebuild_fn.<locals>.handlerr_   r(   r`   rN   rw   rb   r)   rc      s   z/set_dataclass_mocks.<locals>.attempt_rebuild_fnrd   c                 S  re   r&   rf   rh   r(   r(   r)   rj      rk   z%set_dataclass_mocks.<locals>.<lambda>rl   rG   c                 S  re   r&   rm   rh   r(   r(   r)   rj      rk   ro   c                 S  re   r&   rq   rh   r(   r(   r)   rj      rk   N)rT   rx   r$   rV   )dataclassesrw   r   rg   rB   rn   rr   rs   r(   ry   r)   set_dataclass_mocks   s.   
	


r{   N)rM   )rN   rO   rP   r!   rQ   r!   r$   r%   )rN   rv   rP   r!   rQ   r!   r$   r%   )!
__future__r   typingr   r   r   r   r   r   r	   r
   pydantic_corer   r   r   typing_extensionsr   errorsr   r   plugin._schema_validatorr   rz   r   mainr   r   r   r!   r   rB   ru   r{   r(   r(   r(   r)   <module>   s     (2)*