From 8de1cbf7e14f15b8b0f05cf2ef95f879c7bb5b0e Mon Sep 17 00:00:00 2001 From: Andrew Liu <159852527+aliu39@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:51:31 -0800 Subject: [PATCH 1/5] feat(flags): document statsig python integration --- docs/platforms/python/feature-flags/index.mdx | 1 + .../python/integrations/statsig/index.mdx | 62 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 docs/platforms/python/integrations/statsig/index.mdx diff --git a/docs/platforms/python/feature-flags/index.mdx b/docs/platforms/python/feature-flags/index.mdx index 04f91b1f01e2d..333255a11a6b4 100644 --- a/docs/platforms/python/feature-flags/index.mdx +++ b/docs/platforms/python/feature-flags/index.mdx @@ -17,6 +17,7 @@ Evaluation tracking typically requires enabling an SDK integration. Integrations - [Generic (API)](/platforms/python/feature-flags/#generic-api) - [LaunchDarkly](/platforms/python/integrations/launchdarkly/) - [OpenFeature](/platforms/python/integrations/openfeature/) +- [Statsig](/platforms/python/integrations/statsig/) - [Unleash](/platforms/python/integrations/unleash/) ### Generic API diff --git a/docs/platforms/python/integrations/statsig/index.mdx b/docs/platforms/python/integrations/statsig/index.mdx new file mode 100644 index 0000000000000..2e7cd86cf517e --- /dev/null +++ b/docs/platforms/python/integrations/statsig/index.mdx @@ -0,0 +1,62 @@ +--- +title: Statsig +description: "Learn how to use Sentry with Statsig." +--- + + + +The [Statsig](https://www.statsig.com/) integration tracks feature flag evaluations produced by the Statsig Python Server SDK. These evaluations are held in memory and sent to Sentry for review and analysis if an error occurs. **At the moment, we only support boolean flag evaluations from Statsig's `check_gate` function.** Learn more about [feature gates](https://docs.statsig.com/feature-flags/working-with/). + +## Install + +Install `sentry-sdk` from PyPI with the `statsig` extra. + +```bash +pip install --upgrade 'sentry-sdk[statsig]' +``` + +## Configure + +Add `StatsigIntegration` to your `integrations` list: + +```python +import sentry_sdk +from sentry_sdk.integrations.statsig import StatsigIntegration + +sentry_sdk.init( + dsn="___PUBLIC_DSN___", + # Add data like request headers and IP for users, if applicable; + # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info + send_default_pii=True, + integrations=[StatsigIntegration()], +) +``` + +For more information on how to use Statsig, read Statsig's [Python reference](https://docs.statsig.com/server/pythonSDK) and [quickstart guide](https://docs.statsig.com/guides/first-feature). + +## Verify + +Test the integration by evaluating a feature flag using your Statsig SDK before capturing an exception. + +```python {tabTitle: Python, using is_enabled} +import sentry_sdk +from statsig.statsig_user import StatsigUser +from statsig import statsig + +statsig.initialize("server-secret-key") +# TODO: wait for initialization to complete? + +result = statsig.check_gate(StatsigUser("my-user-id"), "my-feature-gate") +sentry_sdk.capture_exception(Exception("Something went wrong!")) +``` + +Visit the [Sentry website](https://sentry.io/issues/) and confirm that your error +event has recorded the feature flag "my-feature-gate", and its value is equal to `result`. + +## Supported Versions + +- statsig >= 0.55.3 +- sentry-sdk >= TODO: +- python >= 3.7 + + From 886927d37e7a8639de14b379bc9a27f672d4b9af Mon Sep 17 00:00:00 2001 From: Andrew Liu <159852527+aliu39@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:53:52 -0800 Subject: [PATCH 2/5] Statsig feature gates --- docs/platforms/python/integrations/statsig/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/platforms/python/integrations/statsig/index.mdx b/docs/platforms/python/integrations/statsig/index.mdx index 2e7cd86cf517e..310ec7fa23775 100644 --- a/docs/platforms/python/integrations/statsig/index.mdx +++ b/docs/platforms/python/integrations/statsig/index.mdx @@ -5,7 +5,7 @@ description: "Learn how to use Sentry with Statsig." -The [Statsig](https://www.statsig.com/) integration tracks feature flag evaluations produced by the Statsig Python Server SDK. These evaluations are held in memory and sent to Sentry for review and analysis if an error occurs. **At the moment, we only support boolean flag evaluations from Statsig's `check_gate` function.** Learn more about [feature gates](https://docs.statsig.com/feature-flags/working-with/). +The [Statsig](https://www.statsig.com/) integration tracks feature flag evaluations produced by the Statsig Python Server SDK. These evaluations are held in memory and sent to Sentry for review and analysis if an error occurs. **At the moment, we only support boolean flag evaluations from Statsig's `check_gate` function.** Learn more about [Statsig feature gates](https://docs.statsig.com/feature-flags/working-with/). ## Install From bd93541a88e2c5cc7177377c0a24870250af658c Mon Sep 17 00:00:00 2001 From: Andrew Liu <159852527+aliu39@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:10:24 -0800 Subject: [PATCH 3/5] Address todos --- docs/platforms/python/integrations/statsig/index.mdx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/platforms/python/integrations/statsig/index.mdx b/docs/platforms/python/integrations/statsig/index.mdx index 310ec7fa23775..dd85fa8074475 100644 --- a/docs/platforms/python/integrations/statsig/index.mdx +++ b/docs/platforms/python/integrations/statsig/index.mdx @@ -43,8 +43,11 @@ import sentry_sdk from statsig.statsig_user import StatsigUser from statsig import statsig +import time + statsig.initialize("server-secret-key") -# TODO: wait for initialization to complete? +while not statsig.is_initialized(): + time.sleep(0.2) result = statsig.check_gate(StatsigUser("my-user-id"), "my-feature-gate") sentry_sdk.capture_exception(Exception("Something went wrong!")) @@ -56,7 +59,7 @@ event has recorded the feature flag "my-feature-gate", and its value is equal to ## Supported Versions - statsig >= 0.55.3 -- sentry-sdk >= TODO: +- sentry-sdk >= 2.22.0 - python >= 3.7 From 8c9e73cc3fcb2b13b175465bbe693e6dff45dcfb Mon Sep 17 00:00:00 2001 From: Andrew Liu <159852527+aliu39@users.noreply.github.com> Date: Fri, 14 Feb 2025 23:18:02 -0800 Subject: [PATCH 4/5] Add to integrations table --- docs/platforms/python/integrations/index.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/platforms/python/integrations/index.mdx b/docs/platforms/python/integrations/index.mdx index 7618d9e63acec..911070cb6fb22 100644 --- a/docs/platforms/python/integrations/index.mdx +++ b/docs/platforms/python/integrations/index.mdx @@ -65,6 +65,7 @@ The Sentry SDK uses integrations to hook into the functionality of popular libra | ----------------------------------------------------------------------------------------------------------------------- | :--------------: | | | | | | | +| | | | | | ### Cloud Computing From 120719ba69a4e61580693c70df8e375b46ab534b Mon Sep 17 00:00:00 2001 From: Anton Pirker Date: Mon, 17 Feb 2025 14:52:21 +0100 Subject: [PATCH 5/5] Fixed links --- docs/platforms/python/integrations/index.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/platforms/python/integrations/index.mdx b/docs/platforms/python/integrations/index.mdx index 911070cb6fb22..5c95936072b49 100644 --- a/docs/platforms/python/integrations/index.mdx +++ b/docs/platforms/python/integrations/index.mdx @@ -61,12 +61,12 @@ The Sentry SDK uses integrations to hook into the functionality of popular libra ### Feature Flags -| | **Auto-enabled** | -| ----------------------------------------------------------------------------------------------------------------------- | :--------------: | -| | | -| | | -| | | -| | | +| | **Auto-enabled** | +| ------------------------------------------------------------------------------------------------------------------ | :--------------: | +| | | +| | | +| | | +| | | ### Cloud Computing