
    Ti_                    |   S r SSKJr  SSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  S	S
KJr  S	SKJrJr  \R.                  " S5      r\R.                  " S\R2                  \R4                  -  5      r\R.                  " S\R8                   S\R8                   \R8                   S3\R2                  \R4                  -  5      r " S S\5      r\R>                   " S S5      5       r \" S5      r!\(       a  \	\"\ 4   r#O\	r# " S S\#5      r$ " S S5      r%SS jr&S S jr'S!S jr(S"S jr)S#S jr*g)$     )annotationsN)UserDict)
ModuleType)TYPE_CHECKING)Version)
NamedTuple   )ConfigurationError)GRANULARITIESRateLimitItemz[,;|]{1}zS
    \s*([0-9]+)
    \s*(/|\s*per\s*)
    \s*([0-9]+)?
    \s*([a-z]+)
    \s*
    ^z(:?z)*$c                  .    \ rS rSr% SrS\S'   S\S'   Srg)	WindowStats%   z)
tuple to describe a rate limited window
float
reset_timeint	remaining N)__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r       ]/var/www/html/backend/Backoffice_Marketplace/venv/lib/python3.13/site-packages/limits/util.pyr   r   %   s    
 Nr   r   c                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	rg
)
Dependency0   strnamezVersion | Noneversion_requiredversion_foundr   moduler   N)r   r   r   r   r   r   r   r   r   r!   r!   0   s    
I$$!!r   r!   Missingc                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )DependencyDictA   c                  > [         TU ]  U5      nUR                  [        L aW  SUR                   S3nUR
                  (       a&  UUR
                  (       a  SUR
                   S3OS-  nUS-  n[        U5      eUR
                  (       a]  UR                  (       a  UR                  UR
                  :  a2  [        SUR
                   SUR                   S	UR                   35      eU$ )
N'z' prerequisite not available.z A minimum version of z is required.r   z^ See https://limits.readthedocs.io/en/stable/storage.html#supported-versions for more details.zThe minimum version of z for 'z%' could not be found. Found version: )super__getitem__r'   MissingModuler$   r%   r   r&   )selfkey
dependencymessage	__class__s       r   r/   DependencyDict.__getitem__B   s    W(-
-*//**GHG**!22 -Z-H-H,IW
 %G %W--((((''**E*EE$)**E*E)F))NzOgOgNhj 
 r   r   )r2   r#   returnr!   )r   r   r   r   r/   r   __classcell__)r5   s   @r   r*   r*   A   s     r   r*   c                  H    \ rS rSr% Sr/ rS\S'    S	S jr\S
S j5       r	Sr
g)LazyDependency^   z
Simple utility that provides an :attr:`dependency`
to the child class to fetch any dependencies
without having to import them explicitly.
z%dict[str, Version | None] | list[str]DEPENDENCIESc                "    [        5       U l        g )N)r*   _dependencies)r1   s    r   __init__LazyDependency.__init__k   s    -;-=r   c                `   [        U SS5      (       d  [        5       n[        U R                  [        5      (       a  U R                   Vs0 s H  o"S_M     nnOU R                  nUR                  5        H   u  pE[        U5      u  p&[        XEXb5      X'   M"     Xl        U R                  $ s  snf )z
Cached mapping of the modules this storage depends on.
This is done so that the module is only imported lazily
when the storage is instantiated.

:meta private:
r>   N)	getattrr*   
isinstancer<   listitemsget_dependencyr!   r>   )r1   dependenciesr3   mappingr$   minimum_versionversions          r   rG   LazyDependency.dependenciesn   s     t_d33)+L $++T22>B>O>OP>O
t+>OP++)0%&4T&:#
%/7&" *9 ".!!! Qs   
B+)r>   N)r7   None)r7   r*   )r   r   r   r   r   r<   r   r?   propertyrG   r   r   r   r   r:   r:   ^   s2     ;=L7<
> " "r   r:   c                    U [         R                  ;  a  [        U 5        U R                  S5      S   n[	        [         R                  U   SS5      n[         R                  U    [        U5      4$ ! [         a    [        S4s $ f = f)z-
safe function to import a module at runtime
.r   __version__z0.0.0N)sysmodules
__import__splitrB   r   ImportErrorr0   )module_pathrootrJ   s      r   rF   rF      sz    #ckk){#  %a(#++d+]GD{{;')999 #d""#s   A.A1 1BBc                z    [         R                  R                  S5      R                  U 5      R	                  5       $ )Nlimits)	importlib	resourcesfilesjoinpath
read_bytes)paths    r   get_package_datar`      s-    $$X.77=HHJJr   c           	        [        U [        5      (       a  [        R                  U 5      (       d  [	        SU  S35      e/ n[
        R                  U 5       H{  n[        R                  U5      nU(       d  M!  UR                  5       u  pEpg[        U5      nUR                  U" [        U5      U=(       a    [        U5      =(       d    S5      5        M}     U$ )z
parses rate limits in string notation containing multiple rate limits
(e.g. ``1/second; 5/minute``)

:param limit_string: rate limit string using :ref:`ratelimit-string`
:raise ValueError: if the string notation is invalid.

z"couldn't parse rate limit string 'r-   N)rC   r#   EXPRmatch
ValueError
SEPARATORSrT   SINGLE_EXPRgroupsgranularity_from_stringappendr   )	limit_stringrY   limitrc   amount_	multiplesgranularity_stringgranularitys	            r   
parse_manyrq      s     |S))djj.F.F=l^1MNNF!!,/!!%(57<||~4Fy12DEKMMCK)Es9~)MN 0 Mr   c                0    [        [        U 5      5      S   $ )z
parses a single rate limit in string notation
(e.g. ``1/second`` or ``1 per second``)

:param limit_string: rate limit string using :ref:`ratelimit-string`
:raise ValueError: if the string notation is invalid.

r   )rD   rq   )rj   s    r   parsers      s     
<()!,,r   c                    [         R                  " 5        H  nUR                  U 5      (       d  M  Us  $    [        SU  35      e)z0

:param granularity_string:
:raise ValueError:
zno granularity matched for )r   valuescheck_granularity_stringrd   )ro   rp   s     r   rh   rh      sF     %++-//0BCC . 23E2FG
HHr   )rV   r#   r7   z!tuple[ModuleType, Version | None])r_   r#   r7   bytes)rj   r#   r7   zlist[RateLimitItem])rj   r#   r7   r   )ro   r#   r7   ztype[RateLimitItem])+r   
__future__r   dataclassesimportlib.resourcesrZ   rerQ   collectionsr   typesr   typingr   packaging.versionr   limits.typingr	   errorsr   rY   r   r   compilere   
IGNORECASEVERBOSErf   patternrb   r   	dataclassr!   r0   r#   	_UserDictr*   r:   rF   r`   rq   rs   rh   r   r   r   <module>r      s+    "   	 
      % $ & 0ZZ$
jj MMBJJ	 
zz		S!3!3 4[5H5H4IMMMBJJ*     9% j)IIY :+" +"\#K6
-
Ir   