Skip to content

haptikrajasashtikar/unleash-client-python

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

unleash-client-python

Coverage Status PyPI version PyPI - Python Version License: 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

For Flask Users

If you're looking into running Unleash from Flask, you might want to take a look at Flask-Unleash, the Unleash Flask extension. The extension builds upon this SDK to reduce the amount of boilerplate code you need to write to integrate with Flask. Of course, if you'd rather use this package directly, that will work too.

Usage

Initialization

from UnleashClient import UnleashClient

client = UnleashClient(
    url="https://unleash.herokuapp.com",
    app_name="my-python-app",
    custom_headers={'Authorization': '<API token>'})

client.initialize_client()

For more information about configuring UnleashClient, check out the docs!

Checking if a feature is enabled

A check of a simple toggle:

client.is_enabled("my_toggle")

You can specify a fallback function for cases where the client doesn't recognize the toggle by using the fallback_function keyword argument:

def custom_fallback(feature_name: str, context: dict) -> bool:
    return True

client.is_enabled("my_toggle", fallback_function=custom_fallback)

You can also use the fallback_function argument to replace the obsolete default_value by using a lambda that ignores its inputs:

client.is_enabled("my_toggle", fallback_function=lambda feature_name, context: True)

Supplying application context:

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

For more information about usage, see the Usage documentation.

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("variant_toggle", context)

print(variant)
> {
>    "name": "variant1",
>    "payload": {
>        "type": "string",
>        "value": "val1"
>        },
>    "enabled": True
> }

For more information about variants, see the Variant documentation.

About

Unleash client SDK for Python πŸ’‘πŸ’‘πŸ’‘

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.4%
  • Makefile 0.6%