
    +h"                    $   d dl mZ d dlmZmZ d dl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mZ ddlmZ erddlmZ dd	lmZ dd
lmZ  edeeeef         Z ed      Z G d deeef         Z G d de	e         Z ddZ!dddZ"dddZ#y)    )annotations)IteratorMapping)TYPE_CHECKINGAnyCallableGenericLiteralTypeVarUnion)
CoreSchemaSchemaSerializerSchemaValidator   )PydanticErrorCodesPydanticUserError)PluggableSchemaValidator)PydanticDataclass)	BaseModel)TypeAdapterValSer)boundTc                  X    e Zd ZdZdZdd	 	 	 	 	 	 	 ddZddZddZddZdd	Z	dd
Z
y)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_rebuildc               <    || _         || _        || _        d | _        y Nr   )selferror_messagecoder"   s       S/var/www/html/venv/lib/python3.12/site-packages/pydantic/_internal/_mock_val_ser.py__init__zMockCoreSchema.__init__   s#     ,)-
 /.2    c                @    | j                         j                  |      S r$   )
_get_built__getitem__)r%   keys     r(   r-   zMockCoreSchema.__getitem__(   s     ,,S11r*   c                >    | j                         j                         S r$   )r,   __len__r%   s    r(   r0   zMockCoreSchema.__len__+   s     ((**r*   c                >    | j                         j                         S r$   )r,   __iter__r1   s    r(   r3   zMockCoreSchema.__iter__.   s     ))++r*   c                    | j                   | j                   S | j                  r| j                         }|	|| _         |S t        | j                  | j                        Nr'   r    r   r   r   r   r%   schemas     r(   r,   zMockCoreSchema._get_built1   s[    '###  **,F!#)  3 3$**EEr*   c                    d | _         | j                  r5| j                         }||S t        | j                  | j                        y r5   r7   r8   s     r(   rebuildzMockCoreSchema.rebuild<   sF      **,F!'(;(;$**MMr*   )r&   strr'   r   r"   z&Callable[[], CoreSchema | None] | NonereturnNone)r.   r<   r=   r   )r=   int)r=   zIterator[str])r=   r   )r=   zCoreSchema | None)__name__
__module____qualname____doc__	__slots__r)   r-   r0   r3   r,   r;    r*   r(   r   r      s\     MI CG
3
3 !	
3
 @
3 

32+,	Fr*   r   c                  D    e Zd ZdZdZdd	 	 	 	 	 	 	 	 	 ddZd	dZd
dZy)
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!   c               Z    || _         |dk(  rt        nt        | _        || _        || _        y )N	validator)r   r   r   rH   r   r   )r%   r&   r'   
val_or_serr"   s        r(   r)   zMockValSer.__init__N   s-     ,.8K.G?M])-
 /r*   c                    d}| j                   r| j                         }|t        ||      S t        | j                  |       t        | j                  | j
                        )NTr6   )r   getattrrH   r   r   r   )r%   item__tracebackhide__val_sers       r(   __getattr__zMockValSer.__getattr__[   s[       ++-G"w-- 	  $' 3 3$**EEr*   c                    | j                   r5| j                         }||S t        | j                  | j                        y r5   )r   r   r   r   )r%   rP   s     r(   r;   zMockValSer.rebuildf   s>      ++-G"'(;(;$**MMr*   )
r&   r<   r'   r   rK   z"Literal['validator', 'serializer']r"   z"Callable[[], ValSer | None] | Noner=   r>   )rN   r<   r=   r>   )r=   zValSer | None)r@   rA   rB   rC   rD   r)   rQ   r;   rE   r*   r(   rG   rG   G   sU     MI ?C00 !	0
 70 <0 
0	Fr*   rG   c                     t         j                        }d| d| d}d fd}t        |d |d              _        t	        |dd |d	       
       _        t	        |dd |d       
       _        y)zSet `core_schema`, `validator` and `serializer` to mock core types on a type adapter instance.

    Args:
        adapter: The type adapter instance to set the mocks on
    z`TypeAdapter[z,]` is not fully defined; you should define `zC` and all referenced types, then call `.rebuild()` on the instance.c                     d fd}|S )Nc                 @     j                  dd      dur        S y NF   )raise_errors_parent_namespace_depth)r;   )adapterattr_fns   r(   handlerzCset_type_adapter_mocks.<locals>.attempt_rebuild_fn.<locals>.handler}   s'    E1MUZZw''r*   r=   zT | NonerE   )r[   r\   rZ   s   ` r(   attempt_rebuild_fnz2set_type_adapter_mocks.<locals>.attempt_rebuild_fn|       	
 r*   class-not-fully-definedc                    | j                   S r$   )core_schematas    r(   <lambda>z(set_type_adapter_mocks.<locals>.<lambda>   s
    bnn r*   r'   r"   rJ   c                    | j                   S r$   )rJ   rc   s    r(   re   z(set_type_adapter_mocks.<locals>.<lambda>   s
    bll r*   r'   rK   r"   
serializerc                    | j                   S r$   )ri   rc   s    r(   re   z(set_type_adapter_mocks.<locals>.<lambda>   s
    bmm r*   N)r[   zCallable[[TypeAdapter], T]r=   Callable[[], T | None])r<   _typer   rb   rG   rJ   ri   )rZ   	type_reprundefined_type_error_messager^   s   `   r(   set_type_adapter_mocksro   p   s     GMM"I
	{"Nyk Z3 	4 !
 )$&*+DEG
 #$&*+BC	G $$&*+CD	Gr*   c                     d j                    d| d j                    d}d fd}t        |d |d              _        t        |dd	 |d
              _        t        |dd |d              _        y)a  Set `__pydantic_core_schema__`, `__pydantic_validator__` and `__pydantic_serializer__` to mock core types on a model.

    Args:
        cls: The model class to set the mocks on
        undefined_name: Name of the undefined thing, used in error messages
    `*` is not fully defined; you should define z, then call `z.model_rebuild()`.c                     d fd}|S )Nc                 @    j                  dd      dur        S y rV   )model_rebuild)r[   clss   r(   r\   z<set_model_mocks.<locals>.attempt_rebuild_fn.<locals>.handler   s)      eQ OW\\s|#r*   r]   rE   )r[   r\   rv   s   ` r(   r^   z+set_model_mocks.<locals>.attempt_rebuild_fn   r_   r*   r`   c                    | j                   S r$   __pydantic_core_schema__cs    r(   re   z!set_model_mocks.<locals>.<lambda>       Q5O5O r*   rf   rJ   c                    | j                   S r$   __pydantic_validator__rz   s    r(   re   z!set_model_mocks.<locals>.<lambda>       Q5M5M r*   rh   ri   c                    | j                   S r$   __pydantic_serializer__rz   s    r(   re   z!set_model_mocks.<locals>.<lambda>       Q5N5N r*   N)r[   zCallable[[type[BaseModel]], T]r=   rk   )r@   r   ry   rG   r   r   )rv   undefined_namern   r^   s   `   r(   set_model_mocksr      s     CLL>CNCS T||n$6	8 !
 $2$&*+OP$C 
 ",$&*+MN	"C #-$&*+NO	#Cr*   c                    ddl m d j                   d| d j                   d}d fd}t        |d |d	       
       _        t        |dd |d              _        t        |dd |d              _        y)zSet `__pydantic_validator__` and `__pydantic_serializer__` to `MockValSer`s on a dataclass.

    Args:
        cls: The model class to set the mocks on
        undefined_name: Name of the undefined thing, used in error messages
    r   )rebuild_dataclassrq   rr   z4, then call `pydantic.dataclasses.rebuild_dataclass(z)`.c                     d fd}|S )Nc                 0     dd      dur        S y rV   rE   )r[   rv   r   s   r(   r\   z@set_dataclass_mocks.<locals>.attempt_rebuild_fn.<locals>.handler   s#     5RST\aas|#r*   r]   rE   )r[   r\   rv   r   s   ` r(   r^   z/set_dataclass_mocks.<locals>.attempt_rebuild_fn   s    	
 r*   r`   c                    | j                   S r$   rx   rz   s    r(   re   z%set_dataclass_mocks.<locals>.<lambda>   r|   r*   rf   rJ   c                    | j                   S r$   r~   rz   s    r(   re   z%set_dataclass_mocks.<locals>.<lambda>   r   r*   rh   ri   c                    | j                   S r$   r   rz   s    r(   re   z%set_dataclass_mocks.<locals>.<lambda>   r   r*   N)r[   z&Callable[[type[PydanticDataclass]], T]r=   rk   )dataclassesr   r@   r   ry   rG   r   r   )rv   r   rn   r^   r   s   `   @r(   set_dataclass_mocksr      s     0 CLL>CNCS T>>All^3	P !
 $2$&*+OP$C 
 ",$&*+MN	"C #-$&*+NO	#Cr*   N)rZ   r   r=   r>   )zall referenced types)rv   ztype[BaseModel]r   r<   r=   r>   )rv   ztype[PydanticDataclass]r   r<   r=   r>   )$
__future__r   collections.abcr   r   typingr   r   r   r	   r
   r   r   pydantic_corer   r   r   errorsr   r   plugin._schema_validatorr   r   r   mainr   type_adapterr   r   r   r<   r   rG   ro   r   r   rE   r*   r(   <module>r      s    " - Q Q Q G G : ?/ * 
8PRb'b!c	dCL/WS#X& /d& &R$N$N&r*   