Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/prisma_migration.py: 0%
28 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
1"""Standalone entrypoint for applying database migrations and generating the Prisma client.
3Migration failures fail the entrypoint by default; set ENFORCE_PRISMA_MIGRATION_CHECK=false
4for log-only behavior. A failed 'prisma generate' is always log-only: every shipped image
5bakes the client at build time, and refreshing it writes into site-packages, which an
6arbitrary non-root uid or a read-only root filesystem cannot do.
7"""
9import os
10import subprocess
11import sys
13sys.path.insert(0, os.path.abspath("./"))
15from typing import Final
17import click
18from litellm_proxy_extras.prisma_toolchain import resolve_prisma_argv
20from litellm._logging import verbose_proxy_logger
21from litellm.proxy.proxy_cli import run_server
24def _enforce_prisma_migration_check(raw: str | None) -> bool:
25 if raw is None or not raw.strip():
26 return True
27 try:
28 return bool(click.BOOL(raw))
29 except click.BadParameter:
30 return True
33def main() -> int:
34 enforce_prisma_migration_check: Final = _enforce_prisma_migration_check(os.getenv("ENFORCE_PRISMA_MIGRATION_CHECK"))
35 run_server_args: Final = (
36 ("--skip_server_startup", "--enforce_prisma_migration_check")
37 if enforce_prisma_migration_check
38 else ("--skip_server_startup",)
39 )
40 run_server(run_server_args, standalone_mode=False)
42 verbose_proxy_logger.info("Running 'prisma generate'...")
43 result: Final = subprocess.run(resolve_prisma_argv(("prisma", "generate")), capture_output=True, text=True)
44 verbose_proxy_logger.info("'prisma generate' stdout: %s", result.stdout)
46 if result.returncode != 0:
47 verbose_proxy_logger.warning(
48 "'prisma generate' exited %s; continuing with the client baked at image build time. stderr: %s",
49 result.returncode,
50 result.stderr,
51 )
52 return 0
55if __name__ == "__main__":
56 sys.exit(main())