Releases: statsig-io/python-sdk
v0.9.0 - changes to exposure logging on Layers
Previously exposures for Layers happen when you call getLayer()
, but when you have multiple experiments running in parallel in the same Layer, this could be exposing more users than the actual number of users who were actually exposed to some of the experiments, so with this release we have moved the exposure logic to be happening when Layer.get()
method is called, so that a user is only exposed to an experiment when the parameter for that experiment is fetched.
v0.8.2 - Internal improvements, debug error logging
Add debug logging information, stringify user object more gracefully, add server session id header, copy user on normalization rather than modifying
v0.8.1 - getLayer API and bug fixes
- added a new API
get_layer
, which returns a layer object that would return the correct parameter value for the given user within the layer, no matter which experiment the user is allocated to within the layer; - fixed a bug where
time
was not added to events; - fixed a bug where
/get_config
fallback was not correctly called in the event that the SDK does not know how to evaluate a rule locally.
v0.7.0 - improved ID list
Improved the ID list sync'ing logic so that it's using a new endpoint and can scale better with larger lists
v0.6.0 - Adds bootstrap_values and rules_updated_callback
Added two parameters to StatsigOptions
:
bootstrap_values: str = null
a string that represents all rules for all feature gates, dynamic configs and experiments. It can be provided to bootstrap the Statsig server SDK at initialization in case your server runs into network issue or Statsig server is down temporarily.
rules_updated_callback: typing.Callable = None,
a callback function that's called whenever we have an update for the rules; it's called with a logical timestamp and a JSON string (used as is for bootstrapValues mentioned above). Note that as of right now, this will be called from a background thread that the SDK uses to update config values.
v0.5.3 - Fixes and ID list removal bug
Fixes and issue where the ID list background thread updater threw an exception when trying to remove IDs from a list when the ID already did not exist
v0.5.2 - Fixes the localMode and override APIs
The shutdown API had an issue where the background threads were waiting to be joined in shutdown in localMode
per #4
The override APIs were improperly preferring global to user level settings, so if you had a user level override and a global override, you would always get the global override. This made it impossible to override a gate to true for all but one user
v0.5.0 - Adds testing utility methods and support for id_lists
Testing utility functions
override_gate(gate:str, value:bool, user_id:str = None)
- overrides a gate to the given value. If a user_id is not provided, all gate checks will return this value. If a specific user_id is passed, the override only applies to that given user_id
override_config
and override_experiment
function similarly, but for DynamicConfigs and Experiments
StatsigOptions.local_mode
- local mode disables network access, so the SDK will only return default values and never hit statsig servers. Useful for unit testing
evaluate_all(user)
- given a user, evaluates all gates/configs/experiments in the project and returns a dictionary with the results. Useful for reproducing an issue and determining which values a given user has
Example output:
"feature_gates":{
"always_on_gate":{
"value": True,
"rule_id":"6N6Z8ODekNYZ7F8gFdoLP5"
},
"on_for_statsig_email":{
"value": True,
"rule_id":"7w9rbTSffLT89pxqpyhuqK"
}
},
"dynamic_configs":{
"test_config":{
"value":{
"boolean": False,
"number":7,
"string":"statsig"
},
"rule_id":"1kNmlB23wylPFZi1M0Divl"
},
"sample_experiment":{
"value":{
"experiment_param":"test"
},
"rule_id":"2RamGujUou6h2bVNQWhtNZ"
}
}
ID Lists
Adds python SDK support for ID lists: https://docs.statsig.com/segments/add-id-list
v0.4.3 - Adds timeout option to make network request timeout configurable
Enforces a minimum timeout on network requests from the SDK, and makes that timeout configurable via StatsigOptions
v0.4.2 - Make background threads daemon threads
All SDK background threads are now marked as daemon threads so they will not continue to run when your program exits.
Note that if you fail to call shutdown(), the background thread that posts logs to Statsig servers will not have a chance to run and you could lose logging data