o
    {,h	                     @   sz   d dl Z d dlZe jdddd Zdd Zeejjejjejj	hZ
dd	 Zd
d Zdd Zdd Zdd Zdd ZdS )    Ni   )maxsizec                 C   s(   t t| j }|r|dd  }|S )N   )tupleinspect	signature
parametersvalues)funcremove_firstr    r   J/var/www/html/rh/venv/lib/python3.10/site-packages/django/utils/inspect.py_get_func_parameters   s   r   c                 C   s$   t | }|r
| jn| }t||dS )N)r
   )r   ismethod__func__r   )meth_or_func	is_methodr	   r   r   r   _get_callable_parameters   s   
r   c                 C   s   t | }dd |D S )Nc                 S   s   g | ]
}|j tv r|jqS r   )kind	ARG_KINDSname.0paramr   r   r   
<listcomp>   s    z!get_func_args.<locals>.<listcomp>)r   )r	   paramsr   r   r   get_func_args   s   r   c                 C   s   t | }g }|D ]7}|j}|dkrq|jtjjkrd| }n|jtjjkr)d| }|jtjjkr9|	||jf q|	|f q|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   r   r   r   get_func_full_args!   s   
r%   c                 C      t dd t| D S )zBReturn True if function 'func' accepts keyword arguments **kwargs.c                 s        | ]}|j |jkr|V  qd S N)r   r    r   pr   r   r   	<genexpr>;       z&func_accepts_kwargs.<locals>.<genexpr>anyr   r	   r   r   r   func_accepts_kwargs9   s   r0   c                 C   r&   )zL
    Return True if function 'func' accepts positional arguments *args.
    c                 s   r'   r(   )r   r   r)   r   r   r   r+   B   r,   z(func_accepts_var_args.<locals>.<genexpr>r-   r/   r   r   r   func_accepts_var_args>   s   r1   c                 C   s0   t dd t| D }t| r|dkS |dkS )z,Return True if a method only accepts 'self'.c                 S   s   g | ]	}|j tv r|qS r   )r   r   r)   r   r   r   r   G   s    z&method_has_no_args.<locals>.<listcomp>r   r   )lenr   r   r   )methcountr   r   r   method_has_no_argsE   s   r5   c                    s   t  fddt| D S )Nc                 3   s    | ]}|j  kV  qd S r(   r   r   r6   r   r   r+   L   s    z*func_supports_parameter.<locals>.<genexpr>r-   )r	   r   r   r6   r   func_supports_parameterK   s   r7   )	functoolsr   	lru_cacher   r   	frozensetr   POSITIONAL_ONLYKEYWORD_ONLYPOSITIONAL_OR_KEYWORDr   r   r%   r0   r1   r5   r7   r   r   r   r   <module>   s"    

	