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   úT/var/www/html/premium_crap/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"    

ýÿ	