o
    uvXjý  ã                   @   s<   d dl Z dd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )é    Nc                 C   s   t  | ¡}dd„ |j ¡ D ƒS )Nc                 S   s"   g | ]\}}|j tjjkr|‘qS © )ÚkindÚinspectÚ	ParameterÚPOSITIONAL_OR_KEYWORD)Ú.0Úarg_nameÚparamr   r   úQ/var/www/html/myproject/venv/lib/python3.10/site-packages/django/utils/inspect.pyÚ
<listcomp>   s
    ÿz!get_func_args.<locals>.<listcomp>)r   Ú	signatureÚ
parametersÚitems)ÚfuncÚsigr   r   r
   Úget_func_args   s   
ÿr   c                 C   sŽ   t  | ¡}g }|j ¡ D ]8\}}|}|dkrq|jt jjkr#d| }n|jt jjkr.d| }|jt jj	kr>| 
||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   r   r   ÚVAR_POSITIONALÚVAR_KEYWORDÚdefaultÚemptyÚappend)r   r   Úargsr   r	   Únamer   r   r
   Úget_func_full_args   s   

r   c                 C   ó   t dd„ t | ¡j ¡ D ƒƒS )Nc                 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   Úvalues©r   r   r   r
   Úfunc_accepts_kwargs$   s   ÿr'   c                 C   r   )zL
    Return True if function 'func' accepts positional arguments *args.
    c                 s   r   r   )r   r   r   r   r   r
   r!   /   r"   z(func_accepts_var_args.<locals>.<genexpr>r#   r&   r   r   r
   Úfunc_accepts_var_args+   s   ÿr(   c                 C   s8   t dd„ t | ¡j ¡ D ƒƒ}t | ¡r|dkS |dkS )z,Return True if a method only accepts 'self'.c                 S   s   g | ]
}|j |jkr|‘qS r   )r   r   r   r   r   r
   r   7   s
    ÿz&method_has_no_args.<locals>.<listcomp>r   é   )Úlenr   r   r   r%   Úismethod)ÚmethÚcountr   r   r
   Úmethod_has_no_args5   s   ÿr.   c                 C   s   |t  | ¡jv S r   )r   r   r   )r   Ú	parameterr   r   r
   Úfunc_supports_parameter>   s   r0   )r   r   r   r'   r(   r.   r0   r   r   r   r
   Ú<module>   s    
	