af9ad48c9b
- config_from_env_py_infra: dataclass + field metadata, tipos str/int/float/bool/list - dotenv_load_py_infra: parser .env con semantica de no-sobreescritura - 15 tests unitarios Python, todos PASS - registry.db actualizado con fn index (685 funciones, 109 tipos) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.1 KiB
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. |
|
false | error_go_core |
|
|
instancia del dataclass con todos los campos poblados desde env o defaults | true |
|
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"].