"""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()