Skip to content

Commit 14dba10

Browse files
committed
Enhance configuration logging and update environment variable handling in config.py. Added logging for function calls and environment variable overrides. Updated paths to ensure compatibility with string handling. Also, added job configuration examples in .example.env.
1 parent 0d29876 commit 14dba10

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

.example.env

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,5 @@ ANOMSTACK_DASHBOARD_PORT = 5001
130130
POSTHOG_API_KEY=
131131

132132
# example to enable some jobs via env vars
133-
# ANOMSTACK__PYTHON_INGEST_SIMPLE__INGEST_DEFAULT_SCHEDULE_STATUS=RUNNING
133+
# ANOMSTACK__PYTHON_INGEST_SIMPLE__INGEST_DEFAULT_SCHEDULE_STATUS=RUNNING
134+
# ANOMSTACK__PYTHON_INGEST_SIMPLE__TRAIN_DEFAULT_SCHEDULE_STATUS=RUNNING

anomstack/config.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from pathlib import Path
77

88
import yaml
9+
from dagster import get_dagster_logger
910

1011
# environment variables that can be used to override the configuration.
1112
env_vars = ["ANOMSTACK_GCP_PROJECT_ID", "ANOMSTACK_MODEL_PATH", "ANOMSTACK_TABLE_KEY"]
@@ -23,35 +24,37 @@ def get_specs(metrics_dir: str = "./metrics"):
2324
Returns:
2425
dict: Dictionary of processed metric configurations.
2526
"""
26-
metrics_dir = Path(metrics_dir).resolve()
27-
defaults_dir = metrics_dir / "defaults"
28-
examples_dir = metrics_dir / "examples"
27+
logger = get_dagster_logger()
28+
logger.info("get_specs called")
29+
metrics_dir_path = Path(metrics_dir).resolve()
30+
defaults_dir = metrics_dir_path / "defaults"
31+
examples_dir = metrics_dir_path / "examples"
2932
specs = {}
3033

3134
# Load defaults
32-
defaults_file = defaults_dir / "defaults.yaml"
33-
if not defaults_file.exists():
35+
defaults_file = str(defaults_dir / "defaults.yaml")
36+
if not Path(defaults_file).exists():
3437
raise FileNotFoundError(f"Defaults file not found: {defaults_file}")
3538
with open(defaults_file, "r", encoding="utf-8") as file:
3639
defaults = yaml.safe_load(file)
3740

3841
def process_yaml_file(yaml_file: str):
42+
logger.info(f"process_yaml_file called for {yaml_file}")
3943
with open(yaml_file, "r", encoding="utf-8") as f:
4044
metric_specs = yaml.safe_load(f)
4145
metric_batch = metric_specs["metric_batch"]
4246
merged_specs = {**defaults, **metric_specs}
43-
merged_specs["metrics_dir"] = str(metrics_dir)
47+
merged_specs["metrics_dir"] = str(metrics_dir_path)
4448
if merged_specs.get("disable_batch"):
4549
return
4650

4751
# Apply global environment variable overrides
4852
for env_var in env_vars:
4953
if env_var in os.environ:
5054
param_key = env_var.replace("ANOMSTACK_", "").lower()
51-
# Check if the parameter exists in either YAML file
5255
yaml_value = metric_specs.get(param_key) or defaults.get(param_key)
53-
# Always override with the environment variable value
5456
merged_specs[param_key] = os.getenv(env_var)
57+
logger.info(f"ENV OVERRIDE: {env_var} replaces {param_key} (was: {yaml_value}, now: {merged_specs[param_key]})")
5558

5659
# Apply metric batch-specific environment variable overrides
5760
# Pattern: ANOMSTACK__<METRIC_BATCH>__<PARAM>
@@ -61,13 +64,14 @@ def process_yaml_file(yaml_file: str):
6164
if env_var.startswith(f"ANOMSTACK__{metric_batch_upper}__"):
6265
# Extract the parameter name from the environment variable
6366
param_key = env_var.replace(f"ANOMSTACK__{metric_batch_upper}__", "").lower()
64-
# Do NOT convert underscores to hyphens; keep as is to match YAML keys
67+
old_value = merged_specs.get(param_key, None)
6568
merged_specs[param_key] = value
69+
logger.info(f"ENV BATCH OVERRIDE: {env_var} replaces {param_key} (was: {old_value}, now: {value})")
6670

6771
specs[metric_batch] = merged_specs
6872

6973
# Walk through the metrics directory and process YAML files
70-
for root, dirs, files in os.walk(metrics_dir):
74+
for root, dirs, files in os.walk(str(metrics_dir_path)):
7175
# Skip the examples directory if the environment variable is set
7276
if (
7377
os.getenv("ANOMSTACK_IGNORE_EXAMPLES") == "yes"
@@ -78,7 +82,7 @@ def process_yaml_file(yaml_file: str):
7882
if yaml_file == "defaults.yaml":
7983
continue
8084
if yaml_file.endswith(".yaml"):
81-
yaml_path = Path(root) / yaml_file
85+
yaml_path = str(Path(root) / yaml_file)
8286
process_yaml_file(yaml_path)
8387

8488
return specs

0 commit comments

Comments
 (0)