o
    Æ°i`  ã                   @   sR   d Z ddlmZmZ ddlmZ ddlmZ deeef dee defdd	„Z	d
S )z2
Shared utility functions for rate limiter hooks.
é    )ÚOptionalÚUnion)ÚModelGroupInfo)ÚPriorityReservationDictÚvalueÚ
model_infoÚreturnc                 C   s¨   t | ttfƒrt| ƒS t | tƒrR|  dd¡}|  dd¡}|dkr$t|ƒS |dkr9|r9|jr9|jdkr9t|ƒ|j S |dkrN|rN|jrN|jdkrNt|ƒ|j S t|ƒS dS )	a1  
    Convert priority reservation value to percentage (0.0-1.0).

    Supports three formats:
    1. Plain float/int: 0.9 -> 0.9 (90%)
    2. Dict with percent: {"type": "percent", "value": 0.9} -> 0.9
    3. Dict with rpm: {"type": "rpm", "value": 900} -> 900/model_rpm
    4. Dict with tpm: {"type": "tpm", "value": 900000} -> 900000/model_tpm

    Args:
        value: Priority value as float or dict with type/value keys
        model_info: Model configuration containing rpm/tpm limits

    Returns:
        float: Percentage value between 0.0 and 1.0
    ÚtypeÚpercentr   g      ð?Úrpmr   ÚtpmN)Ú
isinstanceÚintÚfloatÚdictÚgetr   r   )r   r   Úval_typeZval_num© r   ú]/home/app/Keep/.python/lib/python3.10/site-packages/litellm/proxy/hooks/rate_limiter_utils.pyÚconvert_priority_to_percent   s.   
ÿþ
ÿþ
êr   N)
Ú__doc__Útypingr   r   Zlitellm.types.routerr   Zlitellm.types.utilsr   r   r   r   r   r   r   Ú<module>   s    
ÿÿþ