o
    !̏jE                     @   sF  U d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZmZ ddlZddlmZmZmZmZ dZejdd d	kZd
ededefddZd
ededefddZeddZde_ eddZde_ eddZde_ eddZde_ eddZde_ ed d!Zd"e_ ed#d$Z d%e _ ed&d'Z!d(e!_ ed)d*Z"d+e"_ ed,d-Z#d.e#_ ed/d0Z$d1e$_ ed2d3Z%d4e%_ d5ede&fd6d7Z'ed8d9Z(d:e(_ ed;d<Z)d=e)_ ed>d?Z*d@e*_ edAdBZ+dCe+_ edDdEZ,dFe,_ edGdHZ-dIe-_ edJdKZ.dLe._ edMdNZ/dOe/_ edPdQZ0dRe0_ edSdTZ1dUe1_ edVdWZ2dXe2_ edYdZZ3d[e3_ ed\d]Z4d^e4_ ed_d`Z5dae5_ edbdcZ6dde6_ ededfZ7erWd5eddgfdhdiZ8nedediZ8dje8_ edkdlZ9dme9_ ejdnkr}ejejfZ:d5eddofdpdqZ;nejZ<d5eddofdrdqZ;dse;_ i ej=ej>j=ej?ej>j?ej@ej>j@ejAej>jAejBej>jBejCej>jCejDej>jDejEej>jEejFej>jFejGej>jGejHej>jHejIej>jIejJej>jKejLej>jLejMej>jMejNej>jNejOej>jOi ejPej>jPejQeRejSeTejUejVejKeWejXeYejZej>jZej[ej>j[ej\ej>j\ej]ej>j]ej^e_ej`ejaejbejbejcejcejdejdejeej>jeejfej>jfejgehejiejiejjejjejkejlejmejniZoee_eehe f  epdt< 	 dudv eoq D Zree_esehe f  epdw< 	 eTeoq D ]\ZtZueveetjwd Zxdureueoex< qdS )xzLow-level introspection utilities for [`typing`][] members.

The provided functions in this module check against both the [`typing`][] and [`typing_extensions`][]
variants, if they exists and are different.
    N)dedent)FunctionTypeGenericAliasNoneType)AnyFinal)LiteralStringTypeAliasTypeTypeIs
deprecated)"DEPRECATED_ALIASESDEPRECATED_ALIASES_IDSr   is_annotatedis_anyis_classvaris_concatenateis_deprecatedis_finalis_forwardref
is_generic
is_literalis_literalstringis_namedtupleis_never
is_newtypeis_nodefaultis_noextraitemsis_noreturnis_notrequiredis_paramspecis_paramspecargsis_paramspeckwargsis_readonlyis_requiredis_selfis_typealiasis_typealiastypeis_typeguard	is_typeis
is_typevaris_typevartupleis_union	is_unpack   )   
   memberfunction_namereturnc           
      C   s   t t| }t t| }dti}|r2|r2tt| }tt| }||u r'||d< d}n)||d< ||d< d}n|r@|s@tt| |d< d}n|sN|rNtt| |d< d}nd}td| d	| d
}i }	t|||	 |	| S )as  Create a function checking that the function argument is the (unparameterized) typing `member`.

    The function will make sure to check against both the `typing` and `typing_extensions`
    variants as depending on the Python version, the `typing_extensions` variant might be different.
    For instance, on Python 3.9:

    ```pycon
    >>> from typing import Literal as t_Literal
    >>> from typing_extensions import Literal as te_Literal, get_origin

    >>> t_Literal is te_Literal
    False
    >>> get_origin(t_Literal[1])
    typing.Literal
    >>> get_origin(te_Literal[1])
    typing_extensions.Literal
    ```
    r   _objzobj is _obj_t_obj_te_objzobj is _t_obj or obj is _te_objFalse	
    def z&(obj: Any, /) -> bool:
        return 
    hasattrtypingtyping_extensionsr   getattrr   exec
r0   r1   	in_typingin_typing_extensionsglobals_t_objte_obj
check_code	func_codelocals_ rH   ^/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/typing_inspection/typing_objects.py _compile_identity_check_function=   s6   




