SDK Python

Carrega secrets directament en una aplicació Python en iniciar-se.

Python SDK

Carrega secrets directament a la teva aplicació Python a l'inici. Configuració en una línia o control detallat amb el constructor fluent.

Instal·lació

uv add envilder
# or
pip install envilder

Inici ràpid: una línia

Carrega secrets des d'un fitxer de mapeig i injecta'ls a l'entorn:

from envilder import Envilder

Envilder.load('envilder.json')

Càrrega basada en entorn

Recomanat per a aplicacions multi-entorn. Mapeja cada entorn al seu fitxer de secrets:

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,
})

Resoldre sense injectar

Obté secrets com un diccionari sense modificar l'entorn:

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

Constructor fluent amb sobreescriptures

Sobreescriu la configuració del proveïdor de manera programàtica amb l'API fluent:

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ó de secrets

Validació opcional que assegura que tots els secrets resolts tenen valors no buits:

from envilder import Envilder, validate_secrets

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

Validació del contracte del fitxer de mapatge

Comprova, sense carregar res i sense fer servir ni mostrar cap valor, que el fitxer de mapatge és vàlid i que cada secret declarat existeix amb les credencials actuals: la mateixa comprovació que envilder validate. Els errors de validació esperats es retornen al resultat en lloc de llançar-se; un fitxer de mapatge inexistent sí que llança un error. Cada clau informa exists, missing, access_denied, authentication_failed o provider_error:

Consulta la referència d'envilder validate per als estats i els permisos que necessita la comprovació →

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}')

Per fer fallar la càrrega, activa la validació del contracte al builder. La comprovació s'executa una vegada abans de resoldre i l'error anomena les claus que fallen, mai els seus valors. Està desactivada per defecte, així que una càrrega normal no fa cap crida extra al proveïdor. A diferència de la validació de secrets, que revisa els valors resolts, revisa el fitxer de mapatge i les claus abans de resoldre:

Envilder.from_map_file('envilder.json').with_contract_validation().inject()
# raises ContractValidationError
💡
Exemples executables. Un projecte pytest amb Testcontainers que resol un fitxer de mapeig contra AWS SSM i Azure Key Vault (emulats amb LocalStack i Lowkey Vault) i passa els valors als contenidors, sense cap fitxer .env: python-testcontainers

Documentació completa →