a
    1$e                     @   s   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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d	d
 ZG dd dZdd Ze Ze Zdd ZdS )    N)MappingSequence)_GenericAliasPyPy   )   	   )r   
   )r      c                  O   s   t jdtdd d S )NzRunning interpreter doesn't sufficiently support code object introspection.  Some features like bare super() or accessing __class__ will not work with slotted classes.r   )
stacklevel)warningswarnRuntimeWarning)argskw r   H/var/www/html/django/DPS/env/lib/python3.9/site-packages/attr/_compat.py	just_warn   s
    r   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 n ttfy,   d | _Y n0 d S N)inspect	signaturer   
ValueError	TypeError)selfcallabler   r   r   __init__'   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_type-   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_type:   s    z$_AnnotationExtractor.get_return_typeN)__name__
__module____qualname____doc__	__slots__r   r%   r(   r   r   r   r   r      s
   r   c                     s  t rdd } | S ztjdkr&dd } ndd }|j}|jdksH|jdkrLt|jg}||j	 |
|j|j|j|j|j|j|j|j|j|j|j|j|jg tj|   fd	d} d
d }| jd }| |d |jdkrtW n ty   t Y S 0 | S dS )z|Return a function of two arguments (cell, value) which sets
    the value stored in the closure cell `cell` to `value`.
    c                 S   s   |  |f d S r   )__setstate__cellvaluer   r   r   set_closure_cellO   s    z/make_set_closure_cell.<locals>.set_closure_cell)r      c                 S   s
   || _ d S r   )cell_contentsr/   r   r   r   r2   Y   s    c                    s   |  d S )Nc                      s    S r   r   r   xr   r   force_x_to_be_a_celle   s    zQmake_set_closure_cell.<locals>.set_first_cellvar_to.<locals>.force_x_to_be_a_cellr   )r1   r7   r   r5   r   set_first_cellvar_to^   s    z3make_set_closure_cell.<locals>.set_first_cellvar_tor5   r   c                    s    t  i dd| f}|| d S )Nsetterr   )typesFunctionType)r0   r1   r9   set_first_freevar_coder   r   r2      s    c                     s   d   fdd} | S )Nc                      s    S r   r   r   r5   r   r   func   s    z@make_set_closure_cell.<locals>.make_func_with_cell.<locals>.funcr   )r>   r   r5   r   make_func_with_cell   s    z2make_set_closure_cell.<locals>.make_func_with_cellr   d   N)PYPYsysversion_info__code__co_cellvarsco_freevarsAssertionErrorco_argcountappendco_kwonlyargcountextend
co_nlocalsco_stacksizeco_flagsco_code	co_constsco_namesco_varnamesco_filenameco_nameco_firstlineno	co_lnotabr:   CodeType__closure__r4   	Exceptionr   )r2   r8   cor   r?   r0   r   r<   r   make_set_closure_cellG   sL    





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    
r_   )r   platformrB   	threadingr:   r   collections.abcr   r   typingr   python_implementationrA   rC   ZPY_3_9_PLUSPY310ZPY_3_12_PLUSr   r   r[   r2   localrepr_contextr_   r   r   r   r   <module>   s"   
(]