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 envilderInicio 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 emptyValidació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:
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 ContractValidationErrorpython-testcontainers