HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/pydantic/v1/__pycache__/typing.cpython-310.pyc
o

�hM�
@s@UddlZddlZddlmZddlmZddlmZmZmZmZ	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZmZmZm Z!m"Z#zddlm$Z%Wne&yjddlm'Z%Ynwzddlm(Z)Wne&y~d	Z)Ynwzdd
l*m+Z,Wne&y�d	Z,Ynwej-dkr�ded
ededefdd�Z.n ej-dkr�ded
ededefdd�Z.n
ded
ededefdd�Z.ej-dkr�eZ/ndrded
ededefdd�Z/ed�Z0e	defZ1e	gefZ2e	de0fZ3ddhZ4ehZ5eee6d<e7ed��re5�8ej�ej-dk�r!deedeeefd d!�Z9ndd"lm9Z:d#eedeeefd$d!�Z9ej-dk�rRdd%lm;Z;deedeedffd&d'�Z<n$dd(lm<Z=d#eedeedffd)d*�Z>d#eedeedffd+d'�Z<ej-dk�r�d#eedeefd,d-�Z?ndd.lm@Z@dd/lmAZAd#eedeefd0d-�Z?ej-d1k�r�d#eeedeBfd2d3�ZCe)fZDnddl*Z*ddlZd#eeedeBfd4d3�ZCej;e*j(e*j+fZDeeEefZFe�r=dd5lGmHZHe
eeEefddfZIeeEefZJeeefZKeeEZLeeEZMeeNeEfZOeeOZPeeOefZQeeOefZRe
e1ddfZSeeeeEefZTd6ZUeU�r6eVeZWneVeeefZWd7ZXdjYZZdeZedfZ[eeeefe6d8<ej-dk�rbdedeBfd9d:�Z\nej-dd;�dk�rvdedeBfd<d:�Z\n	dedeBfd=d:�Z\d>eedeEfd?d@�Z]dAeeEeefdBeeEdeeEeeffdCdD�Z^deedeBfdEdF�Z_deedeBfdGdH�Z`deedeedffdIdJ�ZadeedeedffdKdL�ZbdeedeBfdMdN�ZcdeedeBfdOdP�ZddedeBfdQdR�ZededeBfdSdT�ZfedUeE�ZgdeedeBfdVdW�ZhdeedeefdXdY�Zid>eeedeBfdZd[�Zjd>eeedeBfd\d]�Zkd^eedeBfd_d`�Zld^eedeBfdadb�Zmdcddd
ededdfdedf�Zn		dsdgeedhedddieeeeeEefe1fddjdkeeeodfddfdldm�ZpdeededeBeeffdndo�Zqd#edeefdpdq�ZrdS)t�N)�Callable)�PathLike)�
TYPE_CHECKING�AbstractSet�Anyr�ClassVar�Dict�
ForwardRef�	Generator�Iterable�List�Mapping�NewType�Optional�Sequence�Set�Tuple�Type�TypeVar�Union�
_eval_type�cast�get_type_hints)�	Annotated�Final�Literal�NotRequired�Required)�_TypingBase)�_Final)�GenericAlias�)�	UnionType���	�type_�globalns�localns�returncCs|�||�S�N)�	_evaluate�r&r'r(r!r!�E/usr/local/CyberCP/lib/python3.10/site-packages/pydantic/v1/typing.py�evaluate_forwardref:sr.)r$��cCstt|�j||t�d�S)N)�recursive_guard�rrr+�setr,r!r!r-r.?scCstt|�j||dt�d�S)Nr!)�type_paramsr1r2r,r!r!r-r.Hs�objcCst|||dd�S)NT)�include_extras)r)r5r'r(r!r!r-�get_all_type_hintsV�r7�_T.�
AnnotatedMeta�_AnnotatedAlias�
LITERAL_TYPESr�r$��tcCs(t|�jtvrtttt�St|dd�S)N�
__origin__)�type�__name__�AnnotatedTypeNamesrrrr�getattr)r?r!r!r-�
get_originosrE)rE�tpcCs0t|�jtvrtttt�St|�pt|dd�S)a4
        We can't directly use `typing.get_origin` since we need a fallback to support
        custom generic classes like `ConstrainedList`
        It should be useless once https://github.com/cython/cython/issues/3537 is
        solved and https://github.com/pydantic/pydantic/pull/1753 is merged.
        r@N)	rArBrCrrrr�_typing_get_originrD�rFr!r!r-rExs)�
_GenericAliascCslt|�jtvr
|j|jSt|t�r0|j}|jtur.|r.|dt	ur.t
|dd��|df}|St|dd�S)z�Compatibility version of get_args for python 3.7.

        Mostly compatible with the python 3.8 `typing` module version
        and able to handle almost all use cases.
        rN����__args__r!)rArBrCrK�__metadata__�
