
    g                    "   U d dl mZ d dlZd dlZd dlZd dlmZmZmZmZ d dl	m
Z d dlmZmZmZmZmZ ddlmZ ddlmZ d$dZd$dZd$dZd$dZd$dZd$dZej        fZded<   ej        dk    rg eej        R Zd%dZ d&dZ!d'dZ"ddd(d#Z#dS ))    )annotationsN)AnyTypeVarIterablecast)abc)TypeIsRequired	Annotatedget_args
get_origin   )InheritsGeneric)is_uniontyptypereturnboolc                2    t          |           t          k    S N)r   r   r   s    S/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/openai/_utils/_typing.pyis_annotated_typer      s    c??i''    c                6    t          |           p| t          k    S r   )r   listr   s    r   is_list_typer      s    sOO"st++r   c                Z    t          |           p| }|t          k    p|t          j        k    S )z)If the given type is `typing.Iterable[T]`)r   r   _c_abc)r   origins     r   is_iterable_typer!      s)    __#FX:6?!::r   c                :    t          t          |                     S r   )	_is_unionr   r   s    r   is_union_typer$   "   s    Z__%%%r   c                2    t          |           t          k    S r   )r   r
   r   s    r   is_required_typer&   &   s    c??h&&r   c                2    t          |           t          k    S r   )r   r   r   s    r   
is_typevarr(   *   s     99r   z1tuple[type[typing_extensions.TypeAliasType], ...]_TYPE_ALIAS_TYPES)      tpr   'TypeIs[typing_extensions.TypeAliasType]c               ,    t          | t                    S )zReturn whether the provided argument is an instance of `TypeAliasType`.

    ```python
    type Int = int
    is_type_alias_type(Int)
    # > True
    Str = TypeAliasType("Str", str)
    is_type_alias_type(Str)
    # > True
    ```
    )
isinstancer)   )r,   s    r   is_type_alias_typer0   5   s     b+,,,r   c                    t          |           st          |           r5t          t          t          t          |           d                             S | S )Nr   )r&   r   strip_annotated_typer   r   r   r   s    r   r2   r2   E   sL     B 1# 6 6 B#Dx}}Q/?$@$@AAAJr   indexintc                    t          |           }	 t          t          ||                   S # t          $ r}t	          d|  d| d          |d }~ww xY w)NzExpected type z" to have a type argument at index z but it did not)r   r   r   
IndexErrorRuntimeError)r   r3   argserrs       r   extract_type_argr:   L   sp    C==DtD$u+&&& t t tiCiiSXiiijjpssts   , 
AAA)failure_messagegeneric_basestuple[type, ...]r;   
str | Nonec                  t          t          t          |           p|           }||v rt          | |          S t	          |t
                    rbd}|j        D ]}|j        |v r|} n|t          d| d| d          t          ||          }t          |          rt          | |          S |S t          |pd| d|            )a  Given a type like `Foo[T]`, returns the generic type variable `T`.

    This also handles the case where a concrete subclass is given, e.g.
    ```py
    class MyResponse(Foo[bytes]):
        ...

    extract_type_var(MyResponse, bases=(Foo,), index=0) -> bytes
    ```

    And where a generic subclass is given:
    ```py
    _T = TypeVar('_T')
    class MyResponse(Foo[_T]):
        ...

    extract_type_var(MyResponse[bytes], bases=(Foo,), index=0) -> bytes
    ```
    NzFCould not find the generic base class;
This should never happen;
Does z inherit from one of z ?z/Could not resolve inner type variable at index z for )
r   objectr   r:   r/   r   __orig_bases__
__origin__r7   r(   )r   r<   r3   r;   clstarget_base_classbase	extracteds           r   extract_type_var_from_baserG   T   s&   4 vz#-#
.
.C
mU+++ #'' (,& 	 	D-//$(! 0 $DD D2?D D D   %%6>>	i   		0 $C///
m*m\a*m*mhk*m*m
n
nnr   )r   r   r   r   )r,   r   r   r-   )r   r   r   r   )r   r   r3   r4   r   r   )
r   r   r<   r=   r3   r4   r;   r>   r   r   )$
__future__r   systypingtyping_extensionsr   r   r   r   collectionsr   r   r	   r
   r   r   r   _typesr   _compatr   r#   r   r   r!   r$   r&   r(   TypeAliasTyper)   __annotations__version_infor0   r2   r:   rG    r   r   <module>rS      s   " " " " " " " 



      / / / / / / / / / / / / % % % % % %              % $ $ $ $ $ + + + + + +( ( ( (, , , ,; ; ; ;& & & &' ' ' '        IZHgGi  i i i iwB+BV-ABB- - - -    t t t t #'Ao Ao Ao Ao Ao Ao Ao Aor   