Ë
    ±Œj_  ã                  óh  — d Z ddlmZ ddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ d	d
lmZ d	dlmZmZ  ej.                  d«      Z ej.                  dej2                  ej4                  z  «      Z ej.                  dej8                  › dej8                  › ej8                  › d�ej2                  ej4                  z  «      Z G d„ de«      Zej>                   G d„ d«      «       Z  ed«      Z!ere	e"e f   Z#ne	Z# G d„ de#«      Z$ G d„ d«      Z%dd„Z&d d„Z'd!d„Z(d"d„Z)d#d„Z*y)$Ú é    )Ú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                  ó&   — e Zd ZU dZded<   ded<   y)ÚWindowStatsz1
    tuple to describe a rate limited window
    ÚfloatÚ
reset_timeÚintÚ	remainingN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úU/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/limits/util.pyr   r   %   s   … ñð
 Óà„Nr   r   c                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y)	Ú
DependencyÚstrÚnamezVersion | NoneÚversion_requiredÚversion_foundr   ÚmoduleN)r   r   r   r   r   r   r   r   r   0   s   … à
ƒIØ$Ó$Ø!Ó!ØÔr   r   ÚMissingc                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚDependencyDictc                óª  •— t         ‰| �  |«      }|j                  t        u rMd|j                  › d�}|j
                  r!||j
                  rd|j
                  › d�ndz  }|dz  }t        |«      ‚|j
                  rW|j                  r|j                  |j
                  k  r2t        d|j
                  › d|j                  › d	|j                  › �«      ‚|S )
NÚ'z' prerequisite not available.z A minimum version of z is required.Ú 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+   zDependencyDict.__getitem__B   sï   ø€ Ü‘WÑ(¨Ó-ˆ
à×Ñ¤Ñ-Ø˜*Ÿ/™/Ð*Ð*GÐHˆGØ×*Ò*Øà!×2Ò2ð -¨Z×-HÑ-HÐ,IÈÑWàñ�ð
 ð%ñˆGô % WÓ-Ð-Ø×(Ò(Ø×(Ò(Ø×'Ñ'¨*×*EÑ*EÒEä$Ø)¨*×*EÑ*EÐ)FØ˜Ÿ™Ð)Ð)NÈz×OgÑOgÐNhðjóð ð
 Ðr   )r.   r   Úreturnr   )r   r   r   r+   Ú__classcell__)r1   s   @r   r&   r&   A   s   ø„ ÷ñ r   r&   c                  ó<   — e Zd ZU dZg Zded<   	 dd„Zedd„«       Zy)	ÚLazyDependencyz›
    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                ó"   — t        «       | _        y )N)r&   Ú_dependencies)r-   s    r   Ú__init__zLazyDependency.__init__k   s   € Ü-;Ó-=ˆÕr   c                óP  — t        | dd«      s‰t        «       }t        | j                  t        «      r| j                  D �ci c]  }|d“Œ }}n| j                  }|j                  «       D ]$  \  }}t        |«      \  }}t        ||||«      ||<   Œ& || _        | j                  S c c}w )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:
        r8   N)	Úgetattrr&   Ú
isinstancer6   ÚlistÚitemsÚget_dependencyr   r8   )r-   Údependenciesr/   Úmappingr    Úminimum_versionÚversions          r   r@   zLazyDependency.dependenciesn   s®   € ô �t˜_¨dÔ3Ü)Ó+ˆLô ˜$×+Ñ+¬TÔ2Ø>B×>OÒ>OÓPÑ>O°
˜: tÑ+Ð>O�ÑPà×+Ñ+�à)0¯©®Ñ%��oÜ&4°TÓ&:Ñ#�
˜Gä%/Ø˜/¨7°Jó&�˜TÒ"ð *9ð ".ˆDÔà×!Ñ!Ð!ùò Qs   Á 
B#N)r2   ÚNone)r2   r&   )	r   r   r   r   r6   r   r9   Úpropertyr@   r   r   r   r5   r5   ^   s2   … ñð ;=€LÐ7Ó<ðó
>ð ò"ó ñ"r   r5   c                ó  — 	 | t         j                  vrt        | «       | j                  d«      d   }t	        t         j                  |   dd«      }t         j                  |    t        |«      fS # t        $ r t        dfcY S w xY w)z5
    safe function to import a module at runtime
    Ú.r   Ú__version__z0.0.0N)ÚsysÚmodulesÚ
