SDK Python

O SDK oficial do CriptEnv para Python. Compatível com Python 3.8+ e frameworks como Django, Flask e FastAPI. Suporte completo a type hints.

Instalação

pip
pip install criptenv
poetry
poetry add criptenv
uv
uv add criptenv

Inicialização

1

Importe o SDK

Importação
from criptenv import CriptEnv
2

Crie uma instância

Inicialização
import os

env = CriptEnv(
    token=os.environ["CRIPTENV_TOKEN"],
    project_id="seu-project-id",
    environment="production",  # opcional, padrão: "production"
)
3

Descriptografe suas variáveis

Uso básico
# Carrega todas as variáveis
variables = env.load()

print(variables["DATABASE_URL"])
print(variables["API_SECRET"])

# Ou injeta no os.environ
env.load_to_process()

Referência da API

Construtor

ParâmetroTipoDescrição
tokenobrigatóriostrToken de API do CriptEnv.
project_idobrigatóriostrID do projeto no CriptEnv.
environmentstrAmbiente alvo. Padrão: "production".
cacheboolHabilitar cache local. Padrão: True.
cache_ttlintTempo de vida do cache em segundos. Padrão: 300.

Métodos

env.load()
# Retorna todas as variáveis como dicionário
variables: dict[str, str] = env.load()
env.get(key)
# Retorna uma variável específica
db_url: str = env.get("DATABASE_URL")
env.load_to_process()
# Injeta todas as variáveis no os.environ
env.load_to_process()
# Agora os.environ["DATABASE_URL"] está disponível

Exemplos Práticos

Com FastAPI

main.py
import os
from fastapi import FastAPI
from criptenv import CriptEnv

# Carrega variáveis antes de criar a aplicação
criptenv = CriptEnv(
    token=os.environ["CRIPTENV_TOKEN"],
    project_id="seu-project-id",
)
criptenv.load_to_process()

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/health")
async def health():
    db_url = os.environ.get("DATABASE_URL", "não configurada")
    return {"status": "ok", "db": bool(db_url)}

Com Django

settings.py
import os
from criptenv import CriptEnv

# Carrega variáveis do CriptEnv
criptenv = CriptEnv(
    token=os.environ["CRIPTENV_TOKEN"],
    project_id="seu-project-id",
    environment=os.environ.get("DJANGO_ENV", "production"),
)
criptenv.load_to_process()

# Agora as variáveis estão disponíveis
SECRET_KEY = os.environ["DJANGO_SECRET_KEY"]
DATABASE_URL = os.environ["DATABASE_URL"]
DEBUG = os.environ.get("DEBUG", "false").lower() == "true"

Com Flask

app.py
import os
from flask import Flask
from criptenv import CriptEnv

criptenv = CriptEnv(
    token=os.environ["CRIPTENV_TOKEN"],
    project_id="seu-project-id",
)
criptenv.load_to_process()

app = Flask(__name__)
app.config["SECRET_KEY"] = os.environ["FLASK_SECRET_KEY"]
app.config["DATABASE_URI"] = os.environ["DATABASE_URL"]

Usando async/await

async_usage.py
import asyncio
from criptenv import CriptEnv

async def main():
    env = CriptEnv(
        token="seu-token",
        project_id="seu-project-id",
    )

    # Carrega variáveis de forma assíncrona
    variables = await env.load_async()
    print(variables)

asyncio.run(main())

Info

Recomendamos criar o arquivo .env.local apenas com oCRIPTENV_TOKEN e deixar todos os outros secrets no CriptEnv. Isso mantém seu repositório seguro.