code-review / server /app.py
DeepParmar's picture
Restore server folder and requirements.txt per user request
2b2ebe7
"""ASGI app entrypoint expected by openenv validate."""
from __future__ import annotations
import importlib.util
import os
import sys
from pathlib import Path
from typing import NoReturn
import uvicorn
def _load_impl_app() -> object:
"""Load FastAPI app from code-review-env/server.py."""
repo_root = Path(__file__).resolve().parents[1]
impl_root = repo_root / "code-review-env"
impl_server = impl_root / "server.py"
if not impl_server.exists():
raise RuntimeError("Implementation server not found at code-review-env/server.py")
if str(impl_root) not in sys.path:
sys.path.insert(0, str(impl_root))
spec = importlib.util.spec_from_file_location("code_review_env_impl_server", impl_server)
if spec is None or spec.loader is None:
raise RuntimeError("Failed to create module spec for implementation server")
module = importlib.util.module_from_spec(spec)
sys.modules["code_review_env_impl_server"] = module
spec.loader.exec_module(module)
if not hasattr(module, "app"):
raise RuntimeError("Implementation server module does not define app")
return getattr(module, "app")
app = _load_impl_app()
def main() -> NoReturn:
"""Run the ASGI app with uvicorn on port 7860."""
host = os.getenv("HOST", "0.0.0.0")
port = int(os.getenv("PORT", "7860"))
uvicorn.run("server:app", host=host, port=port)
raise SystemExit(0)
if __name__ == "__main__":
main()