-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathruntime_config_support.py
More file actions
73 lines (64 loc) · 2.5 KB
/
runtime_config_support.py
File metadata and controls
73 lines (64 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from __future__ import annotations
import os
from dataclasses import dataclass
from pathlib import Path
from quant_platform_kit.common.runtime_config import (
resolve_bool_value,
resolve_strategy_runtime_path_settings,
)
from strategy_registry import (
SCHWAB_PLATFORM,
resolve_strategy_definition,
resolve_strategy_metadata,
)
from us_equity_strategies import get_strategy_catalog
DEFAULT_NOTIFY_LANG = "en"
@dataclass(frozen=True)
class PlatformRuntimeSettings:
strategy_profile: str
strategy_display_name: str
strategy_domain: str
notify_lang: str
dry_run_only: bool
feature_snapshot_path: str | None = None
feature_snapshot_manifest_path: str | None = None
strategy_config_path: str | None = None
strategy_config_source: str | None = None
strategy_plugin_mounts_json: str | None = None
def resolve_strategy_profile(raw_value: str | None = None) -> str:
return resolve_strategy_definition(
raw_value if raw_value is not None else os.getenv("STRATEGY_PROFILE"),
platform_id=SCHWAB_PLATFORM,
).profile
def load_platform_runtime_settings() -> PlatformRuntimeSettings:
strategy_definition = resolve_strategy_definition(
os.getenv("STRATEGY_PROFILE"),
platform_id=SCHWAB_PLATFORM,
)
strategy_metadata = resolve_strategy_metadata(
strategy_definition.profile,
platform_id=SCHWAB_PLATFORM,
)
runtime_paths = resolve_strategy_runtime_path_settings(
strategy_catalog=get_strategy_catalog(),
strategy_definition=strategy_definition,
strategy_metadata=strategy_metadata,
platform_env_prefix="SCHWAB",
env=os.environ,
repo_root=Path(__file__).resolve().parent,
)
return PlatformRuntimeSettings(
strategy_profile=runtime_paths.strategy_profile,
strategy_display_name=runtime_paths.strategy_display_name,
strategy_domain=runtime_paths.strategy_domain,
notify_lang=os.getenv("NOTIFY_LANG", DEFAULT_NOTIFY_LANG),
dry_run_only=resolve_bool_value(os.getenv("SCHWAB_DRY_RUN_ONLY")),
feature_snapshot_path=runtime_paths.feature_snapshot_path,
feature_snapshot_manifest_path=runtime_paths.feature_snapshot_manifest_path,
strategy_config_path=runtime_paths.strategy_config_path,
strategy_config_source=runtime_paths.strategy_config_source,
strategy_plugin_mounts_json=(
os.getenv("SCHWAB_STRATEGY_PLUGIN_MOUNTS_JSON")
or os.getenv("STRATEGY_PLUGIN_MOUNTS_JSON")
),
)