open-range / src /open_range /server /__main__.py
Aaron Brown
Full OpenRange implementation: environment, builder, validator, agents, tests
8c486a8
"""Entry point for ``python -m open_range.server``.
Starts the OpenRange FastAPI server via uvicorn.
Usage::
python -m open_range.server # default host/port
python -m open_range.server --port 9000 # custom port
python -m open_range.server --host 0.0.0.0 --port 8080
"""
from __future__ import annotations
import argparse
import sys
def main() -> None:
parser = argparse.ArgumentParser(
description="Run the OpenRange FastAPI server",
)
parser.add_argument(
"--host",
default="127.0.0.1",
help="Bind address (default: 127.0.0.1)",
)
parser.add_argument(
"--port",
type=int,
default=8000,
help="Bind port (default: 8000)",
)
parser.add_argument(
"--reload",
action="store_true",
help="Enable auto-reload for development",
)
parser.add_argument(
"--log-level",
default="info",
choices=["debug", "info", "warning", "error", "critical"],
help="Uvicorn log level (default: info)",
)
args = parser.parse_args()
try:
import uvicorn
except ImportError:
print("uvicorn is required: pip install uvicorn", file=sys.stderr)
sys.exit(1)
uvicorn.run(
"open_range.server.app:app",
host=args.host,
port=args.port,
reload=args.reload,
log_level=args.log_level,
)
if __name__ == "__main__":
main()