o
    ưi	                     @   s   d Z ddlZddlmZmZmZmZmZ ddlm	Z	 er%ddl
mZ eZneZdedeee eeef f ded	efd
dZdS )z
Returns a random deployment from the list of healthy deployments.

If weights are provided, it will return a deployment based on the weights.

    N)TYPE_CHECKINGAnyDictListUnion)verbose_router_logger)Routerllm_router_instancehealthy_deploymentsmodelreturnc              	      s   dD ]p|d  d d}|durrfdd|D }td|  t|  fdd|D }td	| d
  tjtt||dd }td|  || }td| d| 	|pc|d  d|  |po|d   S qt
|}|p}|d S )a  
    Returns a random deployment from the list of healthy deployments.

    If weights are provided, it will return a deployment based on the weights.

    If users pass `rpm` or `tpm`, we do a random weighted pick - based on `rpm`/`tpm`.

    Args:
        llm_router_instance: LitellmRouter instance
        healthy_deployments: List of healthy deployments
        model: Model name

    Returns:
        Dict: A single healthy deployment
    )weightZrpmZtpmr   litellm_paramsNc                    s   g | ]
}|d    dqS )r   r   )get).0m)	weight_by ]/home/app/Keep/.python/lib/python3.10/site-packages/litellm/router_strategy/simple_shuffle.py
<listcomp>.   s    z"simple_shuffle.<locals>.<listcomp>z
weight c                    s   g | ]}|  qS r   r   )r   r   )total_weightr   r   r   1   s    z

 weights z by )weightsz
 selected index, z$get_available_deployment for model: z, Selected deployment: z for model: )r   r   debugsumrandomchoicesrangeleninfoZprint_deploymentchoice)r	   r
   r   r   r   Zselected_indexZ
deploymentitemr   )r   r   r   simple_shuffle   s$   "
r!   )__doc__r   typingr   r   r   r   r   Zlitellm._loggingr   Zlitellm.routerr   Z_RouterZLitellmRouterstrr!   r   r   r   r   <module>   s"    