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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb7bfe24725f1539b1cbea56a2748db9e5de566b06b27d57c16315d12fdf9ea5
|
|
| MD5 |
acf10fa63015ae5a1ec45f65b93ed822
|
|
| BLAKE2b-256 |
9e21907b189f7c829597773c69cefa352b28e1f248d54087582a6c5dccc4f073
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spotify_confidence_sdk-3.0.0.tar.gz -
Subject digest:
fb7bfe24725f1539b1cbea56a2748db9e5de566b06b27d57c16315d12fdf9ea5 - Sigstore transparency entry: 1262377421
- Sigstore integration time:
-
Permalink:
spotify/confidence-sdk-python@4bcc003cf929058f32a04ba1d648e8a8624512e5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/spotify
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yaml@4bcc003cf929058f32a04ba1d648e8a8624512e5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file spotify_confidence_sdk-3.0.0-py3-none-any.whl.
File metadata
- Download URL: spotify_confidence_sdk-3.0.0-py3-none-any.whl
- Upload date:
- Size: 58.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f9554e8f138cf3a97014c35246752c321f359bf3db2bf322912f1e8652aa273
|
|
| MD5 |
b865e0a625222d68ac3d906b01a2e1de
|
|
| BLAKE2b-256 |
5f61803e6664d570e21bfcb3294ce5ca246e4d3b1875b6005321e053376fa397
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spotify_confidence_sdk-3.0.0-py3-none-any.whl -
Subject digest:
8f9554e8f138cf3a97014c35246752c321f359bf3db2bf322912f1e8652aa273 - Sigstore transparency entry: 1262377440
- Sigstore integration time:
-
Permalink:
spotify/confidence-sdk-python@4bcc003cf929058f32a04ba1d648e8a8624512e5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/spotify
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yaml@4bcc003cf929058f32a04ba1d648e8a8624512e5 -
Trigger Event:
push
-
Statement type: