
    j                        S SK r S SKrS SKrS SKJr  S SKJrJr  \(       aK  S SKr\(       d@  \R                  " 5       r
\ R                  " \R                  \R                  R                  S9r\ R                   " SS9S 5       rS r\" \R(                  R*                  \R(                  R,                  \R(                  R.                  15      rS	 rS
 rS rS rS rS rS r\S 5       r SS.S jr!S r"g)    N)contextmanager)PY314PY315annotation_formati   )maxsizec                 v    [        [        U 5      R                  R                  5       5      nU(       a  USS  nU$ )N   )tuple	signature
parametersvalues)funcremove_firstr   s      L/var/www/html/KUNJ/venv/lib/python3.13/site-packages/django/utils/inspect.py_get_func_parametersr      s3    y1188:;J^
    c                 j    [         R                  " U 5      nU(       a  U R                  OU n[        X!S9$ )N)r   )inspectismethod__func__r   )meth_or_func	is_methodr   s      r   _get_callable_parametersr      s,      .I$-<  <D==r   c                     [        U 5      nU Vs/ s H$  o"R                  [        ;   d  M  UR                  PM&     sn$ s  snf N)r   kind	ARG_KINDSname)r   paramsparams      r   get_func_argsr"   *   s3    %d+F$*FF5jjI.EJEJJFFFFs   >>c                    [        U 5      n/ nU H  nUR                  nUS:X  a  M  UR                  [        R                  R
                  :X  a  SU-   nO-UR                  [        R                  R                  :X  a  SU-   nUR                  [        R                  R                  :w  a  UR                  XCR                  45        M  UR                  U45        M     U$ )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   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}}-.KK   Kr   c                 8    [        S [        U 5       5       5      $ )zBReturn True if function 'func' accepts keyword arguments **kwargs.c              3   \   #    U  H"  oR                   UR                  :X  d  M  Uv   M$     g 7fr   )r   r(   .0ps     r   	<genexpr>&func_accepts_kwargs.<locals>.<genexpr>I   s!     T8QFFamm<Sqq8   ,	,anyr   r   s    r   func_accepts_kwargsr9   G   s    T248TTTr   c                 8    [        S [        U 5       5       5      $ )zD
Return True if function 'func' accepts positional arguments *args.
c              3   \   #    U  H"  oR                   UR                  :X  d  M  Uv   M$     g 7fr   )r   r'   r0   s     r   r3   (func_accepts_var_args.<locals>.<genexpr>P   s#     W8QFFaFVFV<Vqq8r5   r6   r8   s    r   func_accepts_var_argsr=   L   s     W248WWWr   c                     [        [        U 5       Vs/ s H  oR                  [        ;   d  M  UPM     sn5      n[        R
                  " U 5      (       a  US:H  $ US:H  $ s  snf )z,Return True if a method only accepts 'self'.r   r
   )lenr   r   r   r   r   )methr2   counts      r   method_has_no_argsrB   S   sU    4T:R:qff	>Q:RSE ))$//5A:?UaZ? Ss
   A A c                 @   ^ [        U4S j[        U 5       5       5      $ )Nc              3   @   >#    U  H  oR                   T:H  v   M     g 7fr   )r   )r1   r!   r   s     r   r3   *func_supports_parameter.<locals>.<genexpr>Z   s     N/MezzT!/Ms   r6   )r   r   s    `r   func_supports_parameterrF   Y   s    N/G/MNNNr   c                     [         R                  " U 5      (       a  [         R                  " U 5      (       a  gSU R                  ;   a  gg)NFz<locals>T)r   
isfunction	isbuiltin__qualname__r8   s    r   is_module_level_functionrK   ]   s:    d##w'8'8'>'>T&&&r   c               #     #    [         (       d  [        (       d  Sv   g[           [        R                  n [
        [        l         Sv   U [        l         SSS5        g! U [        l        f = f! , (       d  f       g= f7f)a|  
inspect.getfullargspec eagerly evaluates type annotations. To add
compatibility with Python 3.14+ deferred evaluation, patch the module-level
helper to provide the annotation_format that we are using elsewhere.

This private helper should only be used for Python 3.14, as
https://github.com/python/cpython/issues/141560 was fixed in 3.15.

This context manager is not reentrant.
N)r   r   lockr   _signature_from_callablesafe_signature_from_callable)original_helpers    r   lazy_annotationsrQ   g   sV      uEE	!::+G(	?/>G, 
 0?G, 
s4   "A? A.A	A.	A?A++A..
A<8A?c                 4   [         (       a2  [        R                  " U0 UDS[        R                  R
                  0D6$ [        (       a*  [        5          [        R                  " U0 UD6sSSS5        $ [        R                  " U0 UD6$ ! , (       d  f       g= f)z
A wrapper around inspect.getfullargspec that leaves deferred annotations
unevaluated on Python 3.14+, since they are not used in our case.
r   N)r   r   getfullargspecannotationlibFormat
FORWARDREFr   rQ   )r   r,   kwargss      r   rS   rS      s    
 u%%

/</C/C/N/N
 	
 u))4:6:   %%t6v66  s   B		
Bc                     [         (       a-  [        R                  " U [        R                  R
                  S9$ [        R                  " U 5      $ )z
A wrapper around inspect.signature that leaves deferred annotations
unevaluated on Python 3.14+, since they are not used in our case.
r   )r   r   r   rT   rU   rV   )objs    r   r   r      s9    
 u  8L8L8W8WXX  %%r   )#	functoolsr   	threading
contextlibr   django.utils.versionr   r   rT   LockrM   partialrN   rU   rV   rO   	lru_cacher   r   	frozensetr&   POSITIONAL_ONLYKEYWORD_ONLYPOSITIONAL_OR_KEYWORDr   r"   r-   r9   r=   rB   rF   rK   rQ   rS   r    r   r   <module>rf      s       % -~~'0'8'8,,+22==(
$ S! "> ))&&//	G
0U
X@O ? ?. -1 7 &r   