Releases: getsentry/sentry-python
1.44.1
Various fixes & improvements
-
Make
monitor
async friendly (#2912) by @sentrivanaYou can now decorate your async functions with the
monitor
decorator and they will correctly report their duration
and completion status. -
Fixed
Event | None
runtimeTypeError
(#2928) by @szokeasaurusrex
1.44.0
Various fixes & improvements
- ref: Define types at runtime (#2914) by @szokeasaurusrex
- Explicit reexport of types (#2866) (#2913) by @szokeasaurusrex
- feat(profiling): Add thread data to spans (#2843) by @Zylphrex
2.0.0rc3
Various fixes & improvements
- Use new scopes API default integrations. (#2856) by @antonpirker
- Use new scopes API in openai integration (#2853) by @antonpirker
- Use new scopes API in Celery integration. (#2851) by @antonpirker
- Use new scopes API in Django, SQLAlchemy, and asyncpg integration. (#2845) by @antonpirker
- Use new scopes API in Redis (#2854) by @sentrivana
- Use new scopes API in GQL Integration (#2838) by @szokeasaurusrex
- Use new scopes API in LoggingIntegration (#2861, #2855) by @sentrivana
- Use new scopes API in FastAPI integration (#2836) by @szokeasaurusrex
- Use new scopes API in Ariadne (#2850) by @szokeasaurusrex
- Add optional
keep_alive
(#2842) by @sentrivana - Add support for celery-redbeat cron tasks (#2643) by @kwigley
- AWS Lambda: aws_event can be an empty list (#2849) by @sentrivana
- GQL: Remove problematic tests (#2835) by @szokeasaurusrex
- Moved
should_send_default_pii
into client (#2840) by @antonpirker should_send_default_pii
shortcut (#2844) by @szokeasaurusrex- Use
scope.should_send_default_pii
in FastAPI integration (#2846) by @szokeasaurusrex - Patched functions decorator for integrations (#2454) by @szokeasaurusrex
- Small APIdocs improvement (#2828) by @antonpirker
- Bump checkouts/data-schemas from
ed078ed
to8232f17
(#2832) by @dependabot - Update CHANGELOG.md (970c577) by @sentrivana
- Updated migration guide (#2859) by @antonpirker
Plus 2 more
1.43.0
Various fixes & improvements
-
Add optional
keep_alive
(#2842) by @sentrivanaIf you're experiencing frequent network issues between the SDK and Sentry, you can try turning on TCP keep-alive:
import sentry_sdk sentry_sdk.init( # ...your usual settings... keep_alive=True, )
-
Add support for Celery Redbeat cron tasks (#2643) by @kwigley
The SDK now supports the Redbeat scheduler in addition to the default Celery Beat scheduler for auto instrumenting crons. See the docs for more information about how to set this up.
-
aws_event
can be an empty list (#2849) by @sentrivana -
Re-export
Event
intypes.py
(#2829) by @szokeasaurusrex -
Small API docs improvement (#2828) by @antonpirker
-
Fixed OpenAI tests (#2834) by @antonpirker
-
Bump
checkouts/data-schemas
fromed078ed
to8232f17
(#2832) by @dependabot
2.0.0rc2
New Features
- Additional integrations will now be activated automatically if the SDK detects the respective package is installed: Ariadne, ARQ, asyncpg, Chalice, clickhouse-driver, GQL, Graphene, huey, Loguru, PyMongo, Quart, Starlite, Strawberry.
Changed
-
The Pyramid integration will not capture errors that might happen in
authenticated_userid()
in a customAuthenticationPolicy
class. -
The method
need_code_loation
of theMetricsAggregator
was renamed toneed_code_location
. -
The
BackgroundWorker
thread used to process events was renamed fromraven-sentry.BackgroundWorker
tosentry-sdk.BackgroundWorker
. -
The
reraise
function was moved fromsentry_sdk._compat
tosentry_sdk.utils
. -
The
_ScopeManager
was moved fromsentry_sdk.hub
tosentry_sdk.scope
. -
Moved the contents of
tracing_utils_py3.py
totracing_utils.py
. Thestart_child_span_decorator
is now insentry_sdk.tracing_utils
. -
The actual implementation of
get_current_span
was moved tosentry_sdk.tracing_utils
.sentry_sdk.get_current_span
is still accessible as part of the top-level API. -
sentry_sdk.tracing_utils.get_current_span()
does now take ascope
instead of ahub
as parameter. -
sentry_sdk.utils._get_contextvars
does not return a tuple with three values, but a tuple with two values. Thecopy_context
was removed. -
If you create a transaction manually and later mutate the transaction in a
configure_scope
block this does not work anymore. Here is a recipe on how to change your code to make it work:
Your existing implementation:transaction = sentry_sdk.transaction(...) # later in the code execution: with sentry_sdk.configure_scope() as scope: scope.set_transaction_name("new-transaction-name")
needs to be changed to this:
transaction = sentry_sdk.transaction(...) # later in the code execution: scope = sentry_sdk.Scope.get_current_scope() scope.set_transaction_name("new-transaction-name")
-
The classes listed in the table below are now abstract base classes. Therefore, they can no longer be instantiated. Subclasses can only be instantiated if they implement all of the abstract methods.
Show table
Class Abstract methods sentry_sdk.integrations.Integration
setup_once
sentry_sdk.metrics.Metric
add
,serialize_value
, andweight
sentry_sdk.profiler.Scheduler
setup
andteardown
sentry_sdk.transport.Transport
capture_envelope
Removed
- Removed support for Python 2 and Python 3.5. The SDK now requires at least Python 3.6.
- Removed support for Celery 3.*.
- Removed support for Django 1.8, 1.9, 1.10.
- Removed support for Flask 0.*.
- Removed support for gRPC < 1.39.
- Removed
last_event_id()
top level API. The last event ID is still returned bycapture_event()
,capture_exception()
andcapture_message()
but the top level APIsentry_sdk.last_event_id()
has been removed. - Removed support for sending events to the
/store
endpoint. Everything is now sent to the/envelope
endpoint. If you're on SaaS you don't have to worry about this, but if you're running Sentry yourself you'll need version20.6.0
or higher of self-hosted Sentry. - The deprecated
with_locals
configuration option was removed. Useinclude_local_variables
instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables. - The deprecated
request_bodies
configuration option was removed. Usemax_request_body_size
. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size. - Removed support for
user.segment
. It was also removed from the trace header as well as from the dynamic sampling context. - Removed support for the
install
method for custom integrations. Please usesetup_once
instead. - Removed
sentry_sdk.tracing.Span.new_span
. Usesentry_sdk.tracing.Span.start_child
instead. - Removed
sentry_sdk.tracing.Transaction.new_span
. Usesentry_sdk.tracing.Transaction.start_child
instead. - Removed
sentry_sdk.utils.Auth.store_api_url
. sentry_sdk.utils.Auth.get_api_url
's now accepts asentry_sdk.consts.EndpointType
enum instead of a string as its only parameter. We recommend omitting this argument when calling the function, since the parameter's default value is the only possiblesentry_sdk.consts.EndpointType
value. The parameter exists for future compatibility.- Removed
tracing_utils_py2.py
. Thestart_child_span_decorator
is now insentry_sdk.tracing_utils
. - Removed the
sentry_sdk.profiler.Scheduler.stop_profiling
method. Any calls to this method can simply be removed, since this was a no-op method.
Deprecated
profiler_mode
andprofiles_sample_rate
have been deprecated as_experiments
options. Use them as top level options instead:sentry_sdk.init( ..., profiler_mode="thread", profiles_sample_rate=1.0, )
- Deprecated
sentry_sdk.transport.Transport.capture_event
. Please usesentry_sdk.transport.Transport.capture_envelope
, instead. - Passing a function to
sentry_sdk.init
'stransport
keyword argument has been deprecated. If you wish to provide a custom transport, please pass asentry_sdk.transport.Transport
instance or a subclass. - The parameter
propagate_hub
inThreadingIntegration()
was deprecated and renamed topropagate_scope
.
1.42.0
Various fixes & improvements
-
New integration: OpenAI integration (#2791) by @colin-sentry
We added an integration for OpenAI to capture errors and also performance data when using the OpenAI Python SDK.
Useage:
This integrations is auto-enabling, so if you have the
openai
package in your project it will be enabled. Just initialize Sentry before you create your OpenAI client.from openai import OpenAI import sentry_sdk sentry_sdk.init( dsn="___PUBLIC_DSN___", enable_tracing=True, traces_sample_rate=1.0, ) client = OpenAI()
For more information, see the documentation for OpenAI integration.
-
Discard open OpenTelemetry spans after 10 minutes (#2801) by @antonpirker
-
Propagate sentry-trace and baggage headers to Huey tasks (#2792) by @cnschn
-
Added Event type (#2753) by @szokeasaurusrex
-
Improve scrub_dict typing (#2768) by @szokeasaurusrex
-
Dependencies: bump types-protobuf from 4.24.0.20240302 to 4.24.0.20240311 (#2797) by @dependabot
2.0.0rc1
New Features
- Additional integrations will now be activated automatically if the SDK detects the respective package is installed: Ariadne, ARQ, asyncpg, Chalice, clickhouse-driver, GQL, Graphene, huey, Loguru, PyMongo, Quart, Starlite, Strawberry.
Changed
-
The Pyramid integration will not capture errors that might happen in
authenticated_userid()
in a customAuthenticationPolicy
class. -
The method
need_code_loation
of theMetricsAggregator
was renamed toneed_code_location
. -
The
BackgroundWorker
thread used to process events was renamed fromraven-sentry.BackgroundWorker
tosentry-sdk.BackgroundWorker
. -
The
reraise
function was moved fromsentry_sdk._compat
tosentry_sdk.utils
. -
The
_ScopeManager
was moved fromsentry_sdk.hub
tosentry_sdk.scope
. -
Moved the contents of
tracing_utils_py3.py
totracing_utils.py
. Thestart_child_span_decorator
is now insentry_sdk.tracing_utils
. -
The actual implementation of
get_current_span
was moved tosentry_sdk.tracing_utils
.sentry_sdk.get_current_span
is still accessible as part of the top-level API. -
sentry_sdk.tracing_utils.get_current_span()
does now take ascope
instead of ahub
as parameter. -
sentry_sdk.utils._get_contextvars
does not return a tuple with three values, but a tuple with two values. Thecopy_context
was removed. -
If you create a transaction manually and later mutate the transaction in a
configure_scope
block this does not work anymore. Here is a recipe on how to change your code to make it work:
Your existing implementation:transaction = sentry_sdk.transaction(...) # later in the code execution: with sentry_sdk.configure_scope() as scope: scope.set_transaction_name("new-transaction-name")
needs to be changed to this:
transaction = sentry_sdk.transaction(...) # later in the code execution: scope = sentry_sdk.Scope.get_current_scope() scope.set_transaction_name("new-transaction-name")
-
The classes listed in the table below are now abstract base classes. Therefore, they can no longer be instantiated. Subclasses can only be instantiated if they implement all of the abstract methods.
Show table
Class Abstract methods sentry_sdk.integrations.Integration
setup_once
sentry_sdk.metrics.Metric
add
,serialize_value
, andweight
sentry_sdk.profiler.Scheduler
setup
andteardown
sentry_sdk.transport.Transport
capture_envelope
Removed
- Removed support for Python 2 and Python 3.5. The SDK now requires at least Python 3.6.
- Removed support for Celery 3.*.
- Removed support for Django 1.8, 1.9, 1.10.
- Removed support for Flask 0.*.
- Removed
last_event_id()
top level API. The last event ID is still returned bycapture_event()
,capture_exception()
andcapture_message()
but the top level APIsentry_sdk.last_event_id()
has been removed. - Removed support for sending events to the
/store
endpoint. Everything is now sent to the/envelope
endpoint. If you're on SaaS you don't have to worry about this, but if you're running Sentry yourself you'll need version20.6.0
or higher of self-hosted Sentry. - The deprecated
with_locals
configuration option was removed. Useinclude_local_variables
instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables. - The deprecated
request_bodies
configuration option was removed. Usemax_request_body_size
. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size. - Removed support for
user.segment
. It was also removed from the trace header as well as from the dynamic sampling context. - Removed support for the
install
method for custom integrations. Please usesetup_once
instead. - Removed
sentry_sdk.tracing.Span.new_span
. Usesentry_sdk.tracing.Span.start_child
instead. - Removed
sentry_sdk.tracing.Transaction.new_span
. Usesentry_sdk.tracing.Transaction.start_child
instead. - Removed
sentry_sdk.utils.Auth.store_api_url
. sentry_sdk.utils.Auth.get_api_url
's now accepts asentry_sdk.consts.EndpointType
enum instead of a string as its only parameter. We recommend omitting this argument when calling the function, since the parameter's default value is the only possiblesentry_sdk.consts.EndpointType
value. The parameter exists for future compatibility.- Removed
tracing_utils_py2.py
. Thestart_child_span_decorator
is now insentry_sdk.tracing_utils
. - Removed the
sentry_sdk.profiler.Scheduler.stop_profiling
method. Any calls to this method can simply be removed, since this was a no-op method.
Deprecated
profiler_mode
andprofiles_sample_rate
have been deprecated as_experiments
options. Use them as top level options instead:sentry_sdk.init( ..., profiler_mode="thread", profiles_sample_rate=1.0, )
- Deprecated
sentry_sdk.transport.Transport.capture_event
. Please usesentry_sdk.transport.Transport.capture_envelope
, instead. - Passing a function to
sentry_sdk.init
'stransport
keyword argument has been deprecated. If you wish to provide a custom transport, please pass asentry_sdk.transport.Transport
instance or a subclass. - The parameter
propagate_hub
inThreadingIntegration()
was deprecated and renamed topropagate_scope
.
1.41.0
Various fixes & improvements
-
Add recursive scrubbing to
EventScrubber
(#2755) by @Cheapshot003By default, the
EventScrubber
will not search your events for potential
PII recursively. With this release, you can enable this behavior with:import sentry_sdk from sentry_sdk.scrubber import EventScrubber sentry_sdk.init( # ...your usual settings... event_scrubber=EventScrubber(recursive=True), )
-
Expose
socket_options
(#2786) by @sentrivanaIf the SDK is experiencing connection issues (connection resets, server
closing connection without response, etc.) while sending events to Sentry,
tweaking the defaulturllib3
socket options to the following can help:import socket from urllib3.connection import HTTPConnection import sentry_sdk sentry_sdk.init( # ...your usual settings... socket_options=HTTPConnection.default_socket_options + [ (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), # note: skip the following line if you're on MacOS since TCP_KEEPIDLE doesn't exist there (socket.SOL_TCP, socket.TCP_KEEPIDLE, 45), (socket.SOL_TCP, socket.TCP_KEEPINTVL, 10), (socket.SOL_TCP, socket.TCP_KEEPCNT, 6), ], )
-
Allow to configure merge target for releases (#2777) by @sentrivana
-
Allow empty character in metric tags values (#2775) by @viglia
-
Replace invalid tag values with an empty string instead of _ (#2773) by @markushi
-
Add documentation comment to
scrub_list
(#2769) by @szokeasaurusrex -
Fixed regex to parse version in lambda package file (#2767) by @antonpirker
-
xfail broken AWS Lambda tests for now (#2794) by @sentrivana
-
Removed print statements because it messes with the tests (#2789) by @antonpirker
-
Bump
types-protobuf
from 4.24.0.20240129 to 4.24.0.20240302 (#2782) by @dependabot -
Bump
checkouts/data-schemas
fromeb941c2
toed078ed
(#2781) by @dependabot
2.0.0a2
Sentry SDK 2.0.0a2 is alpha software and not yet ready for production!
Please give it a spin and test it with your project. If you have any questions or feedback please contact us on Discord in the #python channel or create a GitHub Issue or start a GitHub Discussion.
Thanks!
New Features
- Additional integrations will now be activated automatically if the SDK detects the respective package is installed: Ariadne, ARQ, asyncpg, Chalice, clickhouse-driver, GQL, Graphene, huey, Loguru, PyMongo, Quart, Starlite, Strawberry.
Changed
-
The Pyramid integration will not capture errors that might happen in
authenticated_userid()
in a customAuthenticationPolicy
class. -
The method
need_code_loation
of theMetricsAggregator
was renamed toneed_code_location
. -
The
BackgroundWorker
thread used to process events was renamed fromraven-sentry.BackgroundWorker
tosentry-sdk.BackgroundWorker
. -
The
reraise
function was moved fromsentry_sdk._compat
tosentry_sdk.utils
. -
The
_ScopeManager
was moved fromsentry_sdk.hub
tosentry_sdk.scope
. -
Moved the contents of
tracing_utils_py3.py
totracing_utils.py
. Thestart_child_span_decorator
is now insentry_sdk.tracing_utils
. -
The actual implementation of
get_current_span
was moved tosentry_sdk.tracing_utils
.sentry_sdk.get_current_span
is still accessible as part of the top-level API. -
sentry_sdk.tracing_utils.get_current_span()
does now take ascope
instead of ahub
as parameter. -
sentry_sdk.utils._get_contextvars
does not return a tuple with three values, but a tuple with two values. Thecopy_context
was removed. -
If you create a transaction manually and later mutate the transaction in a
configure_scope
block this does not work anymore. Here is a recipe on how to change your code to make it work:
Your existing implementation:transaction = sentry_sdk.transaction(...) # later in the code execution: with sentry_sdk.configure_scope() as scope: scope.set_transaction_name("new-transaction-name")
needs to be changed to this:
transaction = sentry_sdk.transaction(...) # later in the code execution: scope = sentry_sdk.Scope.get_current_scope() scope.set_transaction_name("new-transaction-name")
-
The classes listed in the table below are now abstract base classes. Therefore, they can no longer be instantiated. Subclasses can only be instantiated if they implement all of the abstract methods.
Show table
Class Abstract methods sentry_sdk.integrations.Integration
setup_once
sentry_sdk.metrics.Metric
add
,serialize_value
, andweight
sentry_sdk.profiler.Scheduler
setup
andteardown
sentry_sdk.transport.Transport
capture_envelope
Removed
- Removed support for Python 2 and Python 3.5. The SDK now requires at least Python 3.6.
- Removed support for Celery 3.*.
- Removed support for Django 1.8, 1.9, 1.10.
- Removed support for Flask 0.*.
- Removed
last_event_id()
top level API. The last event ID is still returned bycapture_event()
,capture_exception()
andcapture_message()
but the top level APIsentry_sdk.last_event_id()
has been removed. - Removed support for sending events to the
/store
endpoint. Everything is now sent to the/envelope
endpoint. If you're on SaaS you don't have to worry about this, but if you're running Sentry yourself you'll need version20.6.0
or higher of self-hosted Sentry. - The deprecated
with_locals
configuration option was removed. Useinclude_local_variables
instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables. - The deprecated
request_bodies
configuration option was removed. Usemax_request_body_size
. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size. - Removed support for
user.segment
. It was also removed from the trace header as well as from the dynamic sampling context. - Removed support for the
install
method for custom integrations. Please usesetup_once
instead. - Removed
sentry_sdk.tracing.Span.new_span
. Usesentry_sdk.tracing.Span.start_child
instead. - Removed
sentry_sdk.tracing.Transaction.new_span
. Usesentry_sdk.tracing.Transaction.start_child
instead. - Removed
sentry_sdk.utils.Auth.store_api_url
. sentry_sdk.utils.Auth.get_api_url
's now accepts asentry_sdk.consts.EndpointType
enum instead of a string as its only parameter. We recommend omitting this argument when calling the function, since the parameter's default value is the only possiblesentry_sdk.consts.EndpointType
value. The parameter exists for future compatibility.- Removed
tracing_utils_py2.py
. Thestart_child_span_decorator
is now insentry_sdk.tracing_utils
. - Removed the
sentry_sdk.profiler.Scheduler.stop_profiling
method. Any calls to this method can simply be removed, since this was a no-op method.
Deprecated
profiler_mode
andprofiles_sample_rate
have been deprecated as_experiments
options. Use them as top level options instead:sentry_sdk.init( ..., profiler_mode="thread", profiles_sample_rate=1.0, )
- Deprecated
sentry_sdk.transport.Transport.capture_event
. Please usesentry_sdk.transport.Transport.capture_envelope
, instead. - Passing a function to
sentry_sdk.init
'stransport
keyword argument has been deprecated. If you wish to provide a custom transport, please pass asentry_sdk.transport.Transport
instance or a subclass. - The parameter
propagate_hub
inThreadingIntegration()
was deprecated and renamed topropagate_scope
.
1.40.6
Various fixes & improvements
- Fix compatibility with
greenlet
/gevent
(#2756) by @sentrivana - Fix query source relative filepath (#2717) by @gggritso
- Support
clickhouse-driver==0.2.7
(#2752) by @sentrivana - Bump
checkouts/data-schemas
from6121fd3
toeb941c2
(#2747) by @dependabot