
    Tg#                    R   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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#d!S )&    )annotations)TYPE_CHECKINGAnyCallableGenericIteratorMappingTypeVarUnion)
CoreSchemaSchemaSerializerSchemaValidator)Literal   )PydanticErrorCodesPydanticUserError)PluggableSchemaValidator)PydanticDataclass)	BaseModel)TypeAdapterValSer)boundTc                  L    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
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               >    || _         || _        || _        d | _        d S Nr   )selfr#   r%   r"   s       U/var/www/sysmax/venv/lib/python3.11/site-packages/pydantic/_internal/_mock_val_ser.py__init__zMockCoreSchema.__init__   s)     ,)-
 /.2    keyr   c                P    |                                                      |          S r*   )
_get_built__getitem__)r+   r/   s     r,   r2   zMockCoreSchema.__getitem__(   s       ,,S111r.   intc                N    |                                                                  S r*   )r1   __len__r+   s    r,   r5   zMockCoreSchema.__len__+   s      ((***r.   Iterator[str]c                N    |                                                                  S r*   )r1   __iter__r6   s    r,   r9   zMockCoreSchema.__iter__.   s      ))+++r.   r   c                    | j         | j         S | j        r|                                 }|	|| _         |S t          | j        | j                  Nr%   r    r   r   r   r   r+   schemas     r,   r1   zMockCoreSchema._get_built1   s[    '##  	**,,F!#)  3$*EEEEr.   CoreSchema | Nonec                    d | _         | j        r3|                                 }||S t          | j        | j                  d S r;   r=   r>   s     r,   rebuildzMockCoreSchema.rebuild<   sO      	N**,,F!'(;$*MMMMtr.   )r#   r$   r%   r   r"   r&   r'   r(   )r/   r$   r'   r   )r'   r3   )r'   r7   )r'   r   )r'   r@   )__name__
__module____qualname____doc__	__slots__r-   r2   r5   r9   r1   rB    r.   r,   r   r      s          MI CG
3 
3 
3 
3 
3 
32 2 2 2+ + + +, , , ,	F 	F 	F 	F     r.   r   c                  4    e Zd ZdZdZddddZddZ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               b    || _         |dk    rt          nt          | _        || _        || _        d S )N	validator)r   r   r   rK   r   r   )r+   r#   r%   rL   r"   s        r,   r-   zMockValSer.__init__N   s8     ,.8K.G.G??M])-
 /r.   itemc                    d}| j         r&|                                  }|t          ||          S t          | j        |           t          | j        | j                  )NTr<   )r   getattrrK   r   r   r   )r+   rQ   __tracebackhide__val_sers       r,   __getattr__zMockValSer.__getattr__[   sg       	.++--G"w--- 	 $''' 3$*EEEEr.   ValSer | Nonec                z    | j         r3|                                  }||S t          | j        | j                  d S r;   )r   r   r   r   )r+   rU   s     r,   rB   zMockValSer.rebuildf   sG      	N++--G"'(;$*MMMMtr.   )
r#   r$   r%   r   rL   rM   r"   rN   r'   r(   )rQ   r$   r'   r(   )r'   rW   )rC   rD   rE   rF   rG   r-   rV   rB   rH   r.   r,   rJ   rJ   G   sv          MI ?C0 0 0 0 0 0	F 	F 	F 	F     r.   rJ   adapterr   	type_reprr$   r'   r(   c                     d| d| d}d fd}t          |d	 |d
                      _        t          |d	d |d                      _        t          |d	d |d                      _        dS )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
        type_repr: Name of the type used in the adapter, used in error messages
    z`TypeAdapter[z,]` is not fully defined; you should define `zC` and all referenced types, then call `.rebuild()` on the instance.attr_fnCallable[[TypeAdapter], T]r'   Callable[[], T | None]c                     d fd}|S )Nr'   T | Nonec                 P                          dd          dur            S d S NF   )raise_errors_parent_namespace_depth)rB   )rY   r\   s   r,   handlerzCset_type_adapter_mocks.<locals>.attempt_rebuild_fn.<locals>.handler}   s4    E1MMUZZZww'''tr.   r'   r`   rH   )r\   rf   rY   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    bn r.   r%   r"   rP   c                    | j         S r*   )rP   rm   s    r,   ro   z(set_type_adapter_mocks.<locals>.<lambda>   s    bl r.   r%   rL   r"   
serializerc                    | j         S r*   )rs   rm   s    r,   ro   z(set_type_adapter_mocks.<locals>.<lambda>   s    bm r.   N)r\   r]   r'   r^   )r   rl   rJ   rP   rs   )rY   rZ   undefined_type_error_messagerh   s   `   r,   set_type_adapter_mocksrv   p   s    	4	 	4 	4y 	4 	4 	4 !
      )$&**+D+DEE  G
 #$&**+B+BCC	  G $$&**+C+CDD	  Gr.   all referenced typesclstype[BaseModel]cls_nameundefined_namec                     d| d| d| d}d fd	}t          |d
 |d                      _        t          |d
d |d                      _        t          |d
d |d                      _        dS )aD  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
        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\   Callable[[type[BaseModel]], T]r'   r^   c                     d fd}|S )Nr'   r`   c                 P                         dd          dur            S d S rb   )model_rebuild)r\   rx   s   r,   rf   z<set_model_mocks.<locals>.attempt_rebuild_fn.<locals>.handler   s5      eQ OOW\\\ws||#tr.   rg   rH   )r\   rf   rx   s   ` r,   rh   z+set_model_mocks.<locals>.attempt_rebuild_fn   ri   r.   rj   c                    | j         S r*   __pydantic_core_schema__cs    r,   ro   z!set_model_mocks.<locals>.<lambda>   	    Q5O r.   rp   rP   c                    | j         S r*   __pydantic_validator__r   s    r,   ro   z!set_model_mocks.<locals>.<lambda>   	    Q5M r.   rr   rs   c                    | j         S r*   __pydantic_serializer__r   s    r,   ro   z!set_model_mocks.<locals>.<lambda>   	    Q5N r.   N)r\   r   r'   r^   )r   r   rJ   r   r   )rx   rz   r{   ru   rh   s   `    r,   set_model_mocksr      s    	4H 	4 	4 	4 	4	4 	4 	4 !
      $2$&**+O+OPP$ $ $C 
 ",$&**+M+MNN	" " "C #-$&**+N+NOO	# # #Cr.   type[PydanticDataclass]c                    ddl m d| d| d| d}d fd}t          |d |d                      _        t	          |d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_dataclassr}   r~   z4, then call `pydantic.dataclasses.rebuild_dataclass(z)`.r\   &Callable[[type[PydanticDataclass]], T]r'   r^   c                     d fd}|S )Nr'   r`   c                 >     dd          dur            S d S rb   rH   )r\   rx   r   s   r,   rf   z@set_dataclass_mocks.<locals>.attempt_rebuild_fn.<locals>.handler   s5      5RSTTT\aaaws||#tr.   rg   rH   )r\   rf   rx   r   s   ` r,   rh   z/set_dataclass_mocks.<locals>.attempt_rebuild_fn   s3    	 	 	 	 	 	 	 	 r.   rj   c                    | j         S r*   r   r   s    r,   ro   z%set_dataclass_mocks.<locals>.<lambda>   r   r.   rp   rP   c                    | j         S r*   r   r   s    r,   ro   z%set_dataclass_mocks.<locals>.<lambda>   r   r.   rr   rs   c                    | j         S r*   r   r   s    r,   ro   z%set_dataclass_mocks.<locals>.<lambda>   r   r.   N)r\   r   r'   r^   )dataclassesr   r   r   rJ   r   r   )rx   rz   r{   ru   rh   r   s   `    @r,   set_dataclass_mocksr      s    0/////	LH 	L 	L 	L 	L>F	L 	L 	L !
       $2$&**+O+OPP$ $ $C 
 ",$&**+M+MNN	" " "C #-$&**+N+NOO	# # #Cr.   N)rY   r   rZ   r$   r'   r(   )rw   )rx   ry   rz   r$   r{   r$   r'   r(   )rx   r   rz   r$   r{   r$   r'   r(   )$
__future__r   typingr   r   r   r   r   r	   r
   r   pydantic_corer   r   r   typing_extensionsr   errorsr   r   plugin._schema_validatorr   r   r   mainr   type_adapterr   r   r   r$   r   rJ   rv   r   r   rH   r.   r,   <module>r      s   " " " " " " [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ G G G G G G G G G G % % % % % % : : : : : : : : ? ? ? ? ? ? +//////      ****** 
8PRb'b!c	d	d	dGCLL/ / / / /WS#X& / / /d& & & & & & & &R% % % %P& & & & &T H^* * * * * * *r.   