
    Hwg                     p    d dl Z d dlZ e j                  d      d        Zd Zd Zd Zd Zd	 Zd
 Z	d Z
y)    Ni   )maxsizec                     t        t        j                  |       j                  j	                               }|r|dd  }|S )N   )tupleinspect	signature
parametersvalues)funcremove_firstr	   s      K/var/www/horilla/myenv/lib/python3.12/site-packages/django/utils/inspect.py_get_func_parametersr      s:    w((.99@@BCJ^
    c                 f    t        j                  |       }|r| j                  n| }t        ||      S )N)r   )r   ismethod__func__r   )meth_or_func	is_methodr   s      r   _get_callable_parametersr      s.      .I$-<  <D9==r   c                     t        |       }|D cg c]5  }|j                  t        j                  j                  k(  r|j
                  7 c}S c c}w N)r   kindr   	ParameterPOSITIONAL_OR_KEYWORDname)r   paramsparams      r   get_func_argsr      sJ    %d+F ::**@@@ 	

  s   :Ac                    t        |       }g }|D ]  }|j                  }|dk(  r|j                  t        j                  j
                  k(  rd|z   }n,|j                  t        j                  j                  k(  rd|z   }|j                  t        j                  j                  k7  r|j                  ||j                  f       |j                  |f        |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   VAR_POSITIONALVAR_KEYWORDdefaultemptyappend)r   r   argsr   r   s        r   get_func_full_argsr(      s     &d+FD !zz6>::**999:DZZ7,,888$;D==G--333KKu}}-.KK ! Kr   c                 8    t        d t        |       D              S )zBReturn True if function 'func' accepts keyword arguments **kwargs.c              3   T   K   | ]   }|j                   |j                  k(  s| " y wr   )r   r#   .0ps     r   	<genexpr>z&func_accepts_kwargs.<locals>.<genexpr>6   s     TQAFFamm<SqT   ((anyr   r   s    r   func_accepts_kwargsr3   4   s    T248TTTr   c                 8    t        d t        |       D              S )zL
    Return True if function 'func' accepts positional arguments *args.
    c              3   T   K   | ]   }|j                   |j                  k(  s| " y wr   )r   r"   r+   s     r   r.   z(func_accepts_var_args.<locals>.<genexpr>=   s!     WQAFFaFVFV<VqWr/   r0   r2   s    r   func_accepts_var_argsr6   9   s     W248WWWr   c                     t        t        |       D cg c]  }|j                  |j                  k(  s|  c}      }t	        j
                  |       r|dk(  S |dk(  S c c}w )z,Return True if a method only accepts 'self'.r   r   )lenr   r   r   r   r   )methr-   counts      r   method_has_no_argsr;   @   sX    ,T2Xqaff@W@W6WXE !))$/5A:?UaZ? 	Ys
   AAc                 >    t        fdt        |       D              S )Nc              3   <   K   | ]  }|j                   k(    y wr   )r   )r,   r   r   s     r   r.   z*func_supports_parameter.<locals>.<genexpr>I   s     NeuzzT!Ns   r0   )r   r   s    `r   func_supports_parameterr>   H   s    N/G/MNNNr   )	functoolsr   	lru_cacher   r   r   r(   r3   r6   r;   r>    r   r   <module>rB      sS      S! ">0U
X@Or   