Python SDK
Install
pip install calveryRequires Python 3.8+.
Quick start
import osfrom calvery import Calvery
c = Calvery(token=os.environ["CVSM_TOKEN"], team="acme-corp")
db_url = c.get("DATABASE_URL")Constructor
Calvery( token: str, # REQUIRED team: str, # REQUIRED — slug atau UUID *, base_url: str = "https://api.calvery.xyz", environment: str = "production", cache_ttl: float = 30.0, # detik — 0 untuk disable max_retries: int = 3, timeout: float = 10.0, # HTTP timeout per attempt)Methods
get(name, *, environment=None) -> str
val = c.get("STRIPE_KEY")staging = c.get("STRIPE_KEY", environment="staging")Raise CalverySecretNotFoundError kalau secret tidak ada.
get_all(*, environment=None) -> dict[str, str]
for k, v in c.get_all().items(): print(k, v)inject(*, environment=None, overwrite=False) -> list[str]
Inject ke os.environ. Return list nama yang di-inject.
clear_cache()
Errors
from calvery import ( CalveryError, CalveryAuthError, CalverySecretNotFoundError, CalveryNetworkError, CalveryServerError,)
try: val = c.get("FOO")except CalveryAuthError: # Token expired/revoked ...except CalverySecretNotFoundError: # Secret belum dibuat ...Framework recipes
Django
import osfrom calvery import Calvery
Calvery(token=os.environ["CVSM_TOKEN"], team="acme").inject()
DATABASE_URL = os.environ["DATABASE_URL"]SECRET_KEY = os.environ["DJANGO_SECRET_KEY"]FastAPI
from contextlib import asynccontextmanagerfrom fastapi import FastAPIfrom calvery import Calvery
@asynccontextmanagerasync def lifespan(app: FastAPI): Calvery(token=os.environ["CVSM_TOKEN"], team="acme").inject() yield
app = FastAPI(lifespan=lifespan)Flask
from flask import Flaskfrom calvery import Calvery
Calvery(token=os.environ["CVSM_TOKEN"], team="acme").inject()
app = Flask(__name__)Celery worker
from celery import Celeryfrom calvery import Calvery
# Inject sebelum Celery app di-init biar BROKER_URL dll. tersediaCalvery(token=os.environ["CVSM_TOKEN"], team="acme").inject()
app = Celery("myapp", broker=os.environ["CELERY_BROKER_URL"])Jupyter / data science
from calvery import Calvery
c = Calvery(token="cvsm_...", team="data-team", environment="staging")conn_str = c.get("WAREHOUSE_URL")Self-host
c = Calvery( token=os.environ["CVSM_TOKEN"], team="internal", base_url="https://vault.mycompany.internal",)Type hints
Full type hints. Dengan mypy --strict:
from calvery import Calvery
c: Calvery = Calvery(token="...", team="acme")val: str = c.get("DATABASE_URL")all_secrets: dict[str, str] = c.get_all()