Skip to main content

Flagsmith Python SDK

This library can be used with server-side Python projects. The source code for the client is available on Github.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See running in production for notes on how to deploy the project on a live system.

Installing

VIA pip

pip install flagsmith

Basic Usage

The SDK is initialised against a single environment within a project on https://flagsmith.com, for example the Development or Production environment. You can find your environment key in the Environment settings page.

API Key

Usage

Retrieving feature flags for your project

from flagsmith import Flagsmith

flagsmith = Flagsmith(environment_id="<YOUR_ENVIRONMENT_KEY>")

if flagsmith.has_feature("header"):
if flagsmith.feature_enabled("header"):
# Show my awesome cool new feature to the world

value = flagsmith.get_value("header", '<My User Id>')

value = flagsmith.get_value("header")

flagsmith.set_trait("accept-cookies", "true", "ben@flagsmith.com")
flagsmith.get_trait("accept-cookies", "ben@flagsmith.com")

Available Options

PropertyDescriptionRequiredDefault Value
environment_idDefines which project environment you wish to get flags for. example ACME Project - Staging.YESNone
apiUse this property to define where you're getting feature flags from, e.g. if you're self hosting.NOhttps://api.flagsmith.com/api/v1/

Available Functions

FunctionDescription
has_feature(key)Determine if given feature exists for an environment. bt.has_feature("powerUserFeature") // true
feature_enabled(key)Get the value of a particular feature flag e.g. bt.feature_enabled("powerUserFeature") // true
feature_enabled(key, userId)Get the value of a particular feature flag e.g. bt.feature_enabled("powerUserFeature", 1234) // true
get_value(key)Get the value of a particular remote config e.g. bt.get_value("font_size") // 10
get_value(key, userId)Get the value of a particular feature for a specified user e.g. bt.get_value("font_size", 1234) // 15
set_trait(trait_key, trait_value, userId)Set the value of a particular trait for a specified user e.g. bt.set_trait("font_size", 12, 1234) // 15
get_trait(trait_key, userId)Get the value of a particular trait for a specified user e.g. bt.get_trait("font_size", 1234) // 12
get_flags()Trigger a manual fetch of the environment features, returns a list of flag objects, see below for returned data
get_flags_for_user(1234)Trigger a manual fetch of the environment features with a given user id, returns a list of flag objects, see below for returned data

Identifying users

Identifying users allows you to target specific users from the Flagsmith dashboard. You can include an optional user identifier as part of the has_feature and get_value methods to retrieve unique user flags and variables.

Flags data structure

FieldDescriptionType
idInternal id of feature stateInteger
enabledWhether feature is enabled or notBoolean
environmentInternal ID of environmentInteger
feature_state_valueValue of the featureAny - determined based on data input on flagsmith.com.
featureFeature object - see below for detailsObject

Feature data structure

FieldDescriptionType
idInternal id of featureInteger
nameName of the feature (sometimes referred to as key or ID)String
descriptionDescription of the featureString
typeFeature Type. Can be FLAG or CONFIGString
created_dateDate feature was createdDatetime
inital_valueThe initial / default value set for all feature states on creationString
projectInternal ID of the associated projectInteger