SDK Python

Carga secretos directamente en una aplicación Python al iniciarse.

Python SDK

Carga secretos directamente en tu aplicación Python al inicio. Configuración en una línea o control detallado con el constructor fluido.

Instalación

uv add envilder
# or
pip install envilder

Inicio rápido: una línea

Carga secretos desde un archivo de mapeo e inyéctalos en el entorno:

from envilder import Envilder

Envilder.load('envilder.json')

Carga basada en entorno

Recomendado para aplicaciones multi-entorno. Mapea cada entorno a su archivo de secretos:

from envilder import Envilder
import os

env = os.getenv('APP_ENV', 'development')

Envilder.load(env, {
    'production': 'prod-secrets.json',
    'development': 'dev-secrets.json',
    'test': None,
})

Resolver sin inyectar

Obtén secretos como un diccionario sin modificar el entorno:

secrets = Envilder.resolve_file('envilder.json')

Constructor fluido con sobreescrituras

Sobreescribe la configuración del proveedor de forma programática con la API fluida:

from envilder import Envilder, SecretProviderType

secrets = (
    Envilder.from_map_file('envilder.json')
    .with_provider(SecretProviderType.AZURE)
    .with_vault_url('https://my-vault.vault.azure.net')
    .resolve()
)

Validación de secretos

Validación opcional que asegura que todos los secretos resueltos tienen valores no vacíos:

from envilder import Envilder, validate_secrets

secrets = Envilder.resolve_file('envilder.json')
validate_secrets(secrets)  # raises SecretValidationError if any value is empty

Validación del contrato del fichero de mapeo

Comprueba, sin cargar nada y sin usar ni mostrar ningún valor, que el fichero de mapeo es válido y que cada secreto declarado existe con las credenciales actuales: la misma comprobación que envilder validate. Los errores de validación esperados se devuelven en el resultado en lugar de lanzarse; un fichero de mapeo inexistente sí lanza un error. Cada clave informa exists, missing, access_denied, authentication_failed o provider_error:

Consulta la referencia de envilder validate para los estados y los permisos que necesita la comprobación →

from envilder import Envilder, SecretExistenceStatus

result = Envilder.from_map_file('envilder.json').validate_contract()
if not result.is_valid:
    for error in result.map_file_errors:
        print(f'{error.key}: {error.message}')
    for key in result.keys:
        if key.status != SecretExistenceStatus.EXISTS:
            print(f'{key.variable} ({key.path}): {key.status.value}')

Para que la carga falle, activa la validación del contrato en el builder. La comprobación se ejecuta una vez antes de resolver y el error nombra las claves que fallan, nunca sus valores. Está desactivada por defecto, así que una carga normal no hace ninguna llamada extra al proveedor. A diferencia de la validación de secretos, que revisa los valores resueltos, revisa el fichero de mapeo y las claves antes de resolver:

Envilder.from_map_file('envilder.json').with_contract_validation().inject()
# raises ContractValidationError
💡
Ejemplos ejecutables. Un proyecto pytest con Testcontainers que resuelve un archivo de mapeo contra AWS SSM y Azure Key Vault (emulados con LocalStack y Lowkey Vault) y pasa los valores a los contenedores, sin ningún archivo .env: python-testcontainers

Documentación completa →