
    gm                     P   d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	 d dl
mZ dedefdZd	edeee      fd
Zdeeee   f   dee   dee   fdZde	dee   deeee   f   dee   fdZde	dee   deeee   f   dee   fdZdee   dee   dee   dee   dee   dee   fdZy)    )DictListOptionalN)verbose_proxy_logger)SpecialModelNamesUserAPIKeyAuth)get_valid_modelsmodelreturnc                 r    | dk(  ryd| v r-| j                  dd      \  }}|t        j                  v r|dk(  ryy)z9
    Returns True if a model is a provider wildcard.
    *T/   F)splitlitellmprovider_list)r
   llm_providerpotential_wildcards      T/var/www/openai/venv/lib/python3.12/site-packages/litellm/proxy/auth/model_checks.py_check_wildcard_routingr      sG     |
e|+0;;sA+>((G1116HC6O    providerc                     | dk(  r
t               S | t        j                  v r7t        j                  |    }t        |      D ]  \  }}| |vs|  d| ||<    |S y)z6
    Returns the list of known models by provider
    r   r   N)r	   r   models_by_provider	enumerate)r   provider_modelsidx_models       r   get_provider_modelsr      sm     3!!7---!44X>$_5KCv%*21VH'=$ 6 r   model_access_groups
all_modelsc                     g }g }t        |      D ]/  \  }}|| v s|j                  |       |j                  | |          1 t        |d      D ]  }|j	                  |        |j                  |       |S )NT)reverse)r   appendextendsortedpop)r    r!   idx_to_remove
new_modelsr   r
   s         r   _get_models_from_access_groupsr*   ,   s     MJ
+
U''  %1%89 ,
 mT2s 3 j!r   user_api_key_dictproxy_model_listc                 R   g }t        | j                        dkD  rR| j                  }t        j                  j                  |v r| j
                  }t        j                  j                  |v r|}t        ||      }t        j                  dj                  t        |                   |S )
    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_modelsr9   >   s     J
##$q(&--
,,22j@*66J--33zA)J//JJ 4;;C
OLMr   c                 R   g }t        | j                        dkD  rR| j                  }t        j                  j                  |v r| j                  }t        j
                  j                  |v r|}t        ||      }t        j                  dj                  t        |                   |S )r.   r   r/   zALL TEAM MODELS - {})
r0   r4   r   r2   r3   r5   r*   r   r6   r7   r8   s       r   get_team_modelsr;   Y   s     J
(()A-&22
,,22j@*66J--33zA)J//JJ 5<<S_MNr   
key_modelsr4   
user_modelinfer_model_from_keysc                     	 t               }| r|j                  |        nU|r|j                  |       nA|j                  |       |r|j                  |       |rt               }|j                  |       t               }g }|D ]T  }	t	        |	      s|	j                  d      d   }
t        |
      }|3|j                  |	       |j                  |       V |D ]  }	|j                  |	        t        |      |z   S )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<   r4   r,   r=   r>   unique_modelsvalid_modelsmodels_to_removeall_wildcard_modelsr
   r   wildcard_modelss               r   get_complete_model_listrJ   t   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*   r9   r;   rJ    r   r   <module>rR      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   