Babu09's picture
Deploy MEIDNet Matter 0.1.0 (8793597)
9d8dacb verified
Raw History Blame Contribute Delete
3.07 kB
"""
meidnet-matter: the command line of MEIDNet Matter.
meidnet-matter serve [--host 127.0.0.1] [--port 8000] [--public] [--reload]
meidnet-matter version
meidnet-matter build-demo --data-dir data/perov5 --out examples/perov5 [--model ID=PATH ...]
Paths and limits come from the environment (see matter/settings.py); the flags of `serve` override MATTER_PUBLIC,
MATTER_RUN_ROOT, MATTER_CHECKPOINTS_DIR, MATTER_DEMO_DIR and MATTER_STATIC_DIR for that process.
"""
from __future__ import annotations
import argparse
import json
import os
import sys
def cmd_serve(a):
import uvicorn
for flag, var in (("public", "MATTER_PUBLIC"), ("run_root", "MATTER_RUN_ROOT"), ("checkpoints", "MATTER_CHECKPOINTS_DIR"),
("demo_dir", "MATTER_DEMO_DIR"), ("static_dir", "MATTER_STATIC_DIR")):
v = getattr(a, flag)
if v not in (None, False):
os.environ[var] = "1" if v is True else str(v)
uvicorn.run("matter.app:app", host=a.host, port=a.port, reload=a.reload, workers=1, log_level="info")
def cmd_version(a):
from matter.settings import Settings
from matter.version import build_info
s = Settings.from_env()
print(json.dumps(build_info(s.build_info, s.public), indent=1))
def cmd_build_demo(a):
from matter.demo_build import build
models = dict(m.split("=", 1) for m in a.model)
build(a.data_dir, models, a.out, skip_recoverability=a.skip_recoverability, limit=a.limit)
def main(argv=None):
p = argparse.ArgumentParser(prog="meidnet-matter", description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
sub = p.add_subparsers(dest="cmd", required=True)
s = sub.add_parser("serve", help="run the API and the web app")
s.add_argument("--host", default="127.0.0.1")
s.add_argument("--port", type=int, default=8000)
s.add_argument("--public", action="store_true", help="shared-host mode: capped budgets, sessions, masked errors")
s.add_argument("--reload", action="store_true")
s.add_argument("--run-root", dest="run_root", default=None)
s.add_argument("--checkpoints", default=None, help="folder with the model files")
s.add_argument("--demo-dir", dest="demo_dir", default=None)
s.add_argument("--static-dir", dest="static_dir", default=None)
s.set_defaults(fn=cmd_serve)
v = sub.add_parser("version", help="print what would run, as JSON")
v.set_defaults(fn=cmd_version)
b = sub.add_parser("build-demo", help="write the demo project's artefacts from the Perov-5 CSVs and a checkpoint")
b.add_argument("--data-dir", required=True)
b.add_argument("--out", required=True)
b.add_argument("--model", action="append", default=[], metavar="ID=PATH", help="a model to include (repeatable)")
b.add_argument("--skip-recoverability", action="store_true")
b.add_argument("--limit", type=int, default=None, help="only the first N rows of each split (a smoke test)")
b.set_defaults(fn=cmd_build_demo)
a = p.parse_args(argv)
a.fn(a)
if __name__ == "__main__":
sys.exit(main())