�
M�g . � � � d dl Z d dl mZ d dlmZ d dlmZmZmZmZm Z m
Z
mZmZ ddl
mZmZ e
deeef �� � Z e
d eeef �� � Zd
e defd�Zd
� Zdee fd�Zdededefd�Z d)dedededdfd�Zdedefd�Zde j de j dedededefd�Zde j de j dededed edefd!�Zd"ed#ed$ede j d%e j defd&�Zde j de j dededdf
d'�Zdededefd(�ZdS )*� N)� Parameter)�FunctionType)�Callable�Dict�Optional�Tuple�Type�TypeVar�Union�get_type_hints� )�get_args� issubtype�_WrappedMethod)�bound�_WrappedMethod2�t�returnc �| � t | t � � rdS t | � � D ]}t |� � r dS �dS )a_ Recursively check if `t` or any types contained by `t` is a `TypeVar`.
Examples where we return `True`: `T`, `Optional[T]`, `Tuple[Optional[T], ...]`, ...
Examples where we return `False`: `int`, `Optional[str]`, ...
:param t: Type to evaluate.
:return: `True` if the input type contains an unbound `TypeVar`, `False` otherwise.
TF)�
isinstancer
r �_contains_unbound_typevar)r �args �c/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/overrides/signature.pyr r sU � � �!�W��� ��t� ��{�{� � ��$�S�)�)� ��4�4� � �5� c � � t | � � rdS |�dS t |� � rdS t | |� � S # t $ r Y dS w xY w)NT)r r � TypeError)�left�rights r �
_issubtyper "