LiteLLM Contributor PRs (02/18/2025). (#8643)

* fix: prisma migration script logging #6991 (#8617)

* fix: prisma migration script logging #6991

* chore: refactor usng proxy logger

* remove noqa and move import below abs path

* Fix(litellm-vetexai-gemini): adding the supported files as per gemini documentation (#8559)

* bugfix(litellm-vetexai-gemini): adding the supported files as per gemini documentations

* fix(files.py): correct file type constant from 'text' to 'TXT'

* test: handle internal server error

---------

Co-authored-by: Justin Law <81255462+justinthelaw@users.noreply.github.com>
Co-authored-by: alymedhat10 <48028013+alymedhat10@users.noreply.github.com>
This commit is contained in:
Krish Dholakia 2025-02-19 21:52:46 -08:00 committed by GitHub
parent cc77138b37
commit 982ee4b96b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 31 additions and 12 deletions

View file

@ -10,6 +10,7 @@ sys.path.insert(
0, os.path.abspath("./") 0, os.path.abspath("./")
) # Adds the parent directory to the system path ) # Adds the parent directory to the system path
from litellm.secret_managers.aws_secret_manager import decrypt_env_var from litellm.secret_managers.aws_secret_manager import decrypt_env_var
from litellm._logging import verbose_proxy_logger
if os.getenv("USE_AWS_KMS", None) is not None and os.getenv("USE_AWS_KMS") == "True": if os.getenv("USE_AWS_KMS", None) is not None and os.getenv("USE_AWS_KMS") == "True":
## V2 IMPLEMENTATION OF AWS KMS - USER WANTS TO DECRYPT MULTIPLE KEYS IN THEIR ENV ## V2 IMPLEMENTATION OF AWS KMS - USER WANTS TO DECRYPT MULTIPLE KEYS IN THEIR ENV
@ -21,6 +22,7 @@ if os.getenv("USE_AWS_KMS", None) is not None and os.getenv("USE_AWS_KMS") == "T
# Check if DATABASE_URL is not set # Check if DATABASE_URL is not set
database_url = os.getenv("DATABASE_URL") database_url = os.getenv("DATABASE_URL")
if not database_url: if not database_url:
verbose_proxy_logger.info("Constructing DATABASE_URL from environment variables")
# Check if all required variables are provided # Check if all required variables are provided
database_host = os.getenv("DATABASE_HOST") database_host = os.getenv("DATABASE_HOST")
database_username = os.getenv("DATABASE_USERNAME") database_username = os.getenv("DATABASE_USERNAME")
@ -30,12 +32,14 @@ if not database_url:
if database_host and database_username and database_password and database_name: if database_host and database_username and database_password and database_name:
# Construct DATABASE_URL from the provided variables # Construct DATABASE_URL from the provided variables
database_url = f"postgresql://{database_username}:{database_password}@{database_host}/{database_name}" database_url = f"postgresql://{database_username}:{database_password}@{database_host}/{database_name}"
os.environ["DATABASE_URL"] = database_url os.environ["DATABASE_URL"] = database_url # Log the constructed URL
else: else:
print( # noqa verbose_proxy_logger.error(
"Error: Required database environment variables are not set. Provide a postgres url for DATABASE_URL." # noqa "Error: Required database environment variables are not set. Provide a postgres url for DATABASE_URL." # noqa
) )
exit(1) exit(1)
else:
verbose_proxy_logger.info("Using existing DATABASE_URL environment variable") # Log existing DATABASE_URL
# Set DIRECT_URL to the value of DATABASE_URL if it is not set, required for migrations # Set DIRECT_URL to the value of DATABASE_URL if it is not set, required for migrations
direct_url = os.getenv("DIRECT_URL") direct_url = os.getenv("DIRECT_URL")
@ -49,29 +53,40 @@ exit_code = 1
disable_schema_update = os.getenv("DISABLE_SCHEMA_UPDATE") disable_schema_update = os.getenv("DISABLE_SCHEMA_UPDATE")
if disable_schema_update is not None and disable_schema_update == "True": if disable_schema_update is not None and disable_schema_update == "True":
print("Skipping schema update...") # noqa verbose_proxy_logger.info("Skipping schema update...")
exit(0) exit(0)
while retry_count < max_retries and exit_code != 0: while retry_count < max_retries and exit_code != 0:
retry_count += 1 retry_count += 1
print(f"Attempt {retry_count}...") # noqa verbose_proxy_logger.info(f"Attempt {retry_count}...")
# run prisma generate # run prisma generate
result = subprocess.run(["prisma", "generate"], capture_output=True) verbose_proxy_logger.info("Running 'prisma generate'...")
result = subprocess.run(["prisma", "generate"], capture_output=True, text=True)
verbose_proxy_logger.info(f"'prisma generate' stdout: {result.stdout}") # Log stdout
exit_code = result.returncode exit_code = result.returncode
if exit_code != 0:
verbose_proxy_logger.info(f"'prisma generate' failed with exit code {exit_code}.")
verbose_proxy_logger.error(f"'prisma generate' stderr: {result.stderr}") # Log stderr
# Run the Prisma db push command # Run the Prisma db push command
verbose_proxy_logger.info("Running 'prisma db push --accept-data-loss'...")
result = subprocess.run( result = subprocess.run(
["prisma", "db", "push", "--accept-data-loss"], capture_output=True ["prisma", "db", "push", "--accept-data-loss"], capture_output=True, text=True
) )
verbose_proxy_logger.info(f"'prisma db push' stdout: {result.stdout}") # Log stdout
exit_code = result.returncode exit_code = result.returncode
if exit_code != 0 and retry_count < max_retries: if exit_code != 0:
print("Retrying in 10 seconds...") # noqa verbose_proxy_logger.info(f"'prisma db push' stderr: {result.stderr}") # Log stderr
verbose_proxy_logger.error(f"'prisma db push' failed with exit code {exit_code}.")
if retry_count < max_retries:
verbose_proxy_logger.info("Retrying in 10 seconds...")
time.sleep(10) time.sleep(10)
if exit_code != 0: if retry_count == max_retries and exit_code != 0:
print(f"Unable to push database changes after {max_retries} retries.") # noqa verbose_proxy_logger.error(f"Unable to push database changes after {max_retries} retries.")
exit(1) exit(1)
print("Database push successful!") # noqa verbose_proxy_logger.info("Database push successful!")

View file

@ -251,15 +251,18 @@ GEMINI_1_5_ACCEPTED_FILE_TYPES: Set[FileType] = {
# Image # Image
FileType.PNG, FileType.PNG,
FileType.JPEG, FileType.JPEG,
FileType.WEBP,
# Audio # Audio
FileType.AAC, FileType.AAC,
FileType.FLAC, FileType.FLAC,
FileType.MP3, FileType.MP3,
FileType.MPA, FileType.MPA,
FileType.MPEG,
FileType.MPGA, FileType.MPGA,
FileType.OPUS, FileType.OPUS,
FileType.PCM, FileType.PCM,
FileType.WAV, FileType.WAV,
FileType.WEBM,
# Video # Video
FileType.FLV, FileType.FLV,
FileType.MOV, FileType.MOV,
@ -272,6 +275,7 @@ GEMINI_1_5_ACCEPTED_FILE_TYPES: Set[FileType] = {
FileType.THREE_GPP, FileType.THREE_GPP,
# PDF # PDF
FileType.PDF, FileType.PDF,
FileType.TXT,
} }