Ë
    ²Œj  ã                   ód   — 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y)é    N)ÚCallableÚIteratorÚListÚOptionalÚUnion)ÚRateLimitItemÚ
parse_manyc                   óÚ   — 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y)ÚLimitz@
    simple wrapper to encapsulate limits and their context
    ÚlimitÚkey_func.ÚscopeÚ
per_methodÚmethodsÚerror_messageÚexempt_whenÚcostÚoverride_defaultsÚreturnNc
                 ó‚   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y ©N)	r   r   Ú_Limit__scoper   r   r   r   r   r   )
Úselfr   r   r   r   r   r   r   r   r   s
             úZ/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/slowapi/wrappers.pyÚ__init__zLimit.__init__   sF   € ð ˆŒ
Ø ˆŒØˆŒØ$ˆŒØˆŒØ*ˆÔØ&ˆÔØˆŒ	Ø!2ˆÕó    c                 ó>   — | j                   �| j                  «       S dS )zg
        Check if the limit is exempt.
        Return True to exempt the route from the limit.
        F)r   ©r   s    r   Ú	is_exemptzLimit.is_exempt"   s#   € ð &*×%5Ñ%5Ð%Aˆt×ÑÓ!ÐLÀuÐLr   c                 óœ   — | j                   €yt        | j                   «      r| j                  t        j                  «      S | j                   S )NÚ )r   ÚcallableÚrequestÚendpointr   s    r   r   zLimit.scope*   sF   € ð �<‰<ÐØô ˜DŸL™LÔ)ð —‘œW×-Ñ-Ó.ðð —\‘\ðr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr   r   Úboolr   Úintr   Úpropertyr   r   © r   r   r   r      s
  „ ñð3àð3ð ˜3 ˜8Ñ$ð3ð ˜˜c 8¨C°¨HÑ#5Ð5Ñ6Ñ7ð	3ð
 ð3ð ˜$˜s™)Ñ$ð3ð    c¨8°C¸°HÑ+=Ð&=Ñ >Ñ?ð3ð ˜h s¨D yÑ1Ñ2ð3ð �C˜ # s (Ñ+Ð+Ñ,ð3ð  ð3ð 
ó3ð, ðM˜4ò Mó ðMð ð
�sò 
ó ñ
r   r   c                   óÖ   — 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y)Ú
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
                 óâ   — || _         || _        || _        || _        |xr |D �
cg c]  }
|
j	                  «       ‘Œ c}
xs || _        || _        || _        || _        |	| _	        d | _
        y c c}
w r   )Ú_LimitGroup__limit_providerÚ_LimitGroup__scoper1   r   Úlowerr   r   r   r   r   r#   )r   r0   r1   r   r   r   r   r   r   r   Úms              r   r   zLimitGroup.__init__=   st   € ð !/ˆÔØˆŒØ(ˆÔØ$ˆŒØÒ?±wÓ#?±w°! A§G¡G¥I°wÑ#?ÒJÀ7ˆŒØ*ˆÔØ&ˆÔØˆŒ	Ø!2ˆÔØˆ�ùò $@s   ¥A,r   c              #   ó  K  — t        | j                  «      rädt        j                  | j                  «      j                  j                  «       v ršdt        j                  | j                  «      j                  j                  «       v sJ d| j                  j                  › d�«       ‚| j                  €t        d«      ‚| j                  | j                  | j                  «      «      }n| j                  «       }n| j                  }t        |«      }|D ]g  }t        || j                  | j                  | j                  | j                  | j                  | j                   | j"                  | j$                  «	      –— Œi y ­w)NÚkeyr#   zLimit provider function z needs a `request` argumentz`request` object can't be None)r"   r3   ÚinspectÚ	signatureÚ
parametersÚkeysr1   r%   r#   Ú	Exceptionr	   r   r4   r   r   r   r   r   r   )r   Ú	limit_rawÚlimit_itemsr   s       r   Ú__iter__zLimitGroup.__iter__T   s?  è ø€ Ü�D×)Ñ)Ô*Øœ×)Ñ)¨$×*?Ñ*?Ó@×KÑK×PÑPÓRÑRà¤×!2Ñ!2°4×3DÑ3DÓ!E×!PÑ!P×!UÑ!UÓ!WÑWðfà-¨d×.?Ñ.?×.HÑ.HÐ-IÐIdÐeófØWà—<‘<Ð'Ü#Ð$DÓEÐEØ ×1Ñ1°$×2CÑ2CÀDÇLÁLÓ2QÓR‘	à ×1Ñ1Ó3‘	à×-Ñ-ˆIÜ+5°iÓ+@ˆÛ ˆEÜØØ×!Ñ!Ø—‘Ø—‘Ø—‘Ø×"Ñ"Ø× Ñ Ø—	‘	Ø×&Ñ&ó
ó 
ñ !ùs   ‚E>F 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   r@   rB   r-   r   r   r/   r/   8   sï   „ ñðà˜c 8¨C°¨HÑ#5Ð5Ñ6ðð ˜s C˜xÑ(ðð ˜˜c 8¨C°¨HÑ#5Ð5Ñ6Ñ7ð	ð
 ðð ˜$˜s™)Ñ$ðð    c¨8°C¸°HÑ+=Ð&=Ñ >Ñ?ðð ˜h s¨D yÑ1Ñ2ðð �C˜ # s (Ñ+Ð+Ñ,ðð  óð.˜( 5™/ó ó6r   r/   )r9   Útypingr   r   r   r   r   Úlimitsr   r	   Úobjectr   r/   r-   r   r   Ú<module>rF      s*   ðÛ ß <Õ <ç ,ô.ˆFô .ôb9�õ 9r   