NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2588 most downloaded on PyPI
Statsig Python Server SDK
Last release 29 days ago
19 Aug 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
9 versions withdrawn
withdrawn after publishing
5 years old
150 releases · first in 2021
One column per quarter.
Fix bug that get_id_lists does not always fallback when proxy fails.
Included In This Release
- 518db9a25f9f9438ac915729671862417fcdfc10 Xin Li
- fix idlists fallback behavior (#315)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.43.0...0.43.1
new API log_exposure_for_config to log an exposure given a dynamic config without evaluation
Included In This Release
- f8cf75d194fbf6a7d5c03041af3f71e14fff0fd9 kat-statsig
- widen retry logic (#313)
- ff1d4f19ef0ca23d428bd648f78512edb9580603 kat-statsig
- add new log exposure, move around logging, and doc string (#309)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.42.0...0.43.0
Add group name to getClientInitializeResponse response
Included In This Release
- 8360c54e7095a7dfd960c94aa757b1edc0422d6c Xin Li
- wrap error (#311)
- 82189f2debb723f8d2a2b0f2bc7c7d404c7f6c1d kat-statsig
- selectively import and load grpc workers (#304)
- b59b31dda4f55430d234ca09b8e921b216f3192d sroyal-statsig
- Add Group Name to GCIR (#307)
- 58b1e2e46be1518fded56c105e0b5e0033ca2cc6 kat-statsig
- Support array operators (#306)
- 1ab74be0933a70dee45c074a1ca4b2786482cdbe Xin Li
- fix: fix network worker assignment logic (#302)
- be2f6dc908a3a6eadf40deb983d97f701a161ef7 sroyal-statsig
- Make Python Eval Condition Default to False (#305)
- fcddbdca7ee3d402341daf095207a92a1ecd907b kat-statsig
- array contains any/none operators support (#303)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.41.0...0.42.0
*Upgraded minimum required python version to 3.7*
Included In This Release
- 4b6e51cd1467f3fd4015083f52ecf8d983b45839 kat-statsig
- remove pin (#300)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.40.0...0.41.0
New option to disable get_feature_gate exposure logging
Included In This Release
- 244ac265e08078d5c3da5d1b78ad3b5fa7c529f2 kat-statsig
- downgrade packages to support py 3.7 (#298)
- 26db0d83ce4b5d0e1bfdb05a2bcee5c34928c417 kenny-statsig
- [SDK-489] option to disable exposure logging in get_feature_gate (#277)
- 1e156323c587d763f1a7838b6fa12c44d60bccc5 kat-statsig
- try catch get queue size (#297)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.39.0...0.40.0
Nothing published for this version
New option retry_queue_size which allows you to adjust the memory allocated for handling retries. Deprecated the option logging_interval.
proxy_configs and use grpc streaming to update config valuesretry_queue_size which allows you to adjust the memory allocated for handling retries. Deprecated the option logging_interval.Included In This Release
- de5dabb2af69cb0f56b2c0e241e57bbd93395204 kat-statsig
- Log event worker fixes (#295)
- 5772f30907081a04b69d50d773c437cbfb360729 kat-statsig
- Rework log event to use worker + event queue (#282)
- 372a8e701adfe1c25deb84602014ca3bbd6ee35d kat-statsig
- GRPC Integration (#264)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.38.0...0.39.0
Nothing published for this version
Nothing published for this version
New options to override the URL hosts for get_id_lists and log_event requests
Included In This Release
- 418abad5d7615213332ed776f109f58638000430 kat-statsig
- python use map for string lookup (#288)
- 17fbdcf7671ef510b49265e097b58cffe40f1653 kenny-statsig
- Override get_id_lists API (#284)
- 930e34b7a8b9663ca7b54e11e0100a4988e547ea kat-statsig
- log event api override (#283)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.37.0...0.38.0
Nothing published for this version
Fixes a bug where we could update the internal store with stale values (older than the current values in memory). While this was unlikely, now it wont
Included In This Release
- aa492214d73a0812c09af9dd639d6426073b97cf kat-statsig
- only throw away response if lcut is older (#280)
- f7357f66fb52418c75f66b93c4a70eaa11b248a8 kat-statsig
- check lcut before process (#278)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.36.0...0.37.0
Nothing published for this version
Allow local overrides with custom ids
Included In This Release
- b2ee907b1c14ad833f5d9c62e4fd870feb9c97dd kat-statsig
- add custom id lookup in override (#274)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.35.0...0.36.0
Nothing published for this version
Hash secondary exposure and delegated exposure gate names within response from getClientIntializeResponse
Included In This Release
- a65c506672b67dff33ee8f7dd9529ac0b00b11c4 Xin Li
- reland hash secondary exposures and undelegated secondary exposures (#273)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.34.0...0.35.0
>- 4a533b80d994f6250f7ac82a6f537dba1a86375c Xin Li
Included In This Release
- 4a533b80d994f6250f7ac82a6f537dba1a86375c Xin Li
- Revert "hash secondary exposures and undelegated secondary exposures" (#270)
- cc6520709c87fa13bf407715547fee0e15668ee5 Xin Li
- hash secondary exposures and undelegated secondary exposures (#267)
- 4532f9bd825ccfc510dfc4f698e96b909d9ae630 kat-statsig
- expose evaluation details (#266)
- 830f66eb1852bf6955eadd40402f4d424b5d8039 kat-statsig
- hide secret keys in url (#268)
- 931160ed7058890fece79b508a4be6b37074b895 kenny-statsig
- filter & dedupe exposures during evaluation (#263)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.33.0...0.34.0
Filtered segments from Secondary Exposures in get_client_initialize_response
New:
segments from Secondary Exposures in get_client_initialize_responseImprovements:
Included In This Release
- 3568420b1b5754ee1de5ba636f1f6c1d14f2188e marcos-statsig
- [Snyk] Security upgrade requests from 2.26.0 to 2.32.0 (#262)
- 50e5e8e08a89e1db295992d8ded5ab5d6b3bf4b7 kenny-statsig
- Filter segments from secondary exposures in gcir (#261)
- 438da54a40f1b7c3b6a9063ceced01e23a77e3ce kenny-statsig
- Revert "remove segments from secondary exposure " (#260)
- f083c92f20e435541dd8573abc10e86705e5f3cb kat-statsig
- remove segments from secondary exposure (#259)
- a76ed6f7aff92c26b3275a4ad837e927a43232e0 kat-statsig
- Output failed event log count (#258)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.32.0...0.33.0
GetClientInitialization Improvements. This release adds debugging information for which server SDK generated the values, and includes the full user ob
Included In This Release
- 2b9f239710006bb6bce923b5a9e3124651f3bf52 kat-statsig
- upadte ip lib version (#256)
- 0da71c6d06efddbf0fb2a3e14fef29cf9fb8c5fb Alex Coleman
- Create py.typed to share types (#238)
- 47248288d02a8a2dce792b8833346aca41a33aff kat-statsig
- Sdk 335 (#253)
- 287f374e076db95bf03a6020378bde6caf10110e kat-statsig
- gcir improvements (#255)
- 63ecc8180a0a23005edd67c5472f23dedc52547f kat-statsig
- delete unsupported field and aggregated exposure (#252)
- d3a1bc73fb3a3f832ca32ae0c76f83312417e9fd kat-statsig
- error logging (#250)
- 9cfd7ab2a2bef00e0cd8d8c16781622fe6324851 kat-statsig
- Python sdk performance improvements (#248)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.31.0...0.32.0
Add support for polling directly from the data adapter. To enable, you can override the should_be_used_for_querying_updates interface to return true f
Add support for polling directly from the data adapter.
To enable, you can override the should_be_used_for_querying_updates interface to return true for the key statsig.cache
Included In This Release
- 23901b2bdf09e78f0c2656cae254ee26c4c853af kat-statsig
- add support for polling data adapter (#244)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.30.0...0.31.0
In cases where an exception was thrown within the core API methods for the first time in a session, we attempt to notify the statsig backend. This was
In cases where an exception was thrown within the core API methods for the first time in a session, we attempt to notify the statsig backend. This was a blocking network call, which shouldn’t have been.
Other changes: Adds diagnostics for log event requests Refactors diagnostics to support multiple instances of the StatsigServer Exposes the value on a layer object
Included In This Release
- 23c9e00e04fe0f600244254b42b2c8bd366727af tore-statsig
- fix: make error boundary non-blocking (#246)
- 74d41971f7316128c51618818c43e3207836364c kat-statsig
- expose value on layer (#243)
- 98d8ffb99394c6ca85cd0eb997e5c7cf7957f846 Xin Li
- Update kong.yml (#240)
- d5804aebda76cd8778befabb4bcc89db5c10fa15 Xin Li
- Log event diag impl (#242)
- 5d63e25ac37d017612b33833adc3477e679b371b Xin Li
- Refactor diagnostics to support multi-instances (#241)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.29.1...0.30.0
>- 251a86d471a9fc78a17e5045ee5310d7ba80b562 Xin Li
Log count of failed log event
Included In This Release
- 251a86d471a9fc78a17e5045ee5310d7ba80b562 Xin Li
- Failed log event count (#233)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.29.0...0.29.1
Adds an optional parameter to the statsig options which specifies a callback to be called whenever a config is checked
Adds an optional parameter to the statsig options which specifies a callback to be called whenever a config is checked
Included In This Release
- 6b90b0848f031f32f8c6fa3f6994d0ab839cd5ee sroyal-statsig
- Add Eval Callback Option (#234)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.28.0...0.29.0
Replace the download_config_specs API with a CDN Benefit to this change is lower latency and higher reliability.
Replace the download_config_specs API with a CDN
Benefit to this change is lower latency and higher reliability.
Included In This Release
- f3837225040365973912c7946f8d36a729f40b81 kenny-statsig
- migrate dcs to cloudflare cdn (#214)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.27.1...0.28.0
Fix unexpected exception block usage of core APIs
Fix unexpected exception block usage of core APIs
Included In This Release
- eb19252d9791f3e31917dbbf40ab8ad58eebad6c Xin Li
- wrap exception for diagnostics (#230)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.27.0...0.27.1
If you want to use the unhashed (HashingAlgorithm.NONE) or the minimized payload (HashingAlgorithm.DJB2) for get_client_intialize_response, you can no
If you want to use the unhashed (HashingAlgorithm.NONE) or the minimized payload (HashingAlgorithm.DJB2) for get_client_intialize_response, you can now pass that as a parameter. By default, get_client_intialize_response will use HashingAlgorithm.SHA256 to hash the gate/experiment names.
NOTE: HashingAlgorithm.NONE hashing option requires opt in on the Statsig backend. Reach out to support for help with this.
Included In This Release
- 1fbf0fa3a62fd82421f6069f9c308ce7c0c046d0 tore-statsig
- Implement hash algorithm parameter for get_client_initialize_response (#227)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.26.0...0.27.0
disableAllLogging - Disables all logging requests (exposures, custom events, diagnostics, errors)
New option:
disableAllLogging - Disables all logging requests (exposures, custom events, diagnostics, errors)Included In This Release
- bbd16fd202d1c2a226bf000138169c6a03c3481b kenny-statsig
- disable error logging (#226)
- 90570877958421babeb4b96f84387fc4f3437c0b kenny-statsig
- disable event logging (#225)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.25.0...0.26.0
Adding aggregation for exposures from non analytics gates
Adding aggregation for exposures from non analytics gates
Included In This Release
- e9b8684a76adb90796cf5d39571d2a80ba9d5af8 tore-statsig
- Prototype exposure aggregation (#222)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/0.24.0...0.25.0
Fix a customer-reported race condition bug, remove an already removed future
Bug fix:
Internal changes:
Included In This Release
- 670b5497dfbae02bae43d58d7b90031f42c2032f Xin Li
- Alway log init diag (#221)
- 8f4f523eecd2ceffaf0ac82ee2472f0207a17927 kenny-statsig
- remove futures if not already removed (#219)
- 91e2a22fc6cc511bf7b905243b494ba462c0cdae sroyal-statsig
- SDK Key Verification (#220)
- e5672e9a55420abd2b6d400996833060c9a85bc3 Daniel
- Failed events to eb (#215)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.22.0...0.24.0
Decreases egress costs by compressing log_event requests.
layer.group_nameIncluded In This Release
- aa83cdb1252567e598038673fec27cea4b2b13a7 Daniel
- Add SDKFlags Class (#216)
- ad6a5ee961cdfed5c298c04af14064805d4263ae Daniel Loomb
- Merge branch 'main' of https://github.com/statsig-io/python-sdk
- 7e89117c4b8b81aacc423cddaae43f9c3b038fcd kenny-statsig
- Merge pull request #210 from statsig-io/group-name-layer
- 8dc7db1334e5d15cbeda76a5238945791ae9946d Kenny Yi
- group name for layers
- 8da1bf4f68a2b0c25827c536d7afd2b0ff919e82 Daniel
- Bot: Updated File statsig/version.py (#211)
- 30e9791d94f947a4ff878253a0873d823ae308f1 vijaye-statsig
- Merge pull request #209 from statsig-io/compressLogs
- 155d9025a8f3d06915d365d038fa3a110a54042c Daniel
- Update Kong time limit to 10min
- f0deb6d1b04ef8410ddefb082f59d2f6ceec5add Vijaye Raji
- Compress all outgoing log events
- 9a05006737c37ce5afdbb950dd15dff3507066b0 sroyal-statsig
- Hashed SDK Keys to Target Apps (#208)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.21.1...v0.23.0
Reverts log event gzip functionality due to an introduced regression.
Reverts log event gzip functionality due to an introduced regression.
Included In This Release
- 9a05006737c37ce5afdbb950dd15dff3507066b0 sroyal-statsig
- Hashed SDK Keys to Target Apps (#208)
- 6bbbde01f80811e8df764fd7ebfe624ed7e61954 Jacob O'Quinn
- Surface Network Errors (#207)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.21.2...v0.22.1
Adds compression to log_event requests
Adds compression to log_event requests
Included In This Release
- 4388fc66a167e65983746536a6ae11a4792d7dd0 Vijaye Raji
- Compress all outgoing log events by default. Allow developers to turn it off if necesssary
- 9a05006737c37ce5afdbb950dd15dff3507066b0 sroyal-statsig
- Hashed SDK Keys to Target Apps (#208)
- 6bbbde01f80811e8df764fd7ebfe624ed7e61954 Jacob O'Quinn
- Surface Network Errors (#207)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.21.2...v0.22.0
Fixed a bug that prevented initialization from data store.
Fixed a bug that prevented initialization from data store.
Included In This Release
- f48ceb2ed602c7ea331bcfd6b14af33496089bbb kenny-statsig
- Merge pull request #205 from statsig-io/fix-local-mode
- 2a30abdf0444ae30171c235ba15128839e434b6b Kenny Yi
- allow initialize from adapter in local mode
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.21.1...v0.21.2
Pipes remove_layer_override through to the top level statsig.py file.
Pipes remove_layer_override through to the top level statsig.py file.
remove_layer_override() in statsig by @cam-matsui in https://github.com/statsig-io/python-sdk/pull/20Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.21.0...v0.21.1
Adds ability to override layers in test.
user_hash to get client initialize responseIncluded In This Release
- b5f0dcc6b34a75656eb8858d35df14b2b13781e8 Daniel
- Add Layer Override APIs (#201)
- 303665f1d23376499c2535a317cd1edb5320b8c1 sroyal-statsig
- Bootstrap User Hash (#200)
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.20.0...v0.21.0
When we first wrote local evaluation SDKs, we were worried about backwards compatibility for new conditions and operators, so we introduced a way to e
When we first wrote local evaluation SDKs, we were worried about backwards compatibility for new conditions and operators, so we introduced a way to ensure backwards compatibility to old SDKs: issue a network request if the evaluation is inconclusive.
Fast forward, and we've realized this was a poor design decision. Good for backwards compatibility, but not worth the tradeoff and risk of potentially introducing a network round trip to every request.
We also now have evaluation metadata to surface if you try to evaluate something that is not supported on your SDK version to communicate the incompatibility in console.
Moving forward, our API will make a strong guarantee - all checks will be evaluated locally and will not issue a network request for evaluation.
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.19.1...v0.20.0
Make debug logs disabled by default. To enable, pass the option enable_debug_logs on initialize
enable_debug_logs on initializeFull Changelog: https://github.com/statsig-io/python-sdk/compare/v0.19.0...v0.19.1
Added support for evaluating multiple gate condition
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.18.0...v0.19.0
Option to provide a custom output logger to redirect stdout/stderr messages sent from the SDK.
Option to provide a custom output logger to redirect stdout/stderr messages sent from the SDK.
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.17.1...v0.18.0
Fix a bug which resulted in all diagnostics timestamps being set to the same value.
Internal Diagnostic:
Background threads:
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.17.0...v0.17.1
Target Apps for client bootstrap:
Target Apps for client bootstrap:
get_client_initialize_response now accepts client_sdk_key as a parameter. This allows responses to respect Target Apps assigned to a client key.Bootstrap/Datastore falls back to network:
/download_config_specs will be sent immediately. Previously the SDK would be left uninitialized until the next background syncInternal Diagnostics Changes:
_ConfigEvaluation() class be moved into its own folder to prevent a circular dependency issuesFull Changelog: https://github.com/statsig-io/python-sdk/compare/v0.16.13...v0.17.0
Move SpecStore network calls out of SpecStore.__init__
Full Changelog: https://github.com/statsig-io/python-sdk/compare/v0.16.12...v0.16.13
Kick off immediate async retry of download_config_specs if failed during initialize
Fixes a bug where events could be flushed on the main thread
Fixes a bug where events could be flushed on the main thread
Also removes an error that was thrown in the previous attempt, which was caught and handled but can be avoided
Fixes a bug where events could be flushed on the main thread.
Fixes a bug where events could be flushed on the main thread.
Can now read group_name from get_config and get_experiment evaluations
group_name from get_config and get_experiment evaluationsflush() APIFixed a bug that would not evaluate gate check properly for a user with empty string customID
Fixed a bug that prevented using custom IDs with a numeric value
Fixed a bug that prevented using custom IDs with a numeric value
Remove call to logging.setLoggerClass which was overwriting the global logger
logging.setLoggerClass which was overwriting the global loggerBeing defensive about how many times initialize here
Being defensive about how many times initialize here
String formatting was causing issues in celery with django environment. Removed as it was not necessary.
String formatting was causing issues in celery with django environment. Removed as it was not necessary.
No longer overrides the default level of the python root logger.
No longer overrides the default level of the python root logger.
Nothing published for this version
Also limit a single failure to 10 retries
Also limit a single failure to 10 retries
New StatsigOptions: init_timeout - Maximum number of seconds before initialize will timeout logging_interval - Number of seconds to wait in between lo
init_timeout - Maximum number of seconds before initialize will timeout
logging_interval - Number of seconds to wait in between logging each batch of eventscheck_gate_with_exposure_logging_disabled
get_config_with_exposure_logging_disabled
get_experiment_with_exposure_logging_disabled
get_layer_with_exposure_logging_disabled
manually_log_gate_exposure
manually_log_config_exposure
manually_log_experiment_exposure
manually_log_layer_parameter_exposure
Added a few new APIs to help removing local overrides for better testing experiences:
Added a few new APIs to help removing local overrides for better testing experiences:
# If the user_id is None, the override for all users for the gate/config/experiment will be removed
def remove_gate_override(gate: str, user_id: Optional[str] = None)
def remove_config_override(config: str, user_id: Optional[str] = None)
def remove_experiment_override(experiment: str, user_id: Optional[str] = None)
def remove_all_overrides()
In some cases, the config sync and logger threads were being killed. v0.14.1 Adds a check that respawns threads that have been killed.
In some cases, the config sync and logger threads were being killed. v0.14.1 Adds a check that respawns threads that have been killed.
Adds EvaluationDetails to exposure events;
Adds EvaluationDetails to exposure events;
Adds Thread Pool for ID List:
Nothing published for this version
shutdown tried to join on a phantom thread. The exception was caught and logged, but this cleans it up
shutdown tried to join on a phantom thread. The exception was caught and logged, but this cleans it up
Your coding agent can read these notes before it upgrades. Set up the MCP server →