Skip to main content

Unleash Django utility package

Project description

unleash-django

This library is a wrapper for Unleash.io's python

It can wrap views and methods to run if only feature is enabled and return a fallback function otherwise.

Installation

$ pip install unleash-django-util

Setting:

set following values in your settings:

* UNLEASH_API_TOKEN = 'your project token',default is 'default:development. unleash-insecure-api-token'
* UNLEASH_URL = 'the project url', default is 'https://app.unleash-hosted.com/demo/api/'
* UNLEASH_APP_NAME = 'the app name', default is 'miare'

Use in Test Env:

set UNLEASH_FAKE_INITIALIZE = True in settings if no initialization is needed. By doing so no request is sent to Unleash server, neither for fetching flag status nor submitting metrics.

Wrappers:

Using view wrapper:

from unleash_django.decorators.view_flag import view_flag


def fallback_func(self):
    """some code goes here"""


@view_flag('feature_name', fallback_func)
def get(self):
    """some code here"""

Using method wrapper:

from unleash_django.decorators.method_flag import method_flag


def fallback_func():
    """ some code goes here """


@method_flag('feature_name', user_id=123)
def method():
    """ some code goes here """

if a method feature flag is going to have a user based strategy, user_id should be provided

Methods:

is_enabled:

from unleash_django.api.method import is_enabled

is_enabled('feature_name', context={'userId': '123'})

if feature flag is on, True will be returned, otherwise False unless default is set to True.

get_variant:

from unleash_django.api.method import get_variant

get_variant('feature_name', context={'userId': '123'})

the result should be like:

 {
   "name": "variant1",
   "payload": {
       "type": "string",
       "value": "val1"
       },
   "enabled": True
}

with_feature_flag:

from unleash_django.api.method import with_feature_flag


def enabled_func():
    """some code goes here"""


def disabled_func():
    """some code goes here"""


with_feature_flag('feature_name', enabled_function=enabled_func, disabled_function=disabled_func)

It runs enabled_function if feature is on, otherwise disabled_function unless default value is set to True

it is possible to pass functions with args and kwargs using tuple, dict or FlagFunction

Change Log

0.4.4

  • add a variable for fake initialization

0.4.3

  • set level of logging

0.4.1

  • added get_variant function

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

unleash_django_util-0.4.4-py3-none-any.whl (9.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page