
    Ջg              	       p   d dl Z d dlZd dlmZ d dlmZ d dlmZ dZ eej                  ej                  z   dz         Z
dj                  d  ee ed	            D              ZeD  ci c]  } | d c} fZd
edefdZd
edefdZd
edee   fdZd
edefdZd ZddZ	 ddedeee      defdZyc c} w )    N)Callable)List)Optionalz_template_fragment_cache_%s%sz_. c              #   2   K   | ]  }|t         vs|  y wN)valid_chars).0cs     F/var/www/html/venv/lib/python3.12/site-packages/flask_caching/utils.py	<genexpr>r   
   s     L!q7KALs      freturnc                     t        j                  |       }t        |j                  xs |j                  xs |j
                        S )z)Check if the function wants any arguments)inspectgetfullargspecboolargsvarargsvarkw)r   arg_specs     r   
wants_argsr      s5    %%a(HC!1!1CX^^DD    c                 n    t        t        j                  |       j                  j	                               S )zQGet function parameters
    :param f
    :return: Parameter list of function
    )listr   	signature
parametersvalues)r   s    r   get_function_parametersr       s)    
 !!!$//66899r   c                     t        |       D cg c]'  }|j                  |j                  k(  r|j                  ) c}S c c}w )zUReturn arguments of function
    :param f:
    :return: String list of arguments
    )r    kindPOSITIONAL_OR_KEYWORDname)r   	parameters     r   get_arg_namesr&      s?     13>>Y<<< 	  s   ,=positionc                 x    t        |       |   }|j                  }|t        j                  j                  k7  r|S d S r   )r    defaultr   	Parameterempty)r   r'   argarg_defs       r   get_arg_defaultr.   (   s8    
!!
$X
.CkkG!2!2!8!887BdBr   c                 0     t        | dt              |       S )N__caching_id__)getattrrepr)objs    r   get_idr4   .   s    /73($/44r   c                 4   t        |       }d}t        | dd      }|r+t        j                  |      st	        | j
                        }n|r|d   dk(  r|rt	        |d         }| j                  }|r+|d   dk(  r#t        j                  |d         st        d      t        | d      r| j                  }nt        | dd      }|r!t        j                  |      s|j                  }|st        | dd      }|s)|r'|r%|d   dk(  r|d   j                  }n|d   dk(  r|d   }|r|j                  d	z   | j                  z   }n| j                  } d	j                  ||f      j                  t         }|r% d	j                  |||f      j                  t         nd}	||	fS )
z1Attempts to returns unique namespace for functionN__self__r   selfclszaWhen using `delete_memoized` on a `@classmethod` you must provide the class as the first argument__qualname__im_class.)r&   r1   r   isclassr4   r6   
__module__
ValueErrorhasattrr9   	__class____name__join	translatenull_control)
r   r   m_argsinstance_tokeninstance_selfmoduler$   klassnsinss
             r   function_namespacerL   2   s   1FNAz40MW__];

+	F1I'DQ\\F&)u$W__T!W-E*
 	
 q.!~~:t,/OOEAz40E$!9& G--EAY%' GE>>C'!**4D::D	+64.	!	+	+\	:B  	;&$/0::LI  s7Nr   fragment_namevary_onc                 J    |rd| z  } ng }t         | dj                  |      fz  S )z.Make a cache key for a specific fragment name.z%s__)TEMPLATE_FRAGMENT_KEY_TEMPLATErB   )rM   rN   s     r   make_template_fragment_keyrR   j   s/     -)]CHHW<M,NNNr   r   )r   stringtypingr   r   r   rQ   setascii_lettersdigitsr	   rB   mapchrrange	del_charsrD   r   r   r    strr&   intr.   r4   rL   rR   )ks   0r   <module>r_      s       !@ &&&6=>GGLs3c
3LL	"+,QD,.E( Et E:x :D :	X 	$s) 	Cx C3 C55r 8<OO!)$s)!4OO -s   (
B3