Skip to content

Releases: statsig-io/python-sdk

v0.9.0 - changes to exposure logging on Layers

21 Apr 01:17
Compare
Choose a tag to compare

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

28 Mar 20:22
Compare
Choose a tag to compare

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

22 Mar 18:26
Compare
Choose a tag to compare
  • 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

10 Mar 00:31
Compare
Choose a tag to compare

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

04 Mar 01:16
Compare
Choose a tag to compare

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

17 Feb 00:39
Compare
Choose a tag to compare

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

12 Jan 00:40
45aaafc
Compare
Choose a tag to compare

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

17 Dec 19:22
Compare
Choose a tag to compare

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

04 Dec 03:44
Compare
Choose a tag to compare

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

03 Dec 22:17
Compare
Choose a tag to compare

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