o
    Õ­jC  ã                   @   sB  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 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jd	krnddl
mZ ne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d0d1ƒZ%d2e%_ ed3d4ƒZ&d5e&_ d6ede'fd7d8„Z(ed9d:ƒZ)d;e)_ ed<d=ƒZ*d>e*_ ejd	kröed?d@ƒZ+n	d6ede'fdAd@„Z+dBe+_ edCdDƒZ,dEe,_ edFdGƒZ-dHe-_ edIdJƒZ.dKe._ edLdMƒZ/dNe/_ edOdPƒZ0dQe0_ edRdSƒZ1dTe1_ edUdVƒZ2dWe2_ edXdYƒZ3dZe3_ ed[d\ƒZ4d]e4_ ed^d_ƒZ5d`e5_ edadbƒZ6dce6_ edddeƒZ7dfe7_ edgdhƒZ8e�rtd6eddifdjdk„Z9nedgdkƒZ9dle9_ edmdnƒZ:doe:_ ejdpk�r”d6eddqfdrds„Z;n	d6eddqfdtds„Z;due;_ i ej<ej=j<“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=jJ“ejKej=jK“ejLej=jL“ejMej=jM“ejNej=jN“i ejOej=jO“ejPeQ“ejReS“ejTejU“ejJeV“ejWeX“ejYej=jY“ejZej=jZ“ej[ej=j[“ej\ej=j\“ej]e^“ej_ej`“ejaeja“ejbejb“ejcejc“ejdej=jd“ejeej=je“¥ejfeejgejgejhejhejiejjejkejli¥Zmee^eee f  endv< 	 eSem o¡ ƒD ]\ZpZqereepjsdƒ Ztdu�r�eqemet< �q‰dS )wzÏLow-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)ÚAnyÚFinal)ÚLiteralStringÚTypeAliasTypeÚTypeIsÚ
deprecated)!ÚDEPRECATED_ALIASESÚNoneTypeÚ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| ƒ}|r'|r'tt| ƒtt| ƒu rd| › �}nd| › d| › �}n|r1|s1d| › �}n|s;|r;d| › �}nd}td|› d|› d�ƒ}i }tttdœ}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
    ```
    zobj is typing.z or obj is typing_extensions.zobj is typing_extensions.ÚFalseú	
    def z&(obj: Any, /) -> bool:
        return ú
    ©r   ÚtypingÚtyping_extensions©Úhasattrr6   r7   Úgetattrr   r   Úexec©r/   r0   Ú	in_typingÚin_typing_extensionsÚ
check_codeÚ	func_codeÚlocals_Úglobals_© rC   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/typing_inspection/typing_objects.pyÚ _compile_identity_check_function<   s(   

ÿ
þrE   c                 C   sÂ   t t| ƒ}t t| ƒ}|r)|r)tt| ƒtt| ƒu rd| › d�}n"d| › d| › d�}n|r4|s4d| › d�}n|s?|r?d| › d�}nd}td|› d	| › d
|› d�ƒ}i }tttdœ}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.
    zisinstance(obj, typing.ú)zisinstance(obj, (typing.z, typing_extensions.z))z"isinstance(obj, typing_extensions.r2   r3   z(obj: Any, /) -> 'TypeIs[z]':
        return r4   r5   r8   r<   rC   rC   rD   Ú"_compile_isinstance_check_functioni   s,   

ÿÿ
þrG   )r   Ú	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Útupler9   ©rR   rC   rC   rD   r   *  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   c                C   s
   t | dƒS )NÚ__supertype__)r9   rX   rC   rC   rD   r   \  s   
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)rU   r   rg   rX   rC   rC   rD   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   s   t | tjtjfƒS rh   )rT   Úwarningsr
   r7   rX   rC   rC   rD   r     s   r   c                C   s   t | tjƒS rh   )rT   r7   r
   rX   rC   rC   rD   r     s   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   )uÚ__doc__Úcollections.abcÚcollectionsÚ
contextlibÚreÚsysr6   rk   Útextwrapr   Útypesr   r   r   r   r7   r   r   r	   r
   Ú__all__Úversion_infoÚ	_IS_PY310rE   rG   r   rU   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'   rg   r%   r+   r   ÚHashableÚabcÚ	AwaitableÚ	CoroutineÚAsyncIterableÚAsyncIteratorÚIterableÚIteratorÚ
ReversibleÚSizedÚ	ContainerÚ
CollectionÚCallableÚAbstractSetÚSetÚ
MutableSetÚMappingÚMutableMappingÚSequenceÚMutableSequenceÚTuplerW   ÚListÚlistÚDequeÚdequeÚsetÚ	FrozenSetÚ	frozensetÚMappingViewÚKeysViewÚ	ItemsViewÚ
ValuesViewÚDictÚdictÚDefaultDictÚdefaultdictÚOrderedDictÚCounterÚChainMapÚ	GeneratorÚAsyncGeneratorÚTypeÚPatternÚMatchÚContextManagerÚAbstractContextManagerÚAsyncContextManagerÚAbstractAsyncContextManagerr   Ú__annotations__ÚitemsÚaliasÚtargetr:   Ú_nameÚte_aliasrC   rC   rC   rD   Ú<module>   sP   $-
 


	













	
	


	
	

	




	
	

	
	
	


ÿ
þ
ý
ü
û
ú
ù
ø
	÷

ö
õ
ó
ò
ñ
ð
ï
î
íìëêéè
ç
æ
å
äãâá à!ß
"Þ
#Ý$×,€ý