Added LiteLLM to the stack
This commit is contained in:
60
Development/litellm/tests/test_litellm/test_constants.py
Normal file
60
Development/litellm/tests/test_litellm/test_constants.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import inspect
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from unittest import mock
|
||||
|
||||
import httpx
|
||||
import pytest
|
||||
import respx
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
sys.path.insert(0, os.path.abspath("../..")) #
|
||||
|
||||
import importlib
|
||||
|
||||
import litellm
|
||||
from litellm import constants
|
||||
|
||||
|
||||
def test_all_numeric_constants_can_be_overridden():
|
||||
"""
|
||||
Test that all integer and float constants in constants.py can be overridden with environment variables.
|
||||
This ensures that any new constants added in the future will be configurable via environment variables.
|
||||
"""
|
||||
# Get all attributes from the constants module
|
||||
constants_attributes = inspect.getmembers(constants)
|
||||
|
||||
# Filter for uppercase constants (by convention) that are integers or floats
|
||||
numeric_constants = [
|
||||
(name, value)
|
||||
for name, value in constants_attributes
|
||||
if name.isupper() and isinstance(value, (int, float))
|
||||
]
|
||||
|
||||
# Ensure we found some constants to test
|
||||
assert len(numeric_constants) > 0, "No numeric constants found to test"
|
||||
|
||||
print("all numeric constants", json.dumps(numeric_constants, indent=4))
|
||||
|
||||
# Verify all numeric constants have environment variable support
|
||||
for name, value in numeric_constants:
|
||||
# Skip constants that are not meant to be overridden (if any)
|
||||
if name.startswith("_"):
|
||||
continue
|
||||
|
||||
# Create a test value that's different from the default
|
||||
test_value = value + 1 if isinstance(value, int) else value + 0.1
|
||||
|
||||
# Set the environment variable
|
||||
with mock.patch.dict(os.environ, {name: str(test_value)}):
|
||||
print("overriding", name, "with", test_value)
|
||||
importlib.reload(constants)
|
||||
|
||||
# Get the new value after reload
|
||||
new_value = getattr(constants, name)
|
||||
|
||||
# Verify the value was overridden
|
||||
assert (
|
||||
new_value == test_value
|
||||
), f"Failed to override {name} with environment variable. Expected {test_value}, got {new_value}"
|
Reference in New Issue
Block a user