rJ   c           
      C   s   t t| }t t| }dti}|r0|r0tt| }tt| }||u r'||d< d}n'||f|d< d}n|r>|s>tt| |d< d}n|sL|rLtt| |d< d}nd}td| d|  d	| d
}i }	t|||	 |	| S )a  Create a function checking that the function is an instance of the typing `member`.

    The function will make sure to check against both the `typing` and `typing_extensions`
    variants as depending on the Python version, the `typing_extensions` variant might be different.
    r   r3   zisinstance(obj, _obj)_objszisinstance(obj, _objs)r6   r7   z(obj: Any, /) -> 'TypeIs[z]':
        return r8   r9   r?   rH   rH   rI   "_compile_isinstance_check_functiont   s8   




rL   	Annotatedr   z
Return whether the argument is the [`Annotated`][typing.Annotated] [special form][].

```pycon
>>> is_annotated(Annotated)
True
>>> is_annotated(Annotated[int, ...])
False
```
r   r   zm
Return whether the argument is the [`Any`][typing.Any] [special form][].

```pycon
>>> is_any(Any)
True
```
ClassVarr   z
Return whether the argument is the [`ClassVar`][typing.ClassVar] [type qualifier][].

```pycon
>>> is_classvar(ClassVar)
True
>>> is_classvar(ClassVar[int])
>>> False
```
Concatenater   z
Return whether the argument is the [`Concatenate`][typing.Concatenate] [special form][].

```pycon
>>> is_concatenate(Concatenate)
True
>>> is_concatenate(Concatenate[int, P])
False
```
r   r   z
Return whether the argument is the [`Final`][typing.Final] [type qualifier][].

```pycon
>>> is_final(Final)
True
>>> is_final(Final[int])
False
```

ForwardRefr   z
Return whether the argument is an instance of [`ForwardRef`][typing.ForwardRef].

```pycon
>>> is_forwardref(ForwardRef('T'))
True
```
Genericr   z
Return whether the argument is the [`Generic`][typing.Generic] [special form][].

```pycon
>>> is_generic(Generic)
True
>>> is_generic(Generic[T])
False
```
Literalr   z
Return whether the argument is the [`Literal`][typing.Literal] [special form][].

```pycon
>>> is_literal(Literal)
True
>>> is_literal(Literal["a"])
False
```
	ParamSpecr   z
Return whether the argument is an instance of [`ParamSpec`][typing.ParamSpec].

```pycon
>>> P = ParamSpec('P')
>>> is_paramspec(P)
True
```
TypeVarr)   z
Return whether the argument is an instance of [`TypeVar`][typing.TypeVar].

```pycon
>>> T = TypeVar('T')
>>> is_typevar(T)
True
```
TypeVarTupler*   z
Return whether the argument is an instance of [`TypeVarTuple`][typing.TypeVarTuple].

```pycon
>>> Ts = TypeVarTuple('Ts')
>>> is_typevartuple(Ts)
True
```
Unionr+   a  
Return whether the argument is the [`Union`][typing.Union] [special form][].

This function can also be used to check for the [`Optional`][typing.Optional] [special form][],
as at runtime, `Optional[int]` is equivalent to `Union[int, None]`.

```pycon
>>> is_union(Union)
True
>>> is_union(Union[int, str])
False
```

!!! warning
    This does not check for unions using the [new syntax][types-union] (e.g. `int | str`).
objc                C   s   t | tot| tot| dS )a  Return whether the argument is a named tuple type.

    This includes [`NamedTuple`][typing.NamedTuple] subclasses and classes created from the
    [`collections.namedtuple`][] factory function.

    ```pycon
    >>> class User(NamedTuple):
    ...     name: str
    ...
    >>> is_namedtuple(User)
    True
    >>> City = collections.namedtuple('City', [])
    >>> is_namedtuple(City)
    True
    >>> is_namedtuple(NamedTuple)
    False
    ```
    _fields)
isinstancetype
issubclasstupler:   rW   rH   rH   rI   r   9  s   r   r   r   z
Return whether the argument is the [`LiteralString`][typing.LiteralString] [special form][].

```pycon
>>> is_literalstring(LiteralString)
True
```
Neverr   zu
Return whether the argument is the [`Never`][typing.Never] [special form][].

```pycon
>>> is_never(Never)
True
```
NewTyper   z
Return whether the argument is a [`NewType`][typing.NewType].

```pycon
>>> UserId = NewType("UserId", int)
>>> is_newtype(UserId)
True
```
	NoDefaultr   z
Return whether the argument is the [`NoDefault`][typing.NoDefault] sentinel object.

```pycon
>>> is_nodefault(NoDefault)
True
```
NoExtraItemsr   zy
Return whether the argument is the `NoExtraItems` sentinel object.

