
    g                         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
Zy)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                    |d   j                  d      j                  dd      }||D cg c]  }|d   j                  dd       }}t        j                  d|        t        |      }|D cg c]  }||z  	 }}t        j                  d|        t	        j
                  t        t        |            |      d   }t        j                  d|        ||   }t        j                  d	| d
| j                  |      xs |d    d|        |xs |d   S |d   j                  d      j                  dd      }	|	|D cg c]  }|d   j                  dd       }
}t        j                  d|
        t        |
      }|
D 	cg c]  }	|	|z  	 }}	t        j                  d|        t	        j
                  t        t        |
            |      d   }t        j                  d|        ||   }t        j                  d	| d
| j                  |      xs |d    d|        |xs |d   S |d   j                  d      j                  dd      }||D cg c]  }|d   j                  dd       }}t        j                  d|        t        |      }|D cg c]  }||z  	 }}t        j                  d|        t	        j
                  t        t        |            |      d   }t        j                  d|        ||   }t        j                  d	| d
| j                  |      xs |d    d|        |xs |d   S t	        j                  |      }|xs |d   S c c}w c c}w c c}w c c}	w c c}w c c}w )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
    r   litellm_paramsweightNz
weight z

 weights )weightsz
 selected index, z$get_available_deployment for model: z, Selected deployment: z for model: rpmz
rpms tpmz
tpms )getr   debugsumrandomchoicesrangeleninfoprint_deploymentchoice)r
   r   r   r   mr   total_weightselected_index
deploymentr   rpms	total_rpmr   tpms	total_tpmitems                   [/var/www/openai/venv/lib/python3.12/site-packages/litellm/router_strategy/simple_shuffle.pysimple_shuffler(      sS   , !#''(89==hMFATUATA1%&**8Q7ATU##iy$9:7|7>?wV6L(w?##k'$;<c'l(;WMaP##&9.9I$JK(8
""25'9PQdQuQu  wA  RB  RS  FP  QR  FS  QT  T`  af  `g  h	
 *Z]*
a
 
$
$%5
6
:
:5$
GC
;NO;Na"#''q1;NO##gdV$45I	.23ds3?d3##k'$;<c$i(8'J1M##&9.9I$JK(8
""25'9PQdQuQu  wA  RB  RS  FP  QR  FS  QT  T`  af  `g  h	
 *Z]*
a
 
$
$%5
6
:
:5$
GC
;NO;Na"#''q1;NO##gdV$45I	.23ds3?d3##k'$;<c$i(8'J1M##&9.9I$JK(8
""25'9PQdQuQu  wA  RB  RS  FP  QR  FS  QT  T`  af  `g  h	
 *Z]* ==,-D?47e V @ P 4 P 4s#   M00M5M:M?!N&N	)__doc__r   typingr   r   r   r   r   litellm._loggingr   litellm.routerr	   _RouterLitellmRouterstrr(        r'   <module>r2      sl     8 8 20MMK&KtCy$sCx.89K K 
	Kr1   