openenv-secaudit / tools /check_space_ready.py
dexter-2k's picture
Upload folder using huggingface_hub
ee929ba verified
Raw
History Blame Contribute Delete
2.9 kB
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from server.app import app
from server.environment import SecretsAuditEnvironment
def require(condition: bool, message: str) -> None:
if not condition:
raise SystemExit(message)
def main() -> None:
readme = (ROOT / "README.md").read_text(encoding="utf-8")
dockerfile = (ROOT / "Dockerfile").read_text(encoding="utf-8")
dockerignore = (ROOT / ".dockerignore").read_text(encoding="utf-8")
openenv_manifest = (ROOT / "openenv.yaml").read_text(encoding="utf-8")
pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8")
uv_lock = (ROOT / "uv.lock").read_text(encoding="utf-8")
require("sdk: docker" in readme, "README.md is missing Hugging Face docker metadata.")
require("app_port: 7860" in readme, "README.md is missing app_port: 7860.")
require("spec_version: 1" in openenv_manifest, "openenv.yaml is missing spec_version: 1.")
require("runtime: fastapi" in openenv_manifest, "openenv.yaml must declare runtime: fastapi.")
require("app: server.app:app" in openenv_manifest, "openenv.yaml must point to server.app:app.")
require("port: 7860" in openenv_manifest, "openenv.yaml must declare port 7860.")
require("[project]" in pyproject, "pyproject.toml is missing a [project] table.")
require('name = "openenv-secrets-audit-env"' in pyproject, "pyproject.toml is missing the expected project name.")
require('requires-python = ">=3.11"' in pyproject, "pyproject.toml must declare requires-python >=3.11.")
require("[project.scripts]" in pyproject, "pyproject.toml is missing a [project.scripts] table.")
require('server = "server.app:main"' in pyproject, 'pyproject.toml must define server = "server.app:main".')
require("openenv-core>=0.2.0" in pyproject or "openenv>=0.2.0" in pyproject, "pyproject.toml must include openenv-core>=0.2.0 or openenv>=0.2.0.")
require("version = 1" in uv_lock or "version = 2" in uv_lock or "version = 3" in uv_lock, "uv.lock is missing or invalid.")
require("EXPOSE 7860" in dockerfile, "Dockerfile must expose port 7860.")
require("uvicorn server.app:app" in dockerfile or "uvicorn server.app:app" in (ROOT / "hf_space_entrypoint.sh").read_text(encoding="utf-8"), "Space startup command is missing uvicorn.")
require(".env" in dockerignore, ".dockerignore must exclude .env.")
require("runtime/" in dockerignore, ".dockerignore must exclude runtime/.")
require(app.title == "SecretsAuditEnv", "FastAPI app failed to import correctly.")
env = SecretsAuditEnvironment()
tasks = env.list_tasks()
require(len(tasks) == 13, f"Expected 13 tasks, found {len(tasks)}.")
print("Space readiness checks passed.")
if __name__ == "__main__":
main()