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.2

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.2 --no-deps
pip install requests==3.0.2 openfeature-sdk==0.4.2 typing_extensions==4.9.0 httpx==0.27.2

requirements.txt

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

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.2.tar.gz (43.3 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.2-py3-none-any.whl (58.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spotify_confidence_sdk-3.0.2.tar.gz
  • Upload date:
  • Size: 43.3 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.2.tar.gz
Algorithm Hash digest
SHA256 cd96233798729e8a94a14a121d9f07b23a36e3979bac9448b3b63973ee05d1c8
MD5 5e3fca6f302c2c7cf21fc831dca6bf61
BLAKE2b-256 c917cb125dda0b01be0e5284d2f485312eac4d8935355851bb60dfc1c37a463c

See more details on using hashes here.

Provenance

The following attestation bundles were made for spotify_confidence_sdk-3.0.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for spotify_confidence_sdk-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3249e570a5b3331c41f80627d400fefcc9eb658243146b109bc5f6c92a2fad26
MD5 f967950c206dffad4d70e2aa417e0a21
BLAKE2b-256 2e2439f5bd4c04a8963f8168a4e4b4cb1ac9487e2b392cccb94262134b69cb52

See more details on using hashes here.

Provenance

The following attestation bundles were made for spotify_confidence_sdk-3.0.2-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