__import__Úsplitr;   r   ÚImportErrorr,   )Úmodule_pathÚrootrC   s      r   r?   r?   Œ   sz   € ð#ØœcŸk™kÑ)Ü�{Ô#Ø× Ñ  Ó% aÑ(ˆÜœ#Ÿ+™+ dÑ+¨]¸GÓDˆä�{‰{˜;Ñ'¬°Ó)9Ð9Ð9øÜò #Ü˜dÐ"Ò"ð#ús   ‚A,A/ Á/BÂBc                óz   — t         j                  j                  d«      j                  | «      j	                  «       S )NÚlimits)Ú	importlibÚ	resourcesÚfilesÚjoinpathÚ
read_bytes)Úpaths    r   Úget_package_datarX   ›   s-   € Ü×Ñ×$Ñ$ XÓ.×7Ñ7¸Ó=×HÑHÓJÐJr   c           	     óz  — t        | t        «      rt        j                  | «      st	        d| › d�«      ‚g }t
        j                  | «      D ]l  }t        j                  |«      }|sŒ|j                  «       \  }}}}t        |«      }|j                   |t        |«      |xr t        |«      xs d«      «       Œn |S )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)r<   r   ÚEXPRÚmatchÚ
ValueErrorÚ
SEPARATORSrL   ÚSINGLE_EXPRÚgroupsÚgranularity_from_stringÚappendr   )	Úlimit_stringrQ   Úlimitr[   ÚamountÚ_Ú	multiplesÚgranularity_stringÚgranularitys	            r   Ú
parse_manyri   Ÿ   sª   € ô �|¤SÔ)¬d¯j©j¸Ô.FÜÐ=¸l¸^È1ÐMÓNÐNØ€Fä×!Ñ! ,Ö/ˆÜ×!Ñ! %Ó(ˆâØ7<·|±|³~Ñ4ˆF�A�yÐ"4Ü1Ð2DÓEˆKØ�M‰MÙœC ›K¨Ò)E´s¸9³~Ò)MÈÓNõð 0ð €Mr   c                ó0   — t        t        | «      «      d   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   )r=   ri   )rb   s    r   Úparserk   º   s   € ô ”
˜<Ó(Ó)¨!Ñ,Ð,r   c                óz   — t        j                  «       D ]  }|j                  | «      sŒ|c S  t        d| › �«      ‚)z<

    :param granularity_string:
    :raise ValueError:
    zno granularity matched for )r   ÚvaluesÚcheck_granularity_stringr\   )rg   rh   s     r   r`   r`   Ç   sC   € ô %×+Ñ+Ö-ˆØ×/Ñ/Ð0BÕCØÒð .ô Ð2Ð3EÐ2FÐGÓ
HÐHr   )rN   r   r2   z!tuple[ModuleType, Version | None])rW   r   r2   Úbytes)rb   r   r2   zlist[RateLimitItem])rb   r   r2   r   )rg   r   r2   ztype[RateLimitItem])+r   Ú
__future__r   ÚdataclassesÚimportlib.resourcesrR   ÚrerI   Úcollectionsr   Útypesr   Útypingr   Úpackaging.versionr   Úlimits.typingr	   Úerrorsr   rQ   r   r   Úcompiler]   Ú
IGNORECASEÚVERBOSEr^   ÚpatternrZ   r   Ú	dataclassr   r,   r   Ú	_UserDictr&   r5   r?   rX   ri   rk   r`   r   r   r   Ú<module>r€      s1  ðÙ å "ã Û Û 	Û 
Ý  Ý Ý  å %å $å &ß 0àˆR�Z‰Z˜Ó$€
Øˆb�j‰jðð ‡M�M�B—J‘JÑó	€ð €r‡z�zØˆ×	Ñ	Ð˜S ×!3Ñ!3Ð 4°[×5HÑ5HÐ4IÈÐMØ‡M�M�B—J‘JÑó€ô�*ô ð ×Ñ÷ð ó ðñ ˜9Ó%€ñ Ø˜˜j˜Ñ)�Ià€Iô�Yô ÷:+"ñ +"ó\#óKóó6
-ô
Ir   