Skip to main content

Confidence provider for the OpenFeature SDK

Project description

Python Confidence SDK

This repo contains the Confidence Python SDK and the Confidence OpenFeature provider. We recommend using the OpenFeature Python SDK to access Confidence feature flags.

To learn more about the basic concepts (flags, targeting key, evaluation contexts), the OpenFeature reference documentation or the getting started guide can be useful.

Install

pip install

pip install spotify-confidence-sdk==3.0.0

This installs the full SDK including telemetry support and is the suggested .

Minimal installation (without telemetry)

For environments where you cannot use protobuf, you can install without protobuf (which disables telemetry):

pip install spotify-confidence-sdk==3.0.0 --no-deps
pip install requests==3.0.0 openfeature-sdk==0.4.2 typing_extensions==4.9.0 httpx==0.27.2

requirements.txt

# Full installation (recommended)
spotify-confidence-sdk==3.0.0

pip install -r requirements.txt

Usage

Creating the SDK

The OpenFeature provider is created by using the SDK. More details on how to setup the SDK can be found here.

from confidence.confidence import Confidence
from openfeature import api
from confidence.openfeature_provider import ConfidenceOpenFeatureProvider

provider = ConfidenceOpenFeatureProvider(Confidence(api_client, timeout_ms=500))
api.set_provider(provider)

Resolving flags

Flag values are evaluated remotely and returned to the application by using the OpenFeature client:

from openfeature import api

client = api.get_client()
user_identifier = "" # your identifier for a specific user

flag_value = client.get_string_value("flag-name.property-name", "my-default-value", api.EvaluationContext(attributes={"user_id": user_identifier}))
print(f"Flag value: {flag_value}")

Configuration options

The SDK can be configured with several options:

from confidence.confidence import Confidence, Region

confidence = Confidence(
    client_secret="CLIENT_TOKEN",
    region=Region.EU,  # Optional: defaults to GLOBAL
    timeout_ms=5000,  # Optional: specify timeout in milliseconds for network requests (default: 10000ms)
    custom_resolve_base_url="https://my-custom-endpoint.org" # we will append /v1/flags:resolve to this for the resolve endpoint.
)

Logging

The SDK includes built-in logging functionality to help with debugging and monitoring. By default, the SDK creates a logger named confidence_logger that outputs to the console with DEBUG level logging enabled.

Default logging behavior

When you create a Confidence client without specifying a logger, debug-level logging is automatically enabled:

from confidence.confidence import Confidence

# Debug logging is enabled by default
confidence = Confidence("CLIENT_TOKEN")

This will output log messages such as flag resolution details, error messages, and debug information to help troubleshoot issues.

Using a custom logger

You can provide your own logger instance to customize the logging behavior:

import logging
from confidence.confidence import Confidence

# Create a custom logger with INFO level (less verbose)
custom_logger = logging.getLogger("my_confidence_logger")
custom_logger.setLevel(logging.INFO)

confidence = Confidence("CLIENT_TOKEN", logger=custom_logger)

Disabling debug logging

To reduce log verbosity, you can configure a logger with a higher log level:

import logging
from confidence.confidence import Confidence

# Create a logger that only shows warnings and errors
quiet_logger = logging.getLogger("quiet_confidence_logger")
quiet_logger.setLevel(logging.WARNING)

confidence = Confidence("CLIENT_TOKEN", logger=quiet_logger)

Telemetry

The SDK includes telemetry functionality that helps monitor SDK performance and usage. By default, telemetry is enabled and collects metrics (anonymously) such as resolve latency and request status. This data is used by the Confidence team to improve the product, and in certain cases it is also available to the SDK adopters.

Telemetry behavior

  • Default installation: Telemetry is enabled automatically when protobuf dependencies are available
  • Minimal installation: Telemetry is automatically disabled when protobuf is not installed (see minimal installation)
  • Manual control: You can explicitly disable telemetry even when dependencies are available

Disabling telemetry

You can explicitly disable telemetry by setting disable_telemetry=True when initializing the Confidence client:

confidence = Confidence("CLIENT_TOKEN",
    disable_telemetry=True
)

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

spotify_confidence_sdk-3.0.0.tar.gz (42.8 kB view details)

Uploaded Source

Built Distribution

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

spotify_confidence_sdk-3.0.0-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file spotify_confidence_sdk-3.0.0.tar.gz.

File metadata

  • Download URL: spotify_confidence_sdk-3.0.0.tar.gz
  • Upload date:
  • Size: 42.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for spotify_confidence_sdk-3.0.0.tar.gz
Algorithm Hash digest
SHA256 fb7bfe24725f1539b1cbea56a2748db9e5de566b06b27d57c16315d12fdf9ea5
MD5 acf10fa63015ae5a1ec45f65b93ed822
BLAKE2b-256 9e21907b189f7c829597773c69cefa352b28e1f248d54087582a6c5dccc4f073

See more details on using hashes here.

Provenance

The following attestation bundles were made for spotify_confidence_sdk-3.0.0.tar.gz:

Publisher: release-please.yaml on spotify/confidence-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 spotify_confidence_sdk-3.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for spotify_confidence_sdk-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f9554e8f138cf3a97014c35246752c321f359bf3db2bf322912f1e8652aa273
MD5 b865e0a625222d68ac3d906b01a2e1de
BLAKE2b-256 5f61803e6664d570e21bfcb3294ce5ca246e4d3b1875b6005321e053376fa397

See more details on using hashes here.

Provenance

The following attestation bundles were made for spotify_confidence_sdk-3.0.0-py3-none-any.whl:

Publisher: release-please.yaml on spotify/confidence-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