
    af                     t    d dl Z d dlZ e j        d          d             Zd Zd Zd Zd Zd	 Zd
 Z	d Z
dS )    Ni   )maxsizec                     t          t          j        |           j                                                  }|r
|dd          }|S )N   )tupleinspect	signature
parametersvalues)funcremove_firstr	   s      F/var/www/html/env/lib/python3.11/site-packages/django/utils/inspect.py_get_func_parametersr      sD    w(..9@@BBCCJ $^
    c                 b    t          j        |           }|r| j        n| }t          ||          S )N)r   )r   ismethod__func__r   )meth_or_func	is_methodr   s      r   _get_callable_parametersr      s7     ..I$-?<  <D9====r   c                 8    t          |           }d |D             S )Nc                 P    g | ]#}|j         t          j        j        k    |j        $S  )kindr   	ParameterPOSITIONAL_OR_KEYWORDname).0params     r   
<listcomp>z!get_func_args.<locals>.<listcomp>   s7       :*@@@ 	
@@@r   )r   )r   paramss     r   get_func_argsr!      s0    %d++F    r   c                 f   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        k    r|	                    ||j        f           |	                    |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   r   VAR_POSITIONALVAR_KEYWORDdefaultemptyappend)r   r    argsr   r   s        r   get_func_full_argsr+      s     &d++FD ! !z6>>:*999:DDZ7,888$;D=G-333KKu}-....KK    Kr   c                 N    t          d t          |           D                       S )zBReturn True if function 'func' accepts keyword arguments **kwargs.c              3   :   K   | ]}|j         |j        k    |V  d S N)r   r&   r   ps     r   	<genexpr>z&func_accepts_kwargs.<locals>.<genexpr>6   s0      TTQAFam<S<Sq<S<S<S<STTr   anyr   r   s    r   func_accepts_kwargsr5   4   s(    TT2488TTTTTTr   c                 N    t          d t          |           D                       S )zL
    Return True if function 'func' accepts positional arguments *args.
    c              3   :   K   | ]}|j         |j        k    |V  d S r.   )r   r%   r/   s     r   r1   z(func_accepts_var_args.<locals>.<genexpr>=   s1      WWQAFaFV<V<Vq<V<V<V<VWWr   r2   r4   s    r   func_accepts_var_argsr8   9   s*     WW2488WWWWWWr   c                     t          d t          |           D                       }t          j        |           r|dk    n|dk    S )z,Return True if a method only accepts 'self'.c                 2    g | ]}|j         |j        k    |S r   )r   r   r/   s     r   r   z&method_has_no_args.<locals>.<listcomp>C   s'    XXXqaf@W6W6W6W6W6Wr   r   r   )lenr   r   r   )methcounts     r   method_has_no_argsr>   @   sO    XX,T22XXX E !)$//?5A::UaZ?r   c                 T    t          fdt          |           D                       S )Nc              3   .   K   | ]}|j         k    V  d S r.   )r   )r   r   r   s     r   r1   z*func_supports_parameter.<locals>.<genexpr>I   s*      NNeuzT!NNNNNNr   r2   )r   r   s    `r   func_supports_parameterrA   H   s/    NNNN/G/M/MNNNNNNr   )	functoolsr   	lru_cacher   r   r!   r+   r5   r8   r>   rA   r   r   r   <module>rD      s         S!!!  "!> > >    0U U U
X X X@ @ @O O O O Or   