o
    h                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ e	 dkZ
ejdd dkZejdd dkZejdd dkZejdd d	kZejdd d
kZer\d dlZdd Zndd ZG dd dZe Zdd ZdS )    N)MappingSequence)_GenericAliasPyPy   )   
   )r      )r      )r      )r      c                 C   s   t j| t jjdS )N)format)annotationlibget_annotationsFormat
FORWARDREFcls r   M/var/www/html/openai_agents/venv/lib/python3.10/site-packages/attr/_compat.py_get_annotations   s   r   c                 C   s   | j di S )z,
        Get annotations for *cls*.
        __annotations__)__dict__getr   r   r   r   r   !   s   c                   @   s.   e Zd ZdZdgZdd Zdd Zdd Zd	S )
_AnnotationExtractorz^
    Extract type annotations from a callable, returning None whenever there
    is none.
    sigc              	   C   s2   z	t || _W d S  ttfy   d | _Y d S w )N)inspect	signaturer   
ValueError	TypeError)selfcallabler   r   r   __init__0   s
   z_AnnotationExtractor.__init__c                 C   s>   | j sdS t| j j }|r|d jtjjur|d jS dS )zU
        Return the type annotation of the first argument if it's not empty.
        Nr   )r   list
parametersvalues
annotationr   	Parameterempty)r    paramsr   r   r   get_first_param_type6   s   
z)_AnnotationExtractor.get_first_param_typec                 C   s"   | j r| j jtjjur| j jS dS )z;
        Return the return type if it's not empty.
        N)r   return_annotationr   	Signaturer(   )r    r   r   r   get_return_typeC   s
   z$_AnnotationExtractor.get_return_typeN)__name__
__module____qualname____doc__	__slots__r"   r*   r-   r   r   r   r   r   (   s    r   c                 C   s   | j tu r| jS dS )zDIf this is a generic class (A[str]), return the generic base for it.N)	__class__r   
__origin__)clr   r   r   get_generic_base_   s   
r6   )r   platformsys	threadingcollections.abcr   r   typingr   python_implementationPYPYversion_infoPY_3_10_PLUSPY_3_11_PLUSPY_3_12_PLUSPY_3_13_PLUSPY_3_14_PLUSr   r   r   localrepr_contextr6   r   r   r   r   <module>   s&   
4