```pycon
>>> is_noextraitems(NoExtraItems)
True
```
NoReturnr   z
Return whether the argument is the [`NoReturn`][typing.NoReturn] [special form][].

```pycon
>>> is_noreturn(NoReturn)
True
>>> is_noreturn(Never)
False
```
NotRequiredr   z
Return whether the argument is the [`NotRequired`][typing.NotRequired] [special form][].

```pycon
>>> is_notrequired(NotRequired)
True
```
ParamSpecArgsr    z
Return whether the argument is an instance of [`ParamSpecArgs`][typing.ParamSpecArgs].

```pycon
>>> P = ParamSpec('P')
>>> is_paramspecargs(P.args)
True
```
ParamSpecKwargsr!   z
Return whether the argument is an instance of [`ParamSpecKwargs`][typing.ParamSpecKwargs].

```pycon
>>> P = ParamSpec('P')
>>> is_paramspeckwargs(P.kwargs)
True
```
ReadOnlyr"   z
Return whether the argument is the [`ReadOnly`][typing.ReadOnly] [special form][].

```pycon
>>> is_readonly(ReadOnly)
True
```
Requiredr#   z
Return whether the argument is the [`Required`][typing.Required] [special form][].

```pycon
>>> is_required(Required)
True
```
Selfr$   zq
Return whether the argument is the [`Self`][typing.Self] [special form][].

```pycon
>>> is_self(Self)
True
```
	TypeAliasr%   z
Return whether the argument is the [`TypeAlias`][typing.TypeAlias] [special form][].

```pycon
>>> is_typealias(TypeAlias)
True
```
	TypeGuardr'   z
Return whether the argument is the [`TypeGuard`][typing.TypeGuard] [special form][].

```pycon
>>> is_typeguard(TypeGuard)
True
```
r
   r(   zy
Return whether the argument is the [`TypeIs`][typing.TypeIs] [special form][].

```pycon
>>> is_typeis(TypeIs)
True
```
r	   _is_typealiastype_innerzTypeIs[TypeAliasType]c                C   s   t | tuo	t| S N)rZ   r   rk   r]   rH   rH   rI   r&     s   r&   a'  
Return whether the argument is a [`TypeAliasType`][typing.TypeAliasType] instance.

```pycon
>>> type MyInt = int
>>> is_typealiastype(MyInt)
True
>>> MyStr = TypeAliasType("MyStr", str)
>>> is_typealiastype(MyStr):
True
>>> type MyList[T] = list[T]
>>> is_typealiastype(MyList[int])
False
```
Unpackr,   z
Return whether the argument is the [`Unpack`][typing.Unpack] [special form][].

```pycon
>>> is_unpack(Unpack)
True
>>> is_unpack(Unpack[Ts])
False
```
)r.      zTypeIs[deprecated]c                C   
   t | tS rl   )rY   _deprecated_typesr]   rH   rH   rI   r        
r   c                C   ro   rl   )rY   _deprecated_typer]   rH   rH   rI   r   #  rq   a+  
Return whether the argument is a [`deprecated`][warnings.deprecated] instance.

This also includes the [`typing_extensions` backport][typing_extensions.deprecated].

```pycon
>>> is_deprecated(warnings.deprecated('message'))
True
>>> is_deprecated(typing_extensions.deprecated('message'))
True
```
r   c                 C   s   i | ]	\}}t ||qS rH   )id).0kvrH   rH   rI   
<dictcomp>e  s    rw   r   )y__doc__collections.abccollections
contextlibresysr;   warningstextwrapr   typesr   r   r   r   r   r<   r   r	   r
   r   __all__version_info	_IS_PY310rJ   rL   r   r   r   r   r   r   r   r   r   r)   r*   r+   boolr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r'   r(   rk   r&   r,   rp   r   rr   Hashableabc	Awaitable	CoroutineAsyncIterableAsyncIteratorIterableIterator
ReversibleSized	Container
CollectionCallableAbstractSetSet
MutableSetMappingMutableMappingSequenceMutableSequenceTupler\   ListlistDequedequeset	FrozenSet	frozensetMappingViewKeysView	ItemsView
ValuesViewDictdictDefaultDictdefaultdictOrderedDictCounterChainMap	GeneratorAsyncGeneratorTyperZ   PatternMatchContextManagerAbstractContextManagerAsyncContextManagerAbstractAsyncContextManagerr   __annotations__itemsr   intaliastargetr=   __name__te_aliasrH   rH   rH   rI   <module>   sN   %7
+

	













	
	


	
	

	




	
	

	
	
	










	













 !
"
#$,*