improve error messages, fix invalid value for TELEMETRY_ENABLED

This commit is contained in:
Benedikt Bartscher 2024-10-21 22:56:17 +02:00
parent 4ddc014d28
commit 27edea4320
No known key found for this signature in database
2 changed files with 16 additions and 10 deletions

View File

@ -157,11 +157,12 @@ def get_default_value_for_field(field: dataclasses.Field) -> Any:
)
def interpret_boolean_env(value: str) -> bool:
def interpret_boolean_env(value: str, field_name: str) -> bool:
"""Interpret a boolean environment variable value.
Args:
value: The environment variable value.
field_name: The field name.
Returns:
The interpreted value.
@ -176,14 +177,15 @@ def interpret_boolean_env(value: str) -> bool:
return True
elif value.lower() in false_values:
return False
raise EnvironmentVarValueError(f"Invalid boolean value: {value}")
raise EnvironmentVarValueError(f"Invalid boolean value: {value} for {field_name}")
def interpret_int_env(value: str) -> int:
def interpret_int_env(value: str, field_name: str) -> int:
"""Interpret an integer environment variable value.
Args:
value: The environment variable value.
field_name: The field name.
Returns:
The interpreted value.
@ -194,14 +196,17 @@ def interpret_int_env(value: str) -> int:
try:
return int(value)
except ValueError as ve:
raise EnvironmentVarValueError(f"Invalid integer value: {value}") from ve
raise EnvironmentVarValueError(
f"Invalid integer value: {value} for {field_name}"
) from ve
def interpret_path_env(value: str) -> Path:
def interpret_path_env(value: str, field_name: str) -> Path:
"""Interpret a path environment variable value.
Args:
value: The environment variable value.
field_name: The field name.
Returns:
The interpreted value.
@ -211,7 +216,7 @@ def interpret_path_env(value: str) -> Path:
"""
path = Path(value)
if not path.exists():
raise EnvironmentVarValueError(f"Path does not exist: {path}")
raise EnvironmentVarValueError(f"Path does not exist: {path} for {field_name}")
return path
@ -239,13 +244,13 @@ def interpret_env_var_value(
)
if field_type is bool:
return interpret_boolean_env(value)
return interpret_boolean_env(value, field_name)
elif field_type is str:
return value
elif field_type is int:
return interpret_int_env(value)
return interpret_int_env(value, field_name)
elif field_type is Path:
return interpret_path_env(value)
return interpret_path_env(value, field_name)
else:
raise ValueError(

View File

@ -249,7 +249,8 @@ class AppHarness:
return textwrap.dedent(source)
def _initialize_app(self):
os.environ["TELEMETRY_ENABLED"] = "" # disable telemetry reporting for tests
# disable telemetry reporting for tests
os.environ["TELEMETRY_ENABLED"] = "true"
self.app_path.mkdir(parents=True, exist_ok=True)
if self.app_source is not None:
app_globals = self._get_globals_from_signature(self.app_source)