Skip to content

Commit 1a8396d

Browse files
committed
refactor: don't show entire stacktrace when missing env vars
1 parent a1ce923 commit 1a8396d

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

questionpy_sdk/commands/run.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from questionpy_sdk.constants import DEFAULT_STATE_STORAGE_PATH
1313
from questionpy_sdk.watcher import Watcher
1414
from questionpy_sdk.webserver import WebServer
15+
from questionpy_sdk.webserver.errors import EnvironmentVariablesMissingError
1516
from questionpy_sdk.webserver.server import WebServerArgs
1617
from questionpy_server.worker.impl.subprocess import SubprocessWorker
1718
from questionpy_server.worker.impl.thread import ThreadWorker
@@ -94,4 +95,8 @@ def run(
9495
else:
9596
coro = async_run(webserver_args)
9697

97-
asyncio.run(coro)
98+
try:
99+
asyncio.run(coro)
100+
except EnvironmentVariablesMissingError as e:
101+
msg = f"The following environment variables are required to run the package: {', '.join(e.missing)}"
102+
raise click.ClickException(msg) from e

questionpy_sdk/webserver/errors.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ class MissingAttemptDataError(MissingStateError):
3636
message = "The attempt data is missing."
3737

3838

39+
class EnvironmentVariablesMissingError(Exception):
40+
def __init__(self, missing: set[str]) -> None:
41+
self.missing = missing
42+
43+
3944
@dataclass(config=ConfigDict(use_attribute_docstrings=True))
4045
class DetailedServerError:
4146
"""Represents a server-side error serialized for client display."""

questionpy_sdk/webserver/server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from questionpy_server.worker.runtime.package_location import PackageLocation
2525

2626
from .constants import API_PATH_PREFIX, USE_VITE_DEV_SERVER, WEBSERVER_KEY
27+
from .errors import EnvironmentVariablesMissingError
2728
from .manifest import read_manifest
2829

2930
log = logging.getLogger("questionpy-sdk:web-server")
@@ -63,8 +64,7 @@ async def __aenter__(self) -> Self:
6364
# Check if required environment variables are set
6465
requested_environment_variables = self._manifest.environment_variables or set()
6566
if missing_environment_variables := requested_environment_variables - os.environ.keys():
66-
msg = f"Required environment variables not set: {missing_environment_variables}"
67-
raise ValueError(msg)
67+
raise EnvironmentVariablesMissingError(missing=missing_environment_variables)
6868

6969
# Assemble worker permissions
7070
permissions = CompletePackagePermissions()

0 commit comments

Comments
 (0)