Files
fn_registry/python/functions/infra/config_from_env.md
T
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

2.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
config_from_env function py infra 1.0.0 impure config_from_env(target_class: type) -> object Crea una instancia de un dataclass poblada desde variables de entorno usando field metadata (env, required, default, secret). Soporta str, int, float, bool, list. Acumula todos los errores antes de lanzar ValueError.
config
env
dataclass
infra
python
pendiente-usar
false error_go_core
os
dataclasses
name desc
target_class clase dataclass con field metadata declarando env, required, default y/o secret por cada campo
instancia del dataclass con todos los campos poblados desde env o defaults true
populate string desde env
populate int con conversion
populate bool true
populate float field
populate list comma separated
default usado cuando env no seteada
required sin valor lanza error
no dataclass lanza type error
python/functions/infra/config_from_env_test.py python/functions/infra/config_from_env.py

Ejemplo

from dataclasses import dataclass, field
from config_from_env import config_from_env

@dataclass
class AppConfig:
    host: str = field(default="localhost", metadata={"env": "HOST", "default": "localhost"})
    port: int = field(default=8080,        metadata={"env": "PORT", "default": "8080", "required": True})
    api_key: str = field(default="",       metadata={"env": "API_KEY", "required": True, "secret": True})
    tags: list = field(default_factory=list, metadata={"env": "TAGS", "default": "prod,stable"})

cfg = config_from_env(AppConfig)
print(cfg.port)   # 8080 o el valor de PORT

Notas

Solo stdlib (os, dataclasses). Conversion de tipos: str sin cambio, int/float con parseo, bool desde "1"/"true"/"yes", list desde split por coma. El tag secret no tiene efecto en runtime. La funcion inspecciona todos los fields via dataclasses.fields() y solo procesa los que tienen metadata["env"].