isinstancerIr@r�Ellipsis�listrD)r?�resr!r!r-�get_args�s
rQ�rQcCs`t|d�rtf|jSz|tdkstjdkr |tdkr#WdSWdSWdSty/YdSw)aI
        In python 3.9, `typing.Dict`, `typing.List`, ...
        do have an empty `__args__` by default (instead of the generic ~T for example).
        In order to still support `Dict` for example and consider it as `Dict[Any, Any]`,
        we retrieve the `_nparams` value that tells us how many parameters it needs.
        �_nparamsr!r#�r!)�hasattrrrSr�sys�version_info�tuple�	TypeErrorrHr!r!r-�_generic_get_args�s
"����rZcCs6t|�jtvr
|j|jSt|�pt|dd�pt|�S)a�Get type arguments with all substitutions performed.

        For unions, basic simplifications used by Union constructor are performed.
        Examples::
            get_args(Dict[str, int]) == (str, int)
            get_args(int) == ()
            get_args(Union[int, Union[T, int], str][int]) == (int, str)
            get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int])
            get_args(Callable[[], T][int]) == ([], int)
        rKr!)rArBrCrKrL�_typing_get_argsrDrZrHr!r!r-rQ�scCs|S)z�Python 3.9 and older only supports generics from `typing` module.
        They convert strings to ForwardRef automatically.

        Examples::
            typing.List['Hero'] == typing.List[ForwardRef('Hero')]
        r!rHr!r!r-�convert_generics�sr\)�_UnionGenericAlias)r;cs�t��}|rt�d�s
�St��}|tur"tt|d�|dd��St�fdd�|D��}||kr3�St�t�r=t||�St�t	�rGt
||�Sz	t�d|�W�StyZY�Sw)a�
        Recursively searches for `str` type hints and replaces them with ForwardRef.

        Examples::
            convert_generics(list['Hero']) == list[ForwardRef('Hero')]
            convert_generics(dict['Hero', 'Team']) == dict[ForwardRef('Hero'), ForwardRef('Team')]
            convert_generics(typing.Dict['Hero', 'Team']) == typing.Dict[ForwardRef('Hero'), ForwardRef('Team')]
            convert_generics(list[str | 'Hero'] | int) == list[str | ForwardRef('Hero')] | int
        rKr�Nc3s4�|]}t|t�rt�t�rt|�nt|�VqdSr*)rM�str�TypingGenericAliasr	r\)�.0�argrHr!r-�	<genexpr>�s
�"�
�z#convert_generics.<locals>.<genexpr>)
rErUrQrr;r\rXrMr`�TypesUnionTyper]�setattr�AttributeError)rF�origin�args�	convertedr!rHr-r\�s,
�



���r$�
cCs|tuSr*)rrHr!r!r-�is_union��rlcCs|tup|tjuSr*)r�typesr"rHr!r!r-rls)�
ModelFieldF)'�AnyCallable�NoArgAnyCallable�NoneType�is_none_type�display_as_type�resolve_annotations�is_callable_type�is_literal_type�all_literal_values�
is_namedtuple�is_typeddict�is_typeddict_special�is_new_type�new_type_supertype�is_classvar�is_finalvar�update_field_forward_refs�update_model_forward_refs�TupleGenerator�
DictStrAny�DictAny�SetStr�ListStr�IntStr�AbstractSetIntStr�
DictIntStrAny�CallableGenerator�ReprArgs�AnyClassMethodr��
WithArgsTypesrQrE�
get_sub_types�typing_baser7rl�StrPath�MappingIntStrAny�
NONE_TYPEScC�|tvSr*�r��r&r!r!r-rsYrmrs�cCs0tD]	}||urdSqt|�rt|�dkSdS)NTr*F)r�rwrx)r&�	none_typer!r!r-rs^s�cCr�r*r�r�r!r!r-rskrm�vcCs�t|t�st|t�st|t�s|j}tt|��r&dd�tt	t
|����d�St|t�r3t|��dd�Sz|j
WStyHt|��dd�YSw)NzUnion[z, �]ztyping.�)rMr�r�rA�	__class__rlrE�join�maprtrQr_�replacerBrf�r�r!r!r-rtos
�rt�raw_annotations�module_namec	Cs�d}|rztj|}Wn	tyYnw|j}i}|��D]L\}}t|t�rFdtjkr2dks8ntjdkr@t|ddd�}nt|dd�}ztjd	krUt	||dd
d�}nt	||d�}Wn	t
yeYnw|||<q|S)z�
    Partially taken from typing.get_type_hints.

    Resolve string or ForwardRef annotations into type objects if possible.
    Nrj)r$r%r>)r$rkr^FT)�is_argument�is_class)r�)r$�
