Skip to content

Repository files navigation

unleash-client-python

Coverage StatusPyPI versionPyPI - Python VersionLicense: MIT

This is the Python client for Unleash. It implements Client Specifications 1.0 and checks compliance based on spec in unleash/client-specifications

What it supports:

  • Default activation strategies using 32-bit Murmurhash3
  • Custom strategies
  • Full client lifecycle:
    • Client registers with Unleash server
    • Client periodically fetches feature toggles and stores to on-disk cache
    • Client periodically sends metrics to Unleash Server
  • Tested on Linux (Ubuntu), OSX, and Windows

Check out the project documentation and the changelog.

Installation

Check out the package on Pypi!

pip install UnleashClient

Usage

Initialization

from UnleashClient import UnleashClient
client = UnleashClient("https://unleash.herokuapp.com/api", "My Program")
client.initialize_client()

To clean up gracefully:

client.destroy()

Arguments

ArgumentDescriptionRequired?TypeDefault Value
urlUnleash server URLYStringN/A
app_nameName of your programYStringN/A
environmentName of current environmentNStringdefault
instance_idUnique ID for your programNStringunleash-client-python
refresh_intervalHow often the unleash client should check for configuration changes.NInteger15
metrics_intervalHow often the unleash client should send metrics to server.NInteger60
disable_metricsDisables sending metrics to Unleash server.NBooleanF
disable_registrationDisables registration with Unleash server.NBooleanF
custom_headersCustom headers to send to Unleash.NDictionary{}
custom_strategiesCustom strategies you'd like UnleashClient to support.NDictionary{}
cache_directoryLocation of the cache directory. When unset, FCache will determine the locationNStrUnset
project_nameUnleash project Id to load feature flags fromNStr""

Checking if a feature is enabled

A check of a simple toggle:

client.is_enabled("My Toggle")

Specifying a default value:

client.is_enabled("My Toggle", default_value=True)

Supplying application context:

app_context= {"userId": "test@email.com"}
client.is_enabled("User ID Toggle", app_context)

Supplying a fallback function:

defcustom_fallback(feature_name: str, context: dict) ->bool:
returnTrueclient.is_enabled("My Toggle", fallback_function=custom_fallback)
  • Must accept the fature name and context as an argument.
  • Client will evaluate the fallback function only if exception occurs when calling the is_enabled() method i.e. feature flag not found or other general exception.
  • If both a default_value and fallback_function are supplied, client will define the default value by ORing the default value and the output of the fallback function.

Getting a variant

Checking for a variant:

context= {'userId': '2'} # Context must have userId, sessionId, or remoteAddr. If none are present, distribution will be random.variant=client.get_variant("MyvariantToggle", context)
print(variant)
> {
>"name": "variant1",
>"payload": {
>"type": "string",
>"value": "val1"> },
>"enabled": True> }

For more information about variants, see the Variant documentation.

About

Unleash client for Python 💡💡💡

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages