Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions tools/config_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,8 @@
]


def merge_config(base: Dict, override: Dict) -> Dict:
result = dict(base)
def merge_config(base: Dict[str, Any], override: Dict[str, Any]) -> Dict[str, Any]:
result: Dict[str, Any] = dict(base)
for key, value in override.items():
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
result[key] = merge_config(result[key], value)
Expand All @@ -182,17 +182,17 @@ def merge_config(base: Dict, override: Dict) -> Dict:
return result


def generate_config(env: str, overrides: Optional[Dict] = None) -> Dict:
config = dict(DEFAULT_CONFIG)
def generate_config(env: str, overrides: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
config: Dict[str, Any] = dict(DEFAULT_CONFIG)
if env in ENV_OVERRIDES:
config = merge_config(config, ENV_OVERRIDES[env])
if overrides:
config = merge_config(config, overrides)
return config


def mask_sensitive(config: Dict, prefix: str = "") -> Dict:
masked = {}
def mask_sensitive(config: Dict[str, Any], prefix: str = "") -> Dict[str, Any]:
masked: Dict[str, Any] = {}
for key, value in config.items():
full_key = f"{prefix}.{key}" if prefix else key
if full_key in SENSITIVE_KEYS:
Expand All @@ -204,19 +204,19 @@ def mask_sensitive(config: Dict, prefix: str = "") -> Dict:
return masked


def to_yaml(config: Dict) -> str:
def to_yaml(config: Dict[str, Any]) -> str:
if not HAS_YAML:
return "ERROR: PyYAML is not installed"
return yaml.dump(config, default_flow_style=False, sort_keys=False)


def to_json(config: Dict, pretty: bool = True) -> str:
def to_json(config: Dict[str, Any], pretty: bool = True) -> str:
if pretty:
return json.dumps(config, indent=2, default=str)
return json.dumps(config, default=str)


def to_toml(config: Dict) -> str:
def to_toml(config: Dict[str, Any]) -> str:
if not HAS_TOML:
return "ERROR: toml is not installed"

Expand Down Expand Up @@ -251,8 +251,8 @@ def flatten(config: Dict, prefix: str = "") -> Dict:
return "\n".join(lines)


def to_dotenv(config: Dict, prefix: str = "") -> str:
lines = [f"# Generated by config_generator.py", f"# Environment configuration", f"# Generated: {datetime.now().isoformat()}", ""]
def to_dotenv(config: Dict[str, Any], prefix: str = "") -> str:
lines: List[str] = [f"# Generated by config_generator.py", f"# Environment configuration", f"# Generated: {datetime.now().isoformat()}", ""]

def flatten(config: Dict, current_prefix: str = ""):
for key, value in config.items():
Expand All @@ -272,8 +272,8 @@ def flatten(config: Dict, current_prefix: str = ""):
return "\n".join(lines)


def to_k8s_configmap(config: Dict, name: str = "app-config") -> str:
data_lines = []
def to_k8s_configmap(config: Dict[str, Any], name: str = "app-config") -> str:
data_lines: List[str] = []
for key, value in flatten_for_k8s(config):
if isinstance(value, str) and not key.startswith("_"):
data_lines.append(f" {key}: {json.dumps(value)}")
Expand All @@ -289,8 +289,8 @@ def to_k8s_configmap(config: Dict, name: str = "app-config") -> str:
"""


def flatten_for_k8s(config: Dict, prefix: str = "") -> List[tuple]:
result = []
def flatten_for_k8s(config: Dict[str, Any], prefix: str = "") -> List[tuple[Any, Any]]:
result: List[tuple[Any, Any]] = []
for key, value in config.items():
full_key = f"{prefix}.{key}" if prefix else key
if isinstance(value, dict):
Expand All @@ -300,8 +300,8 @@ def flatten_for_k8s(config: Dict, prefix: str = "") -> List[tuple]:
return result


def parse_args():
parser = argparse.ArgumentParser(description="Configuration generator")
def parse_args() -> argparse.Namespace:
parser: argparse.ArgumentParser = argparse.ArgumentParser(description="Configuration generator")
parser.add_argument("--env", "-e", default="development",
choices=list(ENV_OVERRIDES.keys()),
help="Target environment")
Expand All @@ -316,9 +316,9 @@ def parse_args():
return parser.parse_args()


def main():
args = parse_args()
config = generate_config(args.env)
def main() -> int:
args: argparse.Namespace = parse_args()
config: Dict[str, Any] = generate_config(args.env)

if not args.show_sensitive:
display_config = mask_sensitive(config)
Expand Down
Loading