GitLab Repo

amachine.cli.up

 1import webbrowser
 2from pathlib import Path
 3import threading
 4import uvicorn
 5
 6
 7def _open_browser(url: str, delay: float = 1.0):
 8    def _open():
 9        import time
10        time.sleep(delay)
11        webbrowser.open(url)
12    threading.Thread(target=_open, daemon=True).start()
13
14def up(
15    experiments: Path,
16    host: str = "127.0.0.1",
17    port: int = 8000,
18    no_browser: bool = False,
19) -> None:
20    """Start the amachine analysis server."""
21    experiments = experiments.resolve()
22
23    if not experiments.exists():
24        raise SystemExit(f"Error: experiments directory not found: {experiments}")
25
26    from ..am_app.am_server import create_app
27
28    app = create_app(experiments)
29
30    if not no_browser:
31         _open_browser(f"http://{host}:{port}")
32
33    uvicorn.run(app, host=host, port=port)
34
35
36def main() -> None:
37
38    import argparse
39
40    parser = argparse.ArgumentParser(description="Start the amachine analysis server.")
41    parser.add_argument("experiments", type=Path, help="Path to experiments directory")
42    parser.add_argument("--host", default="127.0.0.1")
43    parser.add_argument("--port", type=int, default=8000)
44    parser.add_argument("--no-browser", action="store_true")
45
46    args = parser.parse_args()
47    up(args.experiments, args.host, args.port, args.no_browser)
48
49
50if __name__ == "__main__":
51    main()
def up( experiments: pathlib.Path, host: str = '127.0.0.1', port: int = 8000, no_browser: bool = False) -> None:
15def up(
16    experiments: Path,
17    host: str = "127.0.0.1",
18    port: int = 8000,
19    no_browser: bool = False,
20) -> None:
21    """Start the amachine analysis server."""
22    experiments = experiments.resolve()
23
24    if not experiments.exists():
25        raise SystemExit(f"Error: experiments directory not found: {experiments}")
26
27    from ..am_app.am_server import create_app
28
29    app = create_app(experiments)
30
31    if not no_browser:
32         _open_browser(f"http://{host}:{port}")
33
34    uvicorn.run(app, host=host, port=port)

Start the amachine analysis server.

def main() -> None:
37def main() -> None:
38
39    import argparse
40
41    parser = argparse.ArgumentParser(description="Start the amachine analysis server.")
42    parser.add_argument("experiments", type=Path, help="Path to experiments directory")
43    parser.add_argument("--host", default="127.0.0.1")
44    parser.add_argument("--port", type=int, default=8000)
45    parser.add_argument("--no-browser", action="store_true")
46
47    args = parser.parse_args()
48    up(args.experiments, args.host, args.port, args.no_browser)