Skip to main content

Feature flag SDK for Mitra Python services

Project description

Mitra Feature Flags SDK Python

SDK assíncrono para carregar feature flags em serviços Python da Mitra e avaliá-las localmente. O SDK mantém um snapshot imutável em memória, preserva o último valor válido em falhas e usa o fallback declarado no código quando uma flag não existe.

Instalação

pip install mitra-feature-flags-sdk-python

Uso

from mitra_feature_flags import (
    BooleanFlag,
    FeatureFlagsClient,
    FeatureFlagsConfig,
    StringListFlag,
)

EMBEDDED_IDE = BooleanFlag("EMBEDDED_IDE", False)
TENANTS_IN_ROLLOUT = StringListFlag("TENANTS_IN_ROLLOUT")

feature_flags = FeatureFlagsClient(
    FeatureFlagsConfig(
        service_name="mitra-sandbox",
        environment="DEV",
        internal_secret=settings.internal_secret,
    )
)

feature_flags.start()

if feature_flags.is_enabled(EMBEDDED_IDE):
    ...

if feature_flags.contains(TENANTS_IN_ROLLOUT, tenant_id):
    ...

await feature_flags.close()

start() é síncrono: agenda o refresh em segundo plano e retorna sem bloquear o startup. is_enabled(), get_string_list() e contains() leem somente memória e nunca fazem I/O.

Configuração

Campo Obrigatório Default Descrição
service_name sim sem default Nome do serviço em lower kebab case, com até 100 caracteres.
environment sim sem default Ambiente da flag, normalizado para upper snake case, com até 100 caracteres.
internal_secret sim sem default Segredo usado no header interno. Nunca aparece no repr da configuração.
base_url não http://mitra-feature-flags.mitra.local:8080 URL do control plane.
refresh_interval_seconds não 60.0 Intervalo base entre atualizações.
refresh_jitter_seconds não 10.0 Variação aleatória adicional. Aceita zero.
connect_timeout_seconds não 0.2 Timeout para abrir a conexão HTTP.
read_timeout_seconds não 0.5 Timeout para receber a resposta HTTP.

Lifecycle com FastAPI

O SDK não depende de FastAPI, mas encaixa no lifecycle nativo da aplicação:

from contextlib import asynccontextmanager

from fastapi import FastAPI


@asynccontextmanager
async def lifespan(_app: FastAPI):
    feature_flags.start()
    yield
    await feature_flags.close()


app = FastAPI(lifespan=lifespan)

Contrato

  • Nomes de flags usam UPPER_SNAKE_CASE e têm até 100 caracteres.
  • Valores aceitos são boolean ou lista de strings.
  • O snapshot é filtrado pelo service_name e environment enviados ao control plane.
  • X-Internal-Secret nunca é logado.
  • ETag evita baixar snapshots sem alteração.
  • Payload inválido ou serviço indisponível preserva o último snapshot válido.

Desenvolvimento

ruff check .
mypy
pytest
python -m build
python -m twine check dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mitra_feature_flags_sdk_python-1.0.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file mitra_feature_flags_sdk_python-1.0.0.tar.gz.

File metadata

File hashes

Hashes for mitra_feature_flags_sdk_python-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1a1e18c0a1f8c6fd61aa3821852bf58c70fb29114dccd9f6346d6b9f7513fd1b
MD5 d20e84f063b470ec61a46caf004c7134
BLAKE2b-256 b9c0d8219793c3bcdda78bcacec7ab500479466bd7b8a008c014c0619009dc93

See more details on using hashes here.

Provenance

The following attestation bundles were made for mitra_feature_flags_sdk_python-1.0.0.tar.gz:

Publisher: release.yml on mitralab-dev/mitra-feature-flags-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mitra_feature_flags_sdk_python-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mitra_feature_flags_sdk_python-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 665d503bd4f78fbc3ee235568adecfcf3d465e9cb93714be0ef1e79523b93007
MD5 43503dd94573511e3bb62a7a2dc3d097
BLAKE2b-256 c4a4a23bcb050ab80dda3e87cedf4d157bdca80b510ef7c60876a81bd71d1383

See more details on using hashes here.

Provenance

The following attestation bundles were made for mitra_feature_flags_sdk_python-1.0.0-py3-none-any.whl:

Publisher: release.yml on mitralab-dev/mitra-feature-flags-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page