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 bullet-train

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.

Usage#

Retrieving feature flags for your project#

from bullet_train import BulletTrain;
bt = BulletTrain(environment_id="<YOUR_ENVIRONMENT_KEY>")
if bt.has_feature("header"):
if bt.feature_enabled("header"):
# Show my awesome cool new feature to the world
value = bt.get_value("header", '<My User Id>')
value = bt.get_value("header")
bt.set_trait("accept-cookies", "true", "ben@bullet-train.io"))
bt.get_trait("accept-cookies", "ben@bullet-train.io"))

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.bullet-train.io/api/

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 Bullet Train 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 bullet-train.io.
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