
    >i                        d dl Z d dlZd dlZd dlmZ d dlmZ erGd dlZ ej                         Z	 e j                  ej                  ej                  j                        Z e j                  d      d        Zd Z eej&                  j(                  ej&                  j*                  ej&                  j,                  h      Zd	 Zd
 Zd Zd Zd Zd Zed        Zy)    N)contextmanager)PY314annotation_formati   )maxsizec                     t         r0t        j                  | t        j                  j
                        }nt        j                  |       }t        |j                  j                               }|r|dd  }|S )Nr      )	r   inspect	signatureannotationlibFormat
FORWARDREFtuple
parametersvalues)funcremove_firstr   r   s       e/home/cursorai/projects/django-wallet-utils/venv/lib/python3.12/site-packages/django/utils/inspect.py_get_func_parametersr      sg     %%M$8$8$C$C
	 %%d+	y++2245J^
    c                 f    t        j                  |       }|r| j                  n| }t        ||      S )N)r   )r
   ismethod__func__r   )meth_or_func	is_methodr   s      r   _get_callable_parametersr   #   s.      .I$-<  <D9==r   c                 |    t        |       }|D cg c]!  }|j                  t        v s|j                  # c}S c c}w N)r   kind	ARG_KINDSname)r   paramsparams      r   get_func_argsr$   2   s3    %d+F$*FF5ejjI.EEJJFFFFs   99c                    t        |       }g }|D ]  }|j                  }|dk(  r|j                  t        j                  j
                  k(  rd|z   }n,|j                  t        j                  j                  k(  rd|z   }|j                  t        j                  j                  k7  r|j                  ||j                  f       |j                  |f        |S )z
    Return a list of (argument name, default value) tuples. If the argument
    does not have a default value, omit it in the tuple. Arguments such as
    *args and **kwargs are also included.
    self*z**)
r   r!   r   r
   	ParameterVAR_POSITIONALVAR_KEYWORDdefaultemptyappend)r   r"   argsr#   r!   s        r   get_func_full_argsr/   7   s     &d+FDzz6>::**999:DZZ7,,888$;D==G--333KKu}}-.KK   Kr   c                 8    t        d t        |       D              S )zBReturn True if function 'func' accepts keyword arguments **kwargs.c              3   T   K   | ]   }|j                   |j                  k(  s| " y wr   )r   r*   .0ps     r   	<genexpr>z&func_accepts_kwargs.<locals>.<genexpr>Q   s"     T8QAFFamm<Sq8   ((anyr   r   s    r   func_accepts_kwargsr:   O   s    T248TTTr   c                 8    t        d t        |       D              S )zL
    Return True if function 'func' accepts positional arguments *args.
    c              3   T   K   | ]   }|j                   |j                  k(  s| " y wr   )r   r)   r2   s     r   r5   z(func_accepts_var_args.<locals>.<genexpr>X   s$     W8QAFFaFVFV<Vq8r6   r7   r9   s    r   func_accepts_var_argsr=   T   s     W248WWWr   c                     t        t        |       D cg c]  }|j                  t        v s| c}      }t	        j
                  |       r|dk(  S |dk(  S c c}w )z,Return True if a method only accepts 'self'.r   r	   )lenr   r   r    r
   r   )methr4   counts      r   method_has_no_argsrB   [   sT    4T:R:qaff	>Q:RSE ))$/5A:?UaZ? Ss
   AAc                 >    t        fdt        |       D              S )Nc              3   <   K   | ]  }|j                   k(    y wr   )r!   )r3   r#   r!   s     r   r5   z*func_supports_parameter.<locals>.<genexpr>b   s     N/MeuzzT!/Ms   r7   )r   r!   s    `r   func_supports_parameterrE   a   s    N/G/MNNNr   c               #      K   t         sd yt        5  t        j                  } t        t        _        	 d | t        _        	 ddd       y# | t        _        w xY w# 1 sw Y   yxY ww)a  
    inspect.getfullargspec eagerly evaluates type annotations. To add
    compatibility with Python 3.14+ deferred evaluation, patch the module-level
    helper to provide the annotation_format that we are using elsewhere.

    This private helper could be removed when there is an upstream solution for
    https://github.com/python/cpython/issues/141560.

    This context manager is not reentrant.
    N)r   lockr
   _signature_from_callablesafe_signature_from_callable)original_helpers    r   lazy_annotationsrK   e   sQ      	!::+G(	?/>G, 
 0?G, 
s2   A* AAA	A*AAA'#A*)	functoolsr
   	threading
contextlibr   django.utils.versionr   r   LockrG   partialrH   r   r   rI   	lru_cacher   r   	frozensetr(   POSITIONAL_ONLYKEYWORD_ONLYPOSITIONAL_OR_KEYWORDr    r$   r/   r:   r=   rB   rE   rK    r   r   <module>rX      s       % &9>>D#49#4#4(('..99$  S! " > ))&&//	G
0U
X@O ? ?r   