Spaces:
Sleeping
Sleeping
| """ | |
| server/app.py — OpenEnv entry point shim. | |
| Loads the root-level server.py by absolute file path so that the | |
| server/ package and the root server.py file can coexist without | |
| Python's import system preferring the package over the module. | |
| """ | |
| import importlib.util | |
| import os | |
| import sys | |
| # Add project root to path so root-level modules (env, models, etc.) resolve | |
| _root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| if _root not in sys.path: | |
| sys.path.insert(0, _root) | |
| # Load root server.py by file path, registered under a private module name | |
| # to avoid collision with the `server` package name. | |
| _spec = importlib.util.spec_from_file_location( | |
| "_dataselectenv_server", | |
| os.path.join(_root, "server.py"), | |
| ) | |
| _mod = importlib.util.module_from_spec(_spec) | |
| sys.modules["_dataselectenv_server"] = _mod | |
| _spec.loader.exec_module(_mod) | |
| # Re-export the FastAPI app — this is what openenv and uvicorn look for. | |
| app = _mod.app | |
| def main() -> None: | |
| """Entry point required by openenv validate and [project.scripts].""" | |
| import uvicorn | |
| port = int(os.environ.get("PORT", 7860)) | |
| uvicorn.run(app, host="0.0.0.0", port=port, reload=False) | |
| if __name__ == "__main__": | |
| main() | |