Adds dependency-tracking guards to server/CLI This makes it easier to install dependencies if they were missed.
diff --git a/burr/cli/__main__.py b/burr/cli/__main__.py index 87b8b47..0fecc26 100644 --- a/burr/cli/__main__.py +++ b/burr/cli/__main__.py
@@ -6,9 +6,18 @@ import webbrowser from contextlib import contextmanager -import click -import requests -from loguru import logger +from burr.integrations.base import require_plugin + +try: + import click + import requests + from loguru import logger +except ImportError as e: + require_plugin( + e, + ["click", "requests", "loguru"], + "start", + ) def _command(command: str, capture_output: bool) -> str:
diff --git a/burr/tracking/common/models.py b/burr/tracking/common/models.py index 008c2f2..ec84778 100644 --- a/burr/tracking/common/models.py +++ b/burr/tracking/common/models.py
@@ -13,7 +13,7 @@ require_plugin( e, ["pydantic"], - "tracking-client", + "tracking", )
diff --git a/burr/tracking/server/run.py b/burr/tracking/server/run.py index 0876d9c..d51c5bb 100644 --- a/burr/tracking/server/run.py +++ b/burr/tracking/server/run.py
@@ -2,20 +2,37 @@ from importlib.resources import files from typing import Sequence -import uvicorn -from fastapi import FastAPI, Request -from fastapi.staticfiles import StaticFiles -from starlette.templating import Jinja2Templates +from burr.integrations.base import require_plugin -from burr.tracking.server import backend, schema -from burr.tracking.server.schema import ApplicationLogs +try: + import uvicorn + from fastapi import FastAPI, Request + from fastapi.staticfiles import StaticFiles + from starlette.templating import Jinja2Templates + + from burr.tracking.server import backend, schema + from burr.tracking.server.schema import ApplicationLogs +except ImportError as e: + require_plugin( + e, + [ + "click", + "fastapi", + "uvicorn", + "pydantic", + "fastapi-pagination", + "aiofiles", + "requests", + "jinja2", + ], + "tracking", + ) app = FastAPI() backend = backend.LocalBackend() SERVE_STATIC = os.getenv("BURR_SERVE_STATIC", "true").lower() == "true" -print(SERVE_STATIC) @app.get("/api/v0/projects", response_model=Sequence[schema.Project])