
    i                     r    d dl Z d dlmZmZmZmZmZ d dlmZm	Z	  G d de
          Z G d de
          ZdS )    N)CallableIteratorListOptionalUnion)RateLimitItem
parse_manyc                   6   e Zd ZdZdededef         deeeedef         f                  de	dee
e                  deeeedef         f                  d	eede	f                  d
eeedef         f         de	ddfdZede	fd            Zedefd            ZdS )Limitz@
    simple wrapper to encapsulate limits and their context
    limitkey_func.scope
per_methodmethodserror_messageexempt_whencostoverride_defaultsreturnNc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d S N)	r   r   _Limit__scoper   r   r   r   r   r   )
selfr   r   r   r   r   r   r   r   r   s
             `/var/www/html/crypto-mining-system/backend/venv/lib/python3.11/site-packages/slowapi/wrappers.py__init__zLimit.__init__   sL     
 $*&	!2    c                 <    | j         |                                  ndS )zg
        Check if the limit is exempt.
        Return True to exempt the route from the limit.
        NF)r   r   s    r   	is_exemptzLimit.is_exempt"   s#     &*%5%At!!!uLr   c                     | j         dS t          | j                   r|                      t          j                  n| j         S )N )r   callablerequestendpointr   s    r   r   zLimit.scope*   sC     <2 DL))"W-...\r   )__name__
__module____qualname____doc__r   r   strr   r   boolr   intr   propertyr   r    r   r   r   r      sJ        33 38$3 c8CH#5567	3
 3 $s)$3  c8CH+=&= >?3 hsDy123 C#s(++,3  3 
3 3 3 3, M4 M M M XM 
s 
 
 
 X
 
 
r   r   c                   8   e Zd ZdZdeeedef         f         dedef         deeeedef         f                  dedee	e                  deeeedef         f                  d	eedef                  d
ee
ede
f         f         defdZdee         fdZd ZdS )
LimitGroupzb
    represents a group of related limits either from a string or a callable that returns one
    limit_provider.key_functionr   r   r   r   r   r   r   c
                     || _         || _        || _        || _        |rd |D             p|| _        || _        || _        || _        |	| _        d | _	        d S )Nc                 6    g | ]}|                                 S r-   )lower).0ms     r   
<listcomp>z'LimitGroup.__init__.<locals>.<listcomp>M   s     #?#?#?!AGGII#?#?#?r   )
_LimitGroup__limit_provider_LimitGroup__scoper1   r   r   r   r   r   r   r#   )
r   r0   r1   r   r   r   r   r   r   r   s
             r   r   zLimitGroup.__init__=   sl     !/($?#?#?w#?#?#?J7*&	!2r   r   c              #     K   t          | j                  rdt          j        | j                  j                                        v rdt          j        | j                  j                                        v sJ d| j        j         d            | j        t          d          |                     |                     | j                            }n|                                 }n| j        }t          |          }|D ]C}t          || j        | j        | j        | j        | j        | j        | j        | j        	  	        V  Dd S )Nkeyr#   zLimit provider function z needs a `request` argumentz`request` object can't be None)r"   r8   inspect	signature
parameterskeysr1   r%   r#   	Exceptionr	   r   r9   r   r   r   r   r   r   )r   	limit_rawlimit_itemsr   s       r   __iter__zLimitGroup.__iter__T   sY     D)** 	.)$*?@@KPPRRRR!243D!E!E!P!U!U!W!WWWWed.?.Heee XWW<'#$DEEE 11$2C2CDL2Q2QRR		 1133		-I+5i+@+@  	 	E!" 	&
 
 
 
 
 
	 	r   c                     || _         | S r   )r#   )r   r#   s     r   with_requestzLimitGroup.with_requesto   s    r   N)r%   r&   r'   r(   r   r)   r   r   r*   r   r+   r   r   r   rC   rE   r-   r   r   r/   r/   8   s.        c8CH#556 sCx( c8CH#5567	
  $s)$  c8CH+=&= >? hsDy12 C#s(++,     .(5/    6    r   r/   )r<   typingr   r   r   r   r   limitsr   r	   objectr   r/   r-   r   r   <module>rI      s     < < < < < < < < < < < < < < , , , , , , , ,. . . . .F . . .b9 9 9 9 9 9 9 9 9 9r   