
    ^h                         S r SSKrSSKJrJrJrJrJr  SSKJ	r	  \(       a	  SSK
Jr  \rO\rS\S\\\   \\\4   4   S\S	\4S
 jrg)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                    US   R                  S5      R                  SS5      nUGb  U Vs/ s H  oDS   R                  SS5      PM     nn[        R                  " SU 35        [        U5      nU Vs/ s H  o3U-  PM	     nn[        R                  " SU 35        [        R
                  " [        [        U5      5      US9S   n[        R                  " SU 35        X   n[        R                  " S	U S
U R                  U5      =(       d    US    SU 35        U=(       d    US   $ US   R                  S5      R                  SS5      n	U	Gb  U Vs/ s H  oDS   R                  SS5      PM     n
n[        R                  " SU
 35        [        U
5      nU
 V	s/ s H  oU-  PM	     nn	[        R                  " SU 35        [        R
                  " [        [        U
5      5      US9S   n[        R                  " SU 35        X   n[        R                  " S	U S
U R                  U5      =(       d    US    SU 35        U=(       d    US   $ US   R                  S5      R                  SS5      nUGb  U Vs/ s H  oDS   R                  SS5      PM     nn[        R                  " SU 35        [        U5      nU Vs/ s H  oU-  PM	     nn[        R                  " SU 35        [        R
                  " [        [        U5      5      US9S   n[        R                  " SU 35        X   n[        R                  " S	U S
U R                  U5      =(       d    US    SU 35        U=(       d    US   $ [        R                  " U5      nU=(       d    US   $ s  snf s  snf s  snf s  sn	f s  snf s  snf )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                   `/home/james-whalen/.local/lib/python3.13/site-packages/litellm/router_strategy/simple_shuffle.pysimple_shuffler(      sA   , !#''(89==hMFATUATA%&**8Q7ATU##iy$9:7|7>?wVL(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3ds?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3ds?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#   N)5N.N3!N8N=O)__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   