3
vÅÏ^ý  ã               @   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 j| ƒ}dd„ |j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   ú8/usr/lib/python3.6/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 j| ƒ}g }x~|jjƒ D ]p\}}|}|dkr0q|jt jjkrHd| }n|jt jjkr^d| }|jt jj	kr~|j
||jfƒ q|j
|fƒ qW |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   s   t dd„ tj| ƒjjƒ D ƒƒS )Nc             s   s   | ]}|j |jkr|V  qd S )N)r   r   )r   Úpr   r   r
   ú	<genexpr>&   s    z&func_accepts_kwargs.<locals>.<genexpr>)Úanyr   r   r   Úvalues)r   r   r   r
   Úfunc_accepts_kwargs$   s    r    c             C   s   t dd„ tj| ƒjjƒ D ƒƒS )zL
    Return True if function 'func' accepts positional arguments *args.
    c             s   s   | ]}|j |jkr|V  qd S )N)r   r   )r   r   r   r   r
   r   0   s    z(func_accepts_var_args.<locals>.<genexpr>)r   r   r   r   r   )r   r   r   r
   Úfunc_accepts_var_args+   s    r!   c             C   s8   t dd„ tj| ƒjjƒ D ƒƒ}tj| ƒr0|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
   r   8   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| ƒjkS )N)r   r   r   )r   Z	parameterr   r   r
   Úfunc_supports_parameter>   s    r(   )r   r   r   r    r!   r'   r(   r   r   r   r
   Ú<module>   s   
	