
vÅÏ^ý  ã               @   sX   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   s1   g  |  ]' \ } } | j  t j j k r | ‘ q S© )ÚkindÚinspectÚ	ParameterÚPOSITIONAL_OR_KEYWORD)Ú.0Úarg_nameÚparamr   r   ú6/tmp/pip-build-8lau8j11/django/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]  \ } } | } | d k rF q% | j t  j j k rh d | } 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   sN   t  d d „  t j |  ƒ j j ƒ  Dƒ ƒ } t j |  ƒ rD | d k S| d k S)z,Return True if a method only accepts 'self'.c             S   s(   g  |  ] } | j  | j k r | ‘ q Sr   )r   r   )r   r   r   r   r
   r   8   s   	 z&method_has_no_args.<locals>.<listcomp>r   é   )Úlenr   r   r   r   Z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   
	