Ë
    uPêjà
  ã                   óx   — d Z ddlZddl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f   z  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ÚFinal)Úverbose_router_logger)ÚRouterÚllm_router_instanceÚhealthy_deploymentsÚmodelÚreturnc                 ó’  — dD �]  }|d   j                  d«      j                  |d«      }|€Œ+|D �cg c]  }|d   j                  |d«      ‘Œ }}t        j                  d|«       t        |«      }|dk  rŒt|D �cg c]  }||z  ‘Œ	 }}t        j                  d||«       t	        j
                  t        t        |«      «      |¬«      d   }t        j                  d|«       ||   }	t        j                  d	|| j                  |	«      xs |	d   |«       |	xs |	d   c S  t	        j                  |«      }
|
xs |
d   S 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
    )ÚweightÚrpmÚtpmr   Úlitellm_paramsNz

weight %sz
 weights %s by %s)Úweightsz
 selected index, %szMget_available_deployment for model: %s, Selected deployment: %s for model: %s)Úgetr   ÚdebugÚsumÚrandomÚchoicesÚrangeÚlenÚinfoÚprint_deploymentÚchoice)r   r	   r
   Ú	weight_byr   Úmr   Útotal_weightÚselected_indexÚ
deploymentÚitems              úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/router_strategy/simple_shuffle.pyÚsimple_shuffler#      sW  € ð, .ó /ˆ	Ø$ QÑ'×+Ñ+Ð,<Ó=×AÑAÀ)ÈTÓRˆØÑØFYÖZÀ�qÐ)Ñ*×.Ñ.¨y¸!Õ<ÐZˆGÐZÜ!×'Ñ'¨°wÔ?Ü˜w›<ˆLØ˜qÒ ð Ø;BÖC°�v Ó,ÐCˆGÐCÜ!×'Ñ'Ð(=¸wÈ	ÔRä#Ÿ^™^¬E´#°g³,Ó,?ÈÔQÐRSÑTˆNÜ!×'Ñ'Ð(?ÀÔPØ,¨^Ñ<ˆJÜ!×&Ñ&Ø_ØØ#×4Ñ4°ZÓ@ÒQÀJÈqÁMØô	ð Ò. ¨A¡Ò.ð3/ô8 —-‘-Ð 3Ó4€DØŠ?�4˜‘7Ðùò5 [ùò Ds   ²D?Á;E)Ú__doc__r   Útypingr   r   r   Úlitellm._loggingr   Úlitellm.routerr   Ú_RouterÚLitellmRouterÚlistÚdictÚstrr#   © ó    r"   ú<module>r/      sb   ðñó ß ,Ñ ,å 2áÝ0à�Mà€Mð3Ø&ð3à˜c™ T¨#¨s¨(¡^Ñ3ð3ð ð3ð 
ô	3r.   