r!)r4)rV�modules�KeyError�__dict__�itemsrMr_rWr	r�	NameError)r�r��base_globals�module�annotations�name�valuer!r!r-ru�s0�
"
��
rucCs|tup	t|�tuSr*)rrEr�r!r!r-rv��rvcCstduo	t|�tvSr*)rrEr<r�r!r!r-rw�r�rwcCst|�Sr*rRr�r!r!r-�literal_values�rmr�cCs(t|�s|fSt|�}tdd�|D��S)z�
    This method is used to retrieve all Literal values as
    Literal can be used recursively (see https://www.python.org/dev/peps/pep-0586)
    e.g. `Literal[Literal[Literal[1, 2, 3], "foo"], 5, None]`
    css"�|]}t|�D]}|VqqdSr*)rx)rar��xr!r!r-rc�s� z%all_literal_values.<locals>.<genexpr>)rwr�rX)r&�valuesr!r!r-rx�srxcC� ddlm}||t�ot|d�S)zy
    Check if a given class is a named tuple.
    It can be either a `typing.NamedTuple` or `collections.namedtuple`
    r��lenient_issubclass�_fields)�pydantic.v1.utilsr�rXrU�r&r�r!r!r-ry��rycCr�)z�
    Check if a given class is a typed dict (from `typing` or `typing_extensions`)
    In 3.10, there will be a public method (https://docs.python.org/3.10/library/typing.html#typing.is_typeddict)
    rr��	__total__)r�r��dictrUr�r!r!r-rz�r�rzcCs|tup|tuSr*)�TypedDictRequired�TypedDictNotRequiredr�r!r!r-�_check_typeddict_special�r8r�cC�t|�p	tt|��S)zN
    Check if type is a TypedDict special form (Required or NotRequired).
    )r�rEr�r!r!r-r{�sr{�	test_typecCst|tj�o
t|d�S)z>
    Check whether type_ was created using typing.NewType
    �
__supertype__)rMr�r�rUr�r!r!r-r|�sr|cCst|d�r
|j}t|d�s|S)Nr�)rUr�r�r!r!r-r}�s

�r}cCs(|durdS|jtjkot|dd�dkS)NF�_namer)r�rrDr�r!r!r-�_check_classvar�sr�cCs2|durdS|jtjkotjdkpt|dd�dkS)z9
    Check if a given type is a `typing.Final` type.
    NFr=r�r)r�rrVrWrDr�r!r!r-�_check_finalvar�s&r��ann_typecCs6t|�s
tt|��rdS|jtkr|j�d�rdSdS)NTz	ClassVar[F)r�rEr�r	�__forward_arg__�
startswith�r�r!r!r-r~�s
r~cCr�r*)r�rEr�r!r!r-r	r�r�fieldrocCs�d}|jjtkrd}t|j||pd�|_|jjtkr&d}t|j||p#d�|_|r,|��|jr<|jD]	}t|||d�q2|jdurG|�	�dSdS)z]
    Try to update ForwardRefs on fields based on this ModelField, globalns and localns.
    FTN�r'r()
r&r�r	r.�outer_type_�prepare�
sub_fieldsr��discriminator_key�&prepare_discriminated_union_sub_fields)r�r'r(r��sub_fr!r!r-r�
s

�r��model�fields�
json_encodersr��exc_to_suppressc
	Cs�|jtjvrtj|jj��}ni}|�|j|�|D]}z	t|||d�Wq|y/Yqwt|�	��D]0}t
|t�rBt|�}n	t
|t�rJ|}nq6z
t
|||pRd�}	Wn	|y^Yq6w|�|�||	<q6dS)zL
    Try to update model fields ForwardRefs based on model and localns.
    r�N)�
__module__rVr�r��copy�
setdefaultrBr�r3�keysrMr_r	r.�pop)
r�r�r�r(r�r'�f�key�fr�new_keyr!r!r-r�#s.
�


��r�cCsB|turdSt|�durdSt|�}|rt|dt�sdS|dS)z�
    Tries to get the class of a Type[T] annotation. Returns True if Type is used
    without brackets. Otherwise returns None.
    TNr)rArErQrM)r&rhr!r!r-�	get_classJsr�cCs@t|�}|turtt|�d�St|�rdd�t|�D�S|gS)z~
    Return all the types that are allowed by type `tp`
    `tp` can be a `Union` of allowed types or an `Annotated` type
    rcSsg|]}t|�D]}|�qqSr!)r�)rar?r�r!r!r-�
<listcomp>esz!get_sub_types.<locals>.<listcomp>)rErr�rQrl)rFrgr!r!r-r�\sr�)NNrT)srV�typing�collections.abcr�osrrrr�TypingCallablerrr	r
rrr
rrrrrrrrrrr�typing_extensionsrrrrr�rr�rr��ImportErrorrr r`rnr"rdrWr.r7r9rprq�AnyArgTCallablerCr<�__annotations__rU�addrErGrIrQr[rZr\r]r;�boolrlr�r_r��pydantic.v1.fieldsror�r�r�r�r��intr�r�r�r�r�r��MYPY�classmethodr��__all__r�rrr�rsrtrurvrwr�rxryrzr�r{r�r|r}r�r�r~rr��
BaseExceptionr�r�r�r!r!r!r-�<module>s�
`���

	
  
)
+ 
2#




������
�$'