Releases: getsentry/sentry-python
2.22.0
Various fixes & improvements
-
New integration: Add Statsig integration (#4022) by @aliu39
For more information, see the documentation for the StatsigIntegration.
-
Profiling: Continuous profiling lifecycle (#4017) by @Zylphrex
-
Fix: Revert "feat(tracing): Add
propagate_traces
deprecation warning (#3899)" (#4055) by @cmanallen -
Tests: Generate Web 1 group tox entries by toxgen script (#3980) by @sentrivana
-
Tests: Generate Web 2 group tox entries by toxgen script (#3981) by @sentrivana
-
Tests: Generate Tasks group tox entries by toxgen script (#3976) by @sentrivana
-
Tests: Generate AI group tox entries by toxgen script (#3977) by @sentrivana
-
Tests: Generate DB group tox entries by toxgen script (#3978) by @sentrivana
-
Tests: Generate Misc group tox entries by toxgen script (#3982) by @sentrivana
-
Tests: Generate Flags group tox entries by toxgen script (#3974) by @sentrivana
-
Tests: Generate gRPC tox entries by toxgen script (#3979) by @sentrivana
-
Tests: Remove toxgen cutoff, add statsig (#4048) by @sentrivana
-
Tests: Reduce continuous profiling test flakiness (#4052) by @Zylphrex
-
Tests: Fix Clickhouse test (#4053) by @sentrivana
-
Update sample rate in DSC (#4018) by @sentrivana
-
Move the GraphQL group over to the tox gen script (#3975) by @sentrivana
-
Update changelog with
profile_session_sample_rate
(#4046) by @sentrivana
2.21.0
Various fixes & improvements
-
Fix incompatibility with new Strawberry version (#4026) by @sentrivana
-
Add
failed_request_status_codes
to Litestar (#4021) by @vrslevSee https://docs.sentry.io/platforms/python/integrations/litestar/ for details.
-
Deprecate
enable_tracing
option (#3935) by @antonpirkerThe
enable_tracing
option is now deprecated. Please usetraces_sample_rate
instead. See https://docs.sentry.io/platforms/python/configuration/options/#traces_sample_rate for more information. -
Explicitly use
None
default when checking metadata (#4039) by @mpurnell1 -
Fix bug where concurrent accesses to the flags property could raise a
RuntimeError
(#4034) by @cmanallen -
Add more min versions of frameworks (#3973) by @sentrivana
-
Set level based on status code for HTTP client breadcrumbs (#4004) by @sentrivana
-
Don't set transaction status to error on
sys.exit(0)
(#4025) by @sentrivana -
Continuous profiling sample rate (#4002) by @Zylphrex
Set
profile_session_sample_rate=1.0
in yourinit()
to collect continuous profiles for 100% of profile sessions. See https://docs.sentry.io/platforms/python/profiling/#enable-continuous-profiling for more information. -
Track and report spans that were dropped (#4005) by @constantinius
-
Handle
MultiPartParserError
to avoid internal sentry crash (#4001) by @orhanhenrik -
Handle
None
lineno inget_source_context
(#3925) by @sentrivana -
Add support for Python 3.12 and 3.13 to AWS Lambda integration (#3965) by @antonpirker
-
Add
propagate_traces
deprecation warning (#3899) by @mgaligniana -
Check that
__module__
isstr
(#3942) by @szokeasaurusrex -
Add
__repr__
toBaggage
(#4043) by @szokeasaurusrex -
Fix a typo (#3923) by @antonpirker
-
Split gevent tests off (#3964) by @sentrivana
-
Add tox generation script, but don't use it yet (#3971) by @sentrivana
-
Use
httpx_mock
intest_httpx
(#3967) by @sl0thentr0py -
Fix typo in test name (#4036) by @szokeasaurusrex
-
Fix mypy (#4019) by @sentrivana
-
Test Celery's latest RC (#3938) by @sentrivana
-
Bump
actions/create-github-app-token
from1.11.2
to1.11.3
(#4023) by @dependabot -
Bump
actions/create-github-app-token
from1.11.1
to1.11.2
(#4015) by @dependabot -
Bump
codecov/codecov-action
from5.1.2
to5.3.1
(#3995) by @dependabot
2.20.0
-
New integration: Add Typer integration (#3869) by @patrick91
For more information, see the documentation for the TyperIntegration.
-
New integration: Add Unleash feature flagging integration (#3888) by @aliu39
For more information, see the documentation for the UnleashIntegration.
-
Add custom tracking of feature flag evaluations (#3860) by @aliu39
-
Feature Flags: Register LD hook in setup instead of init, and don't check for initialization (#3890) by @aliu39
-
Feature Flags: Moved adding of
flags
context into Scope (#3917) by @antonpirker -
Create a separate group for feature flag test suites (#3911) by @sentrivana
-
Fix cache pollution from mutable reference (#3887) by @cmanallen
-
Centralize minimum version checking (#3910) by @sentrivana
-
Support SparkIntegration activation after SparkContext created (#3411) by @seyoon-lim
-
Preserve ARQ enqueue_job kwdefaults after patching (#3903) by @danmr
-
Add Github workflow to comment on issues when a fix was released (#3866) by @antonpirker
-
Update test matrix for Sanic (#3904) by @antonpirker
-
Rename scripts (#3885) by @sentrivana
-
Fix CI (#3878) by @sentrivana
-
Treat
potel-base
as release branch in CI (#3912) by @sentrivana -
build(deps): bump actions/create-github-app-token from 1.11.0 to 1.11.1 (#3893) by @dependabot
-
build(deps): bump codecov/codecov-action from 5.0.7 to 5.1.1 (#3867) by @dependabot
-
build(deps): bump codecov/codecov-action from 5.1.1 to 5.1.2 (#3892) by @dependabot
2.19.2
Various fixes & improvements
- Deepcopy and ensure get_all function always terminates (#3861) by @cmanallen
- Cleanup chalice test environment (#3858) by @antonpirker
2.19.1
Various fixes & improvements
- Fix errors when instrumenting Django cache (#3855) by @BYK
- Copy
scope.client
reference as well (#3857) by @sl0thentr0py - Don't give up on Spotlight on 3 errors (#3856) by @BYK
- Add missing stack frames (#3673) by @antonpirker
- Fix wrong metadata type in async gRPC interceptor (#3205) by @fdellekart
- Rename launch darkly hook to match JS SDK (#3743) by @aliu39
- Script for checking if our instrumented libs are Python 3.13 compatible (#3425) by @antonpirker
- Improve Ray tests (#3846) by @antonpirker
- Test with Celery
5.5.0rc3
(#3842) by @sentrivana - Fix asyncio testing setup (#3832) by @sl0thentr0py
- Bump
codecov/codecov-action
from5.0.2
to5.0.7
(#3821) by @dependabot - Fix CI (#3834) by @sentrivana
- Use new ClickHouse GH action (#3826) by @antonpirker
2.19.0
Various fixes & improvements
- New: introduce
rust_tracing
integration. See https://docs.sentry.io/platforms/python/integrations/rust_tracing/ (#3717) by @matt-codecov - Auto enable Litestar integration (#3540) by @provinzkraut
- Deprecate
sentry_sdk.init
context manager (#3729) by @szokeasaurusrex - feat(spotlight): Send PII to Spotlight when no DSN is set (#3804) by @BYK
- feat(spotlight): Add info logs when Sentry is enabled (#3735) by @BYK
- feat(spotlight): Inject Spotlight button on Django (#3751) by @BYK
- feat(spotlight): Auto enable cache_spans for Spotlight on DEBUG (#3791) by @BYK
- fix(logging): Handle parameter
stack_info
for theLoggingIntegration
(#3745) by @gmcrocetti - fix(pure-eval): Make sentry-sdk[pure-eval] installable with pip==24.0 (#3757) by @sentrivana
- fix(rust_tracing): include_tracing_fields arg to control unvetted data in rust_tracing integration (#3780) by @matt-codecov
- fix(aws) Fix aws lambda tests (by reducing event size) (#3770) by @antonpirker
- fix(arq): fix integration with Worker settings as a dict (#3742) by @saber-solooki
- fix(httpx): Prevent Sentry baggage duplication (#3728) by @szokeasaurusrex
- fix(falcon): Don't exhaust request body stream (#3768) by @szokeasaurusrex
- fix(integrations): Check
retries_left
before capturing exception (#3803) by @malkovro - fix(openai): Use name instead of description (#3807) by @sourceful-rob
- test(gcp): Only run GCP tests when they should (#3721) by @szokeasaurusrex
- chore: Shorten CI workflow names (#3805) by @sentrivana
- chore: Test with pyspark prerelease (#3760) by @sentrivana
- build(deps): bump codecov/codecov-action from 4.6.0 to 5.0.2 (#3792) by @dependabot
- build(deps): bump actions/checkout from 4.2.1 to 4.2.2 (#3691) by @dependabot
2.18.0
Various fixes & improvements
- Add LaunchDarkly and OpenFeature integration (#3648) by @cmanallen
- Correct typo in a comment (#3726) by @szokeasaurusrex
- End
http.client
span on timeout (#3723) by @Zylphrex - Check for
h2
existence in HTTP/2 transport (#3690) by @BYK - Use
type()
instead when extracting frames (#3716) by @Zylphrex - Prefer
python_multipart
import overmultipart
(#3710) by @musicinmybrain - Update active thread for asgi (#3669) by @Zylphrex
- Only enable HTTP2 when DSN is HTTPS (#3678) by @BYK
- Prepare for upstream Strawberry extension removal (#3649) by @DoctorJohn
- Enhance README with improved clarity and developer-friendly examples (#3667) by @UTSAVS26
- Run license compliance action on all PRs (#3699) by @szokeasaurusrex
- Run CodeQL action on all PRs (#3698) by @szokeasaurusrex
- Fix UTC assuming test (#3722) by @BYK
- Exclude fakeredis 2.26.0 on py3.6 and 3.7 (#3695) by @szokeasaurusrex
- Unpin
pytest
fortornado-latest
tests (#3714) by @szokeasaurusrex - Install
pytest-asyncio
forredis
tests (Python 3.12-13) (#3706) by @szokeasaurusrex - Clarify that only pinned tests are required (#3713) by @szokeasaurusrex
- Remove accidentally-committed print (#3712) by @szokeasaurusrex
- Disable broken RQ test in newly-released RQ 2.0 (#3708) by @szokeasaurusrex
- Unpin
pytest
forcelery
tests (#3701) by @szokeasaurusrex - Unpin
pytest
on Python 3.8+gevent
tests (#3700) by @szokeasaurusrex - Unpin
pytest
for Python 3.8+common
tests (#3697) by @szokeasaurusrex - Remove
pytest
pin inrequirements-devenv.txt
(#3696) by @szokeasaurusrex - Test with Falcon 4.0 (#3684) by @sentrivana
2.17.0
Various fixes & improvements
- Add support for async calls in Anthropic and OpenAI integration (#3497) by @vetyy
- Allow custom transaction names in ASGI (#3664) by @sl0thentr0py
- Langchain: Handle case when parent span wasn't traced (#3656) by @rbasoalto
- Fix Anthropic integration when using tool calls (#3615) by @kwnath
- More defensive Django Spotlight middleware injection (#3665) by @BYK
- Remove
ensure_integration_enabled_async
(#3632) by @sentrivana - Test with newer Falcon version (#3644, #3653, #3662) by @sentrivana
- Fix mypy (#3657) by @sentrivana
- Fix flaky transport test (#3666) by @sentrivana
- Remove pin on
sphinx
(#3650) by @sentrivana - Bump
actions/checkout
from4.2.0
to4.2.1
(#3651) by @dependabot
2.16.0
Integrations
-
Bottle: Add
failed_request_status_codes
(#3618) by @szokeasaurusrexYou can now define a set of integers that will determine which status codes
should be reported to Sentry.sentry_sdk.init( integrations=[ BottleIntegration( failed_request_status_codes={403, *range(500, 600)}, ) ] )
Examples of valid
failed_request_status_codes
:{500}
will only send events on HTTP 500.{400, *range(500, 600)}
will send events on HTTP 400 as well as the 5xx range.{500, 503}
will send events on HTTP 500 and 503.set()
(the empty set) will not send events for any HTTP status code.
The default is
{*range(500, 600)}
, meaning that all 5xx status codes are reported to Sentry. -
Bottle: Delete never-reached code (#3605) by @szokeasaurusrex
-
Redis: Remove flaky test (#3626) by @sentrivana
-
Django: Improve getting
psycopg3
connection info (#3580) by @nijel -
Django: Add
SpotlightMiddleware
when Spotlight is enabled (#3600) by @BYK -
Django: Open relevant error when
SpotlightMiddleware
is on (#3614) by @BYK -
Django: Support
http_methods_to_capture
in ASGI Django (#3607) by @sentrivanaASGI Django now also supports the
http_methods_to_capture
integration option. This is a configurable tuple of HTTP method verbs that should create a transaction in Sentry. The default is("CONNECT", "DELETE", "GET", "PATCH", "POST", "PUT", "TRACE",)
.OPTIONS
andHEAD
are not included by default.Here's how to use it:
sentry_sdk.init( integrations=[ DjangoIntegration( http_methods_to_capture=("GET", "POST"), ), ], )
Miscellaneous
- Add 3.13 to setup.py (#3574) by @sentrivana
- Add 3.13 to basepython (#3589) by @sentrivana
- Fix type of
sample_rate
in DSC (and add explanatory tests) (#3603) by @antonpirker - Add
httpcore
basedHTTP2Transport
(#3588) by @BYK - Add opportunistic Brotli compression (#3612) by @BYK
- Add
__notes__
support (#3620) by @szokeasaurusrex - Remove useless makefile targets (#3604) by @antonpirker
- Simplify tox version spec (#3609) by @sentrivana
- Consolidate contributing docs (#3606) by @antonpirker
- Bump
codecov/codecov-action
from4.5.0
to4.6.0
(#3617) by @dependabot
2.15.0
Integrations
-
Configure HTTP methods to capture in ASGI/WSGI middleware and frameworks (#3531) by @antonpirker
We've added a new option to the Django, Flask, Starlette and FastAPI integrations called
http_methods_to_capture
. This is a configurable tuple of HTTP method verbs that should create a transaction in Sentry. The default is("CONNECT", "DELETE", "GET", "PATCH", "POST", "PUT", "TRACE",)
.OPTIONS
andHEAD
are not included by default.Here's how to use it (substitute Flask for your framework integration):
sentry_sdk.init( integrations=[ FlaskIntegration( http_methods_to_capture=("GET", "POST"), ), ], )
-
Django: Allow ASGI to use
drf_request
inDjangoRequestExtractor
(#3572) by @PakawiNz -
Django: Don't let
RawPostDataException
bubble up (#3553) by @sentrivana -
Django: Add
sync_capable
toSentryWrappingMiddleware
(#3510) by @szokeasaurusrex -
AIOHTTP: Add
failed_request_status_codes
(#3551) by @szokeasaurusrexYou can now define a set of integers that will determine which status codes
should be reported to Sentry.sentry_sdk.init( integrations=[ AioHttpIntegration( failed_request_status_codes={403, *range(500, 600)}, ) ] )
Examples of valid
failed_request_status_codes
:{500}
will only send events on HTTP 500.{400, *range(500, 600)}
will send events on HTTP 400 as well as the 5xx range.{500, 503}
will send events on HTTP 500 and 503.set()
(the empty set) will not send events for any HTTP status code.
The default is
{*range(500, 600)}
, meaning that all 5xx status codes are reported to Sentry. -
AIOHTTP: Delete test which depends on AIOHTTP behavior (#3568) by @szokeasaurusrex
-
AIOHTTP: Handle invalid responses (#3554) by @szokeasaurusrex
-
FastAPI/Starlette: Support new
failed_request_status_codes
(#3563) by @szokeasaurusrexThe format of
failed_request_status_codes
has changed from a list
of integers and containers to a set:sentry_sdk.init( integrations=StarletteIntegration( failed_request_status_codes={403, *range(500, 600)}, ), )
The old way of defining
failed_request_status_codes
will continue to work
for the time being. Examples of valid new-stylefailed_request_status_codes
:{500}
will only send events on HTTP 500.{400, *range(500, 600)}
will send events on HTTP 400 as well as the 5xx range.{500, 503}
will send events on HTTP 500 and 503.set()
(the empty set) will not send events for any HTTP status code.
The default is
{*range(500, 600)}
, meaning that all 5xx status codes are reported to Sentry. -
FastAPI/Starlette: Fix
failed_request_status_codes=[]
(#3561) by @szokeasaurusrex -
FastAPI/Starlette: Remove invalid
failed_request_status_code
tests (#3560) by @szokeasaurusrex -
FastAPI/Starlette: Refactor shared test parametrization (#3562) by @szokeasaurusrex
Miscellaneous
- Deprecate
sentry_sdk.metrics
(#3512) by @szokeasaurusrex - Add
name
parameter tostart_span()
and deprecatedescription
parameter (#3524 & #3525) by @antonpirker - Fix
add_query_source
with modules outside of project root (#3313) by @rominf - Test more integrations on 3.13 (#3578) by @sentrivana
- Fix trailing whitespace (#3579) by @sentrivana
- Improve
get_integration
typing (#3550) by @szokeasaurusrex - Make import-related tests stable (#3548) by @BYK
- Fix breadcrumb sorting (#3511) by @sentrivana
- Fix breadcrumb timestamp casting and its tests (#3546) by @BYK
- Don't use deprecated
logger.warn
(#3552) by @sentrivana - Fix Cohere API change (#3549) by @BYK
- Fix deprecation message (#3536) by @antonpirker
- Remove experimental
explain_plan
feature. (#3534) by @antonpirker - X-fail one of the Lambda tests (#3592) by @antonpirker
- Update Codecov config (#3507) by @antonpirker
- Update
actions/upload-artifact
tov4
with merge (#3545) by @joshuarli - Bump
actions/checkout
from4.1.7
to4.2.0
(#3585) by @dependabot