Spaces:
Paused
Paused
| import ast | |
| import os | |
| import sys | |
| sys.path.insert(0, os.path.abspath("../..")) | |
| import litellm | |
| ALLOWED_FILES_IN_LLMS_FOLDER = [ | |
| "__init__", | |
| "base", | |
| "base_llm", | |
| "custom_httpx", | |
| "custom_llm", | |
| "deprecated_providers", | |
| ] | |
| def get_unique_names_from_llms_dir(base_dir: str): | |
| """ | |
| Returns a set of unique file and folder names from the root level of litellm/llms directory, | |
| excluding file extensions and __init__.py | |
| """ | |
| unique_names = set() | |
| if not os.path.exists(base_dir): | |
| print(f"Warning: Directory {base_dir} does not exist.") | |
| return unique_names | |
| # Get only root level items | |
| items = os.listdir(base_dir) | |
| for item in items: | |
| item_path = os.path.join(base_dir, item) | |
| if os.path.isdir(item_path): | |
| if item != "__pycache__": | |
| unique_names.add(item) | |
| elif item.endswith(".py") and item != "__init__.py": | |
| name_without_ext = os.path.splitext(item)[0] | |
| unique_names.add(name_without_ext) | |
| return unique_names | |
| def run_lint_check(unique_names): | |
| _all_litellm_providers = [str(provider.value) for provider in litellm.LlmProviders] | |
| violations = [] | |
| for name in unique_names: | |
| if ( | |
| name.lower() not in _all_litellm_providers | |
| and name not in ALLOWED_FILES_IN_LLMS_FOLDER | |
| ): | |
| violations.append(name) | |
| if len(violations) > 0: | |
| raise ValueError( | |
| f"There are {len(violations)} violations in the llms folder. \n\n {violations}. \n\n Valid providers: {_all_litellm_providers}" | |
| ) | |
| def main(): | |
| llms_dir = "./litellm/llms/" # Update this path if needed | |
| # llms_dir = "../../litellm/llms/" # LOCAL TESTING | |
| unique_names = get_unique_names_from_llms_dir(llms_dir) | |
| print("Unique names in llms directory:", sorted(list(unique_names))) | |
| run_lint_check(unique_names) | |
| if __name__ == "__main__": | |
| main() | |