Spaces:
Sleeping
Sleeping
Sahil Tailor commited on
Commit Β·
8be219d
1
Parent(s): 4dd48d5
space_manufactoring folder elimination
Browse files- Dockerfile +5 -5
- inference.py +10 -30
- pyproject.toml +2 -2
- server/app.py +5 -12
- server/ui_demo.py +3 -17
Dockerfile
CHANGED
|
@@ -74,21 +74,21 @@ WORKDIR /app
|
|
| 74 |
# Copy the virtual environment from builder
|
| 75 |
COPY --from=builder /app/env/.venv /app/.venv
|
| 76 |
|
| 77 |
-
# Copy the
|
| 78 |
COPY --from=builder /app/env /app/env
|
| 79 |
|
| 80 |
-
# Copy built frontend assets
|
| 81 |
COPY --from=frontend-builder /app/frontend/dist /app/env/frontend/dist
|
| 82 |
|
| 83 |
# Set PATH to use the virtual environment
|
| 84 |
ENV PATH="/app/.venv/bin:$PATH"
|
| 85 |
|
| 86 |
-
#
|
| 87 |
ENV PYTHONPATH="/app/env:$PYTHONPATH"
|
| 88 |
|
| 89 |
# Health check
|
| 90 |
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
| 91 |
CMD curl -f http://localhost:8000/health || exit 1
|
| 92 |
|
| 93 |
-
#
|
| 94 |
-
CMD ["
|
|
|
|
| 74 |
# Copy the virtual environment from builder
|
| 75 |
COPY --from=builder /app/env/.venv /app/.venv
|
| 76 |
|
| 77 |
+
# Copy the flat package source (SpaceFactory/ root contains all .py modules)
|
| 78 |
COPY --from=builder /app/env /app/env
|
| 79 |
|
| 80 |
+
# Copy built frontend assets
|
| 81 |
COPY --from=frontend-builder /app/frontend/dist /app/env/frontend/dist
|
| 82 |
|
| 83 |
# Set PATH to use the virtual environment
|
| 84 |
ENV PATH="/app/.venv/bin:$PATH"
|
| 85 |
|
| 86 |
+
# All modules (env.py, models.py, server/, etc.) are directly under /app/env
|
| 87 |
ENV PYTHONPATH="/app/env:$PYTHONPATH"
|
| 88 |
|
| 89 |
# Health check
|
| 90 |
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
| 91 |
CMD curl -f http://localhost:8000/health || exit 1
|
| 92 |
|
| 93 |
+
# server/ is a sub-package of /app/env, importable as `server.app`
|
| 94 |
+
CMD ["uvicorn", "server.app:app", "--host", "0.0.0.0", "--port", "8000"]
|
inference.py
CHANGED
|
@@ -27,7 +27,6 @@ Usage:
|
|
| 27 |
from __future__ import annotations
|
| 28 |
|
| 29 |
import asyncio
|
| 30 |
-
import importlib.util
|
| 31 |
import json
|
| 32 |
import os
|
| 33 |
import re
|
|
@@ -49,35 +48,16 @@ try:
|
|
| 49 |
except Exception: # pragma: no cover
|
| 50 |
load_dotenv = None # type: ignore[assignment]
|
| 51 |
|
| 52 |
-
# ββ package
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
from space_manufacturing.models import ManufacturingObservation
|
| 63 |
-
except ImportError: # pragma: no cover β script executed directly from SpaceFactory/
|
| 64 |
-
_pkg_root = Path(__file__).resolve().parent
|
| 65 |
-
_spec = importlib.util.spec_from_file_location(
|
| 66 |
-
"space_manufacturing",
|
| 67 |
-
_pkg_root / "__init__.py",
|
| 68 |
-
submodule_search_locations=[str(_pkg_root)],
|
| 69 |
-
)
|
| 70 |
-
if _spec is None or _spec.loader is None:
|
| 71 |
-
raise
|
| 72 |
-
_sm = importlib.util.module_from_spec(_spec)
|
| 73 |
-
sys.modules["space_manufacturing"] = _sm
|
| 74 |
-
_spec.loader.exec_module(_sm) # type: ignore[union-attr]
|
| 75 |
-
EasyTask = _sm.EasyTask
|
| 76 |
-
HardTask = _sm.HardTask
|
| 77 |
-
MediumTask = _sm.MediumTask
|
| 78 |
-
ManufacturingAction = _sm.ManufacturingAction
|
| 79 |
-
ManufacturingTaskEnv = _sm.ManufacturingTaskEnv
|
| 80 |
-
ManufacturingTaskGrader = _sm.ManufacturingTaskGrader # type: ignore[attr-defined]
|
| 81 |
ManufacturingObservation = _sm.ManufacturingObservation # type: ignore[attr-defined]
|
| 82 |
|
| 83 |
if load_dotenv is not None:
|
|
|
|
| 27 |
from __future__ import annotations
|
| 28 |
|
| 29 |
import asyncio
|
|
|
|
| 30 |
import json
|
| 31 |
import os
|
| 32 |
import re
|
|
|
|
| 48 |
except Exception: # pragma: no cover
|
| 49 |
load_dotenv = None # type: ignore[assignment]
|
| 50 |
|
| 51 |
+
# ββ package imports ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 52 |
+
# inference.py lives at the root of SpaceFactory/, so all sibling modules are
|
| 53 |
+
# importable directly (no package prefix needed).
|
| 54 |
+
from env import ManufacturingTaskEnv # noqa: E402
|
| 55 |
+
from graders import ManufacturingTaskGrader # noqa: E402
|
| 56 |
+
from models import ( # noqa: E402
|
| 57 |
+
ManufacturingAction,
|
| 58 |
+
ManufacturingObservation,
|
| 59 |
+
)
|
| 60 |
+
from tasks import EasyTask, HardTask, MediumTask # noqa: E402
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
ManufacturingObservation = _sm.ManufacturingObservation # type: ignore[attr-defined]
|
| 62 |
|
| 63 |
if load_dotenv is not None:
|
pyproject.toml
CHANGED
|
@@ -14,7 +14,7 @@ dependencies = [
|
|
| 14 |
]
|
| 15 |
|
| 16 |
[project.scripts]
|
| 17 |
-
server = "
|
| 18 |
|
| 19 |
[build-system]
|
| 20 |
requires = ["setuptools>=68", "wheel"]
|
|
@@ -22,4 +22,4 @@ build-backend = "setuptools.build_meta"
|
|
| 22 |
|
| 23 |
[tool.setuptools.packages.find]
|
| 24 |
where = ["."]
|
| 25 |
-
include = ["
|
|
|
|
| 14 |
]
|
| 15 |
|
| 16 |
[project.scripts]
|
| 17 |
+
server = "server.app:main"
|
| 18 |
|
| 19 |
[build-system]
|
| 20 |
requires = ["setuptools>=68", "wheel"]
|
|
|
|
| 22 |
|
| 23 |
[tool.setuptools.packages.find]
|
| 24 |
where = ["."]
|
| 25 |
+
include = ["server*"]
|
server/app.py
CHANGED
|
@@ -17,16 +17,9 @@ try:
|
|
| 17 |
except ImportError as exc:
|
| 18 |
raise SystemExit(f"FastAPI is required: pip install fastapi uvicorn\n{exc}") from exc
|
| 19 |
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
from space_manufacturing.env import ManufacturingTaskEnv
|
| 24 |
-
from space_manufacturing.models import ManufacturingAction, ManufacturingObservation
|
| 25 |
-
from space_manufacturing.server.ui_demo import ManufacturingUIDemo
|
| 26 |
-
except ImportError:
|
| 27 |
-
from ..env import ManufacturingTaskEnv # type: ignore
|
| 28 |
-
from ..models import ManufacturingAction, ManufacturingObservation # type: ignore
|
| 29 |
-
from .ui_demo import ManufacturingUIDemo # type: ignore
|
| 30 |
|
| 31 |
# ββ app ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 32 |
app = FastAPI(
|
|
@@ -213,7 +206,7 @@ def _fallback_html() -> str:
|
|
| 213 |
f"Total reward: {s.total_reward:.2f} | Done: {s.done}</p>"
|
| 214 |
f"<h2>Platforms</h2><ul>{platforms_html}</ul>"
|
| 215 |
f"<p class='warn'>Frontend not built. Run: "
|
| 216 |
-
f"cd
|
| 217 |
f"</body></html>"
|
| 218 |
)
|
| 219 |
|
|
@@ -227,7 +220,7 @@ def main() -> None:
|
|
| 227 |
if sys.platform == "win32":
|
| 228 |
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
| 229 |
|
| 230 |
-
uvicorn.run("
|
| 231 |
|
| 232 |
|
| 233 |
if __name__ == "__main__":
|
|
|
|
| 17 |
except ImportError as exc:
|
| 18 |
raise SystemExit(f"FastAPI is required: pip install fastapi uvicorn\n{exc}") from exc
|
| 19 |
|
| 20 |
+
from .ui_demo import ManufacturingUIDemo
|
| 21 |
+
from ..env import ManufacturingTaskEnv
|
| 22 |
+
from ..models import ManufacturingAction, ManufacturingObservation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
|
| 24 |
# ββ app ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 25 |
app = FastAPI(
|
|
|
|
| 206 |
f"Total reward: {s.total_reward:.2f} | Done: {s.done}</p>"
|
| 207 |
f"<h2>Platforms</h2><ul>{platforms_html}</ul>"
|
| 208 |
f"<p class='warn'>Frontend not built. Run: "
|
| 209 |
+
f"cd frontend && npm install && npm run build</p>"
|
| 210 |
f"</body></html>"
|
| 211 |
)
|
| 212 |
|
|
|
|
| 220 |
if sys.platform == "win32":
|
| 221 |
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
| 222 |
|
| 223 |
+
uvicorn.run("server.app:app", host="0.0.0.0", port=8000, reload=False)
|
| 224 |
|
| 225 |
|
| 226 |
if __name__ == "__main__":
|
server/ui_demo.py
CHANGED
|
@@ -3,27 +3,13 @@
|
|
| 3 |
from __future__ import annotations
|
| 4 |
|
| 5 |
import math
|
| 6 |
-
import os
|
| 7 |
import sys
|
| 8 |
from threading import Lock
|
| 9 |
from typing import Any, Dict, List
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
try:
|
| 15 |
-
from space_manufacturing.models import ManufacturingAction
|
| 16 |
-
from space_manufacturing.env import ManufacturingTaskEnv
|
| 17 |
-
from space_manufacturing.graders import ManufacturingTaskGrader
|
| 18 |
-
except ImportError:
|
| 19 |
-
try:
|
| 20 |
-
from ..models import ManufacturingAction # type: ignore
|
| 21 |
-
from ..env import ManufacturingTaskEnv # type: ignore
|
| 22 |
-
from ..graders import ManufacturingTaskGrader # type: ignore
|
| 23 |
-
except ImportError:
|
| 24 |
-
from models import ManufacturingAction # type: ignore
|
| 25 |
-
from env import ManufacturingTaskEnv # type: ignore
|
| 26 |
-
from graders import ManufacturingTaskGrader # type: ignore
|
| 27 |
|
| 28 |
|
| 29 |
# ββ geometry helpers βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
|
|
| 3 |
from __future__ import annotations
|
| 4 |
|
| 5 |
import math
|
|
|
|
| 6 |
import sys
|
| 7 |
from threading import Lock
|
| 8 |
from typing import Any, Dict, List
|
| 9 |
|
| 10 |
+
from ..models import ManufacturingAction
|
| 11 |
+
from ..env import ManufacturingTaskEnv
|
| 12 |
+
from ..graders import ManufacturingTaskGrader
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
|
| 15 |
# ββ geometry helpers βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|