
    
@g                        d dl m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 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ddZddZddd dZdS )!    )annotations)AnyTypeVarIterablecast)abc)Required	Annotatedget_args
get_origin   )InheritsGeneric)is_uniontyptypereturnboolc                2    t          |           t          k    S N)r   r
   r   s    I/var/www/piapp/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   c                    t          |           st          |           r5t          t          t          t          |           d                             S | S )Nr   )r%   r   strip_annotated_typer   r   r   r   s    r   r)   r)   (   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   r*   argserrs       r   extract_type_argr1   /   sp    C==DtD$u+&&& t t tiCiiSXiiijjpssts   , 
AAAN)failure_messagegeneric_basestuple[type, ...]r2   
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   r1   
isinstancer   __orig_bases__
__origin__r.   r'   )r   r3   r*   r2   clstarget_base_classbase	extracteds           r   extract_type_var_from_baser?   7   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   )
r   r   r3   r4   r*   r+   r2   r5   r   r   )
__future__r   typingr   r   r   r   collectionsr   r   typing_extensionsr	   r
   r   r   _typesr   _compatr   r"   r   r   r    r#   r%   r'   r)   r1   r?    r   r   <module>rG      sv   " " " " " " / / / / / / / / / / / / % % % % % % G G G G G G G G G G G G $ $ $ $ $ $ + + + + + +( ( ( (, , , ,; ; ; ;& & & &' ' ' '          t t t t #'Ao Ao Ao Ao Ao Ao Ao Aor   