
    ^h                     \   S SK JrJrJr  S SKrS SKJr  S SKJrJ	r	  S SK
Jr  S\S\4S jrS	\S\\\      4S
 jrS\\\\   4   S\\   S\\   4S jrS\	S\\   S\\\\   4   S\\   4S jrS\	S\\   S\\\\   4   S\\   4S jrS\\   S\\   S\\   S\\   S\\   S\\   4S jrg)    )DictListOptionalN)verbose_proxy_logger)SpecialModelNamesUserAPIKeyAuth)get_valid_modelsmodelreturnc                 |    U S:X  a  gSU ;   a/  U R                  SS5      u  pU[        R                  ;   a  US:X  a  gg)z1
Returns True if a model is a provider wildcard.
*T/   F)splitlitellmprovider_list)r
   llm_providerpotential_wildcards      Y/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/auth/model_checks.py_check_wildcard_routingr      sD     |
e|+0;;sA+>(G1116HC6O    providerc                 r    U S:X  a
  [        5       $ U [        R                  ;   a  [        R                  U    $ g)z.
Returns the list of known models by provider
r   N)r	   r   models_by_providerr   s    r   get_provider_modelsr      s6     3!!7---))(33r   model_access_groups
all_modelsc                     / n/ n[        U5       H0  u  pEXP;   d  M  UR                  U5        UR                  X   5        M2     [        USS9 H  nUR	                  U5        M     UR                  U5        U$ )NT)reverse)	enumerateappendextendsortedpop)r   r   idx_to_remove
new_modelsidxr
   s         r   _get_models_from_access_groupsr)   )   sz     MJ
+
'  %189 ,
 mT2s 3 j!r   user_api_key_dictproxy_model_listc                 V   / n[        U R                  5      S:  aV  U R                  n[        R                  R                  U;   a  U R
                  n[        R                  R                  U;   a  Un[        X#S9n[        R                  " SR                  [        U5      5      5        U$ )
Returns:
- List of model name strings
- Empty list if no models set
- If model_access_groups is provided, only return models that are in the access groups
r   r   r   zALL KEY MODELS - {})lenmodelsr   all_team_modelsvalueteam_modelsall_proxy_modelsr)   r   debugformatr*   r+   r   r   s       r   get_key_modelsr8   ;   s     J
##$q(&--
,,22j@*66J--33zA)J//J 4;;C
OLMr   c                 V   / n[        U R                  5      S:  aV  U R                  n[        R                  R                  U;   a  U R                  n[        R
                  R                  U;   a  Un[        X#S9n[        R                  " SR                  [        U5      5      5        U$ )r-   r   r.   zALL TEAM MODELS - {})
r/   r3   r   r1   r2   r4   r)   r   r5   r6   r7   s       r   get_team_modelsr:   V   s     J
(()A-&22
,,22j@*66J--33zA)J//J 5<<S_MNr   
key_modelsr3   
user_modelinfer_model_from_keysc                 4    [        5       nU (       a  UR                  U 5        OdU(       a  UR                  U5        OKUR                  U5        U(       a  UR                  U5        U(       a  [        5       nUR                  U5        [        5       n/ nU HW  n	[	        U	S9(       d  M  U	R                  S5      S   n
[        U
S9nUc  M5  UR                  U	5        UR                  U5        MY     U H  n	UR                  U	5        M     [        U5      U-   $ )zCLogic for returning complete model list for a given key + team pair)r
   r   r   r   )
setupdateaddr	   r   r   r   r#   removelist)r;   r3   r+   r<   r=   unique_modelsvalid_modelsmodels_to_removeall_wildcard_modelsr
   r   wildcard_modelss               r   get_complete_model_listrI   q   s     EMZ(	[)-.j) +-L  .u"//{{3'*H18DO* $$U+#**?;  "U# " !444r   )typingr   r   r   r   litellm._loggingr   litellm.proxy._typesr   r   litellm.utilsr	   strboolr   r   r)   r8   r:   rI    r   r   <module>rQ      sM   ( '  1 B *3 4 "
# 
(49*= 
c49n-S	 
#Y$%3i c49n- 
#Y	6%3i c49n- 
#Y	6,5S	,5c,5 3i,5 	,5
 $D>,5 
#Y,5r   