new_scope, isolation_scope. See the Deprecated section to see how they map to the existing APIs.The Pyramid integration will not capture errors that might happen in authenticated_userid() in a custom AuthenticationPolicy class.
The method need_code_loation of the MetricsAggregator was renamed to need_code_location.
The BackgroundWorker thread used to process events was renamed from raven-sentry.BackgroundWorker to sentry-sdk.BackgroundWorker.
The reraise function was moved from sentry_sdk._compat to sentry_sdk.utils.
The _ScopeManager was moved from sentry_sdk.hub to sentry_sdk.scope.
Moved the contents of tracing_utils_py3.py to tracing_utils.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.
The actual implementation of get_current_span was moved to sentry_sdk.tracing_utils. sentry_sdk.get_current_span is still accessible as part of the top-level API.
sentry_sdk.tracing_utils.add_query_source(): Removed the hub parameter. It is not necessary anymore.
sentry_sdk.tracing_utils.record_sql_queries(): Removed the hub parameter. It is not necessary anymore.
sentry_sdk.tracing_utils.get_current_span() does now take a scope instead of a hub as parameter.
sentry_sdk.tracing_utils.should_propagate_trace() now takes a Client instead of a Hub as first parameter.
sentry_sdk.utils.is_sentry_url() now takes a Client instead of a Hub as first parameter.
sentry_sdk.utils._get_contextvars does not return a tuple with three values, but a tuple with two values. The copy_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.
<details> <summary><b>Show table</b></summary>| Class | Abstract methods |
|---|---|
sentry_sdk.integrations.Integration | setup_once |
sentry_sdk.metrics.Metric | add, serialize_value, and weight |
sentry_sdk.profiler.Scheduler | setup and teardown |
sentry_sdk.transport.Transport | capture_envelope |
last_event_id() top level API. The last event ID is still returned by capture_event(), capture_exception() and capture_message() but the top level API sentry_sdk.last_event_id() has been removed./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 version 20.6.0 or higher of self-hosted Sentry.with_locals configuration option was removed. Use include_local_variables instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables.request_bodies configuration option was removed. Use max_request_body_size. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size.user.segment. It was also removed from the trace header as well as from the dynamic sampling context.install method for custom integrations. Please use setup_once instead.sentry_sdk.tracing.Span.new_span. Use sentry_sdk.tracing.Span.start_child instead.sentry_sdk.tracing.Transaction.new_span. Use sentry_sdk.tracing.Transaction.start_child instead.sentry_sdk.tracing.Span(transaction=...). To create a transaction, please use sentry_sdk.tracing.Transaction(name=...).sentry_sdk.utils.Auth.store_api_url.sentry_sdk.utils.Auth.get_api_url's now accepts a sentry_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 possible sentry_sdk.consts.EndpointType value. The parameter exists for future compatibility.tracing_utils_py2.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.sentry_sdk.profiler.Scheduler.stop_profiling method. Any calls to this method can simply be removed, since this was a no-op method.Using the Hub directly as well as using hub-based APIs has been deprecated. Where available, use the top-level API instead; otherwise use the scope API or the client API.
Before:
with hub.start_span(...):
# do something
After:
import sentry_sdk
with sentry_sdk.start_span(...):
# do something
Hub cloning is deprecated.
Before:
with Hub(Hub.current) as hub:
# do something with the cloned hub
After:
import sentry_sdk
with sentry_sdk.isolation_scope() as scope:
# do something with the forked scope
configure_scope is deprecated. Use the new isolation scope directly via Scope.get_isolation_scope() instead.
Before:
with configure_scope() as scope:
# do something with `scope`
After:
from sentry_sdk.scope import Scope
scope = Scope.get_isolation_scope()
# do something with `scope`
push_scope is deprecated. Use the new new_scope context manager to fork the necessary scopes.
Before:
with push_scope() as scope:
# do something with `scope`
After:
import sentry_sdk
with sentry_sdk.new_scope() as scope:
# do something with `scope`
Accessing the client via the hub has been deprecated. Use the top-level sentry_sdk.get_client() to get the current client.
profiler_mode and profiles_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 use sentry_sdk.transport.Transport.capture_envelope, instead.
Passing a function to sentry_sdk.init's transport keyword argument has been deprecated. If you wish to provide a custom transport, please pass a sentry_sdk.transport.Transport instance or a subclass.
The parameter propagate_hub in ThreadingIntegration() was deprecated and renamed to propagate_scope.
keep_alive (#2842) by @sentrivanashould_send_default_pii into client (#2840) by @antonpirkershould_send_default_pii shortcut (#2844) by @szokeasaurusrexscope.should_send_default_pii in FastAPI integration (#2846) by @szokeasaurusrexed078ed to 8232f17 (#2832) by @dependabotPlus 2 more
Add optional keep_alive (#2842) by @sentrivana
If 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 in types.py (#2829) by @szokeasaurusrex
Small API docs improvement (#2828) by @antonpirker
Fixed OpenAI tests (#2834) by @antonpirker
Bump checkouts/data-schemas from ed078ed to 8232f17 (#2832) by @dependabot
The Pyramid integration will not capture errors that might happen in authenticated_userid() in a custom AuthenticationPolicy class.
The method need_code_loation of the MetricsAggregator was renamed to need_code_location.
The BackgroundWorker thread used to process events was renamed from raven-sentry.BackgroundWorker to sentry-sdk.BackgroundWorker.
The reraise function was moved from sentry_sdk._compat to sentry_sdk.utils.
The _ScopeManager was moved from sentry_sdk.hub to sentry_sdk.scope.
Moved the contents of tracing_utils_py3.py to tracing_utils.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.
The actual implementation of get_current_span was moved to sentry_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 a scope instead of a hub as parameter.
sentry_sdk.utils._get_contextvars does not return a tuple with three values, but a tuple with two values. The copy_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.
<details> <summary><b>Show table</b></summary>| Class | Abstract methods |
|---|---|
sentry_sdk.integrations.Integration | setup_once |
sentry_sdk.metrics.Metric | add, serialize_value, and weight |
sentry_sdk.profiler.Scheduler | setup and teardown |
sentry_sdk.transport.Transport | capture_envelope |
last_event_id() top level API. The last event ID is still returned by capture_event(), capture_exception() and capture_message() but the top level API sentry_sdk.last_event_id() has been removed./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 version 20.6.0 or higher of self-hosted Sentry.with_locals configuration option was removed. Use include_local_variables instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables.request_bodies configuration option was removed. Use max_request_body_size. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size.user.segment. It was also removed from the trace header as well as from the dynamic sampling context.install method for custom integrations. Please use setup_once instead.sentry_sdk.tracing.Span.new_span. Use sentry_sdk.tracing.Span.start_child instead.sentry_sdk.tracing.Transaction.new_span. Use sentry_sdk.tracing.Transaction.start_child instead.sentry_sdk.utils.Auth.store_api_url.sentry_sdk.utils.Auth.get_api_url's now accepts a sentry_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 possible sentry_sdk.consts.EndpointType value. The parameter exists for future compatibility.tracing_utils_py2.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.sentry_sdk.profiler.Scheduler.stop_profiling method. Any calls to this method can simply be removed, since this was a no-op method.profiler_mode and profiles_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,
)
sentry_sdk.transport.Transport.capture_event. Please use sentry_sdk.transport.Transport.capture_envelope, instead.sentry_sdk.init's transport keyword argument has been deprecated. If you wish to provide a custom transport, please pass a sentry_sdk.transport.Transport instance or a subclass.propagate_hub in ThreadingIntegration() was deprecated and renamed to propagate_scope.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
The Pyramid integration will not capture errors that might happen in authenticated_userid() in a custom AuthenticationPolicy class.
The method need_code_loation of the MetricsAggregator was renamed to need_code_location.
The BackgroundWorker thread used to process events was renamed from raven-sentry.BackgroundWorker to sentry-sdk.BackgroundWorker.
The reraise function was moved from sentry_sdk._compat to sentry_sdk.utils.
The _ScopeManager was moved from sentry_sdk.hub to sentry_sdk.scope.
Moved the contents of tracing_utils_py3.py to tracing_utils.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.
The actual implementation of get_current_span was moved to sentry_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 a scope instead of a hub as parameter.
sentry_sdk.utils._get_contextvars does not return a tuple with three values, but a tuple with two values. The copy_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.
<details> <summary><b>Show table</b></summary>| Class | Abstract methods |
|---|---|
sentry_sdk.integrations.Integration | setup_once |
sentry_sdk.metrics.Metric | add, serialize_value, and weight |
sentry_sdk.profiler.Scheduler | setup and teardown |
sentry_sdk.transport.Transport | capture_envelope |
last_event_id() top level API. The last event ID is still returned by capture_event(), capture_exception() and capture_message() but the top level API sentry_sdk.last_event_id() has been removed./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 version 20.6.0 or higher of self-hosted Sentry.with_locals configuration option was removed. Use include_local_variables instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables.request_bodies configuration option was removed. Use max_request_body_size. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size.user.segment. It was also removed from the trace header as well as from the dynamic sampling context.install method for custom integrations. Please use setup_once instead.sentry_sdk.tracing.Span.new_span. Use sentry_sdk.tracing.Span.start_child instead.sentry_sdk.tracing.Transaction.new_span. Use sentry_sdk.tracing.Transaction.start_child instead.sentry_sdk.utils.Auth.store_api_url.sentry_sdk.utils.Auth.get_api_url's now accepts a sentry_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 possible sentry_sdk.consts.EndpointType value. The parameter exists for future compatibility.tracing_utils_py2.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.sentry_sdk.profiler.Scheduler.stop_profiling method. Any calls to this method can simply be removed, since this was a no-op method.profiler_mode and profiles_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,
)
sentry_sdk.transport.Transport.capture_event. Please use sentry_sdk.transport.Transport.capture_envelope, instead.sentry_sdk.init's transport keyword argument has been deprecated. If you wish to provide a custom transport, please pass a sentry_sdk.transport.Transport instance or a subclass.propagate_hub in ThreadingIntegration() was deprecated and renamed to propagate_scope.Add recursive scrubbing to EventScrubber (#2755) by @Cheapshot003
By 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 @sentrivana
If the SDK is experiencing connection issues (connection resets, server
closing connection without response, etc.) while sending events to Sentry,
tweaking the default urllib3 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 from eb941c2 to ed078ed (#2781) by @dependabot
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!
The Pyramid integration will not capture errors that might happen in authenticated_userid() in a custom AuthenticationPolicy class.
The method need_code_loation of the MetricsAggregator was renamed to need_code_location.
The BackgroundWorker thread used to process events was renamed from raven-sentry.BackgroundWorker to sentry-sdk.BackgroundWorker.
The reraise function was moved from sentry_sdk._compat to sentry_sdk.utils.
The _ScopeManager was moved from sentry_sdk.hub to sentry_sdk.scope.
Moved the contents of tracing_utils_py3.py to tracing_utils.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.
The actual implementation of get_current_span was moved to sentry_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 a scope instead of a hub as parameter.
sentry_sdk.utils._get_contextvars does not return a tuple with three values, but a tuple with two values. The copy_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.
<details> <summary><b>Show table</b></summary>| Class | Abstract methods |
|---|---|
sentry_sdk.integrations.Integration | setup_once |
sentry_sdk.metrics.Metric | add, serialize_value, and weight |
sentry_sdk.profiler.Scheduler | setup and teardown |
sentry_sdk.transport.Transport | capture_envelope |
last_event_id() top level API. The last event ID is still returned by capture_event(), capture_exception() and capture_message() but the top level API sentry_sdk.last_event_id() has been removed./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 version 20.6.0 or higher of self-hosted Sentry.with_locals configuration option was removed. Use include_local_variables instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables.request_bodies configuration option was removed. Use max_request_body_size. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size.user.segment. It was also removed from the trace header as well as from the dynamic sampling context.install method for custom integrations. Please use setup_once instead.sentry_sdk.tracing.Span.new_span. Use sentry_sdk.tracing.Span.start_child instead.sentry_sdk.tracing.Transaction.new_span. Use sentry_sdk.tracing.Transaction.start_child instead.sentry_sdk.utils.Auth.store_api_url.sentry_sdk.utils.Auth.get_api_url's now accepts a sentry_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 possible sentry_sdk.consts.EndpointType value. The parameter exists for future compatibility.tracing_utils_py2.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.sentry_sdk.profiler.Scheduler.stop_profiling method. Any calls to this method can simply be removed, since this was a no-op method.profiler_mode and profiles_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,
)
sentry_sdk.transport.Transport.capture_event. Please use sentry_sdk.transport.Transport.capture_envelope, instead.sentry_sdk.init's transport keyword argument has been deprecated. If you wish to provide a custom transport, please pass a sentry_sdk.transport.Transport instance or a subclass.propagate_hub in ThreadingIntegration() was deprecated and renamed to propagate_scope.greenlet/gevent (#2756) by @sentrivanaclickhouse-driver==0.2.7 (#2752) by @sentrivanacheckouts/data-schemas from 6121fd3 to eb941c2 (#2747) by @dependabotSentry SDK 2.0a1 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!
The Pyramid integration will not capture errors that might happen in authenticated_userid() in a custom AuthenticationPolicy class.
The method need_code_loation of the MetricsAggregator was renamed to need_code_location.
The BackgroundWorker thread used to process events was renamed from raven-sentry.BackgroundWorker to sentry-sdk.BackgroundWorker.
The reraise function was moved from sentry_sdk._compat to sentry_sdk.utils.
The _ScopeManager was moved from sentry_sdk.hub to sentry_sdk.scope.
Moved the contents of tracing_utils_py3.py to tracing_utils.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.
The actual implementation of get_current_span was moved to sentry_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 a scope instead of a hub as parameter.
sentry_sdk.utils._get_contextvars does not return a tuple with three values, but a tuple with two values. The copy_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.
<details> <summary><b>Show table</b></summary>| Class | Abstract methods |
|---|---|
sentry_sdk.integrations.Integration | setup_once |
sentry_sdk.metrics.Metric | add, serialize_value, and weight |
sentry_sdk.profiler.Scheduler | setup and teardown |
sentry_sdk.transport.Transport | capture_envelope |
last_event_id() top level API. The last event ID is still returned by capture_event(), capture_exception() and capture_message() but the top level API sentry_sdk.last_event_id() has been removed./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 version 20.6.0 or higher of self-hosted Sentry.with_locals configuration option was removed. Use include_local_variables instead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables.request_bodies configuration option was removed. Use max_request_body_size. See https://docs.sentry.io/platforms/python/configuration/options/#max-request-body-size.user.segment. It was also removed from the trace header as well as from the dynamic sampling context.install method for custom integrations. Please use setup_once instead.sentry_sdk.tracing.Span.new_span. Use sentry_sdk.tracing.Span.start_child instead.sentry_sdk.tracing.Transaction.new_span. Use sentry_sdk.tracing.Transaction.start_child instead.sentry_sdk.utils.Auth.store_api_url.sentry_sdk.utils.Auth.get_api_url's now accepts a sentry_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 possible sentry_sdk.consts.EndpointType value. The parameter exists for future compatibility.tracing_utils_py2.py. The start_child_span_decorator is now in sentry_sdk.tracing_utils.sentry_sdk.profiler.Scheduler.stop_profiling method. Any calls to this method can simply be removed, since this was a no-op method.profiler_mode and profiles_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,
)
sentry_sdk.transport.Transport.capture_event. Please use sentry_sdk.transport.Transport.capture_envelope, instead.sentry_sdk.init's transport keyword argument has been deprecated. If you wish to provide a custom transport, please pass a sentry_sdk.transport.Transport instance or a subclass.propagate_hub in ThreadingIntegration() was deprecated and renamed to propagate_scope.Deprecate last_event_id(). (#2749) by @antonpirker
Warn if uWSGI is set up without proper thread support (#2738) by @sentrivana
uWSGI has to be run in threaded mode for the SDK to run properly. If this is not the case, the consequences could range from features not working unexpectedly to uWSGI workers crashing.
Please make sure to run uWSGI with both --enable-threads and --py-call-uwsgi-fork-hooks.
parsed_url can be None (#2734) by @sentrivana
Python 3.7 is not supported anymore by Lambda, so removed it and added 3.12 (#2729) by @antonpirker
aa7058c to 6121fd3 (#2724) by @dependabotpytest error (#2712) by @szokeasaurusrexgevent (#2694) by @sentrivanaengine.url being None (#2708) by @sentrivanasentry_sdk.utils._generate_installed_modules (#2703) by @GlenWalkercodecov/codecov-action from 3 to 4 (#2706) by @dependabotactions/cache from 3 to 4 (#2661) by @dependabotactions/checkout from 3.1.0 to 4.1.1 (#2561) by @dependabotgithub/codeql-action from 2 to 3 (#2603) by @dependabotactions/setup-python from 4 to 5 (#2577) by @dependabotUnicodeDecodeError on Python 2 (#2657) by @sentrivanablack==24.1.0 (#2680) by @sentrivanasentry_sdk.trace type hints (#2633) by @szokeasaurusrexcheckouts/data-schemas from e9f7d58 to aa7058c (#2639) by @dependabotTypeError for static and class methods (#2559) by @szokeasaurusrexctx in Arq integration (#2600) by @ivanovartdata_category from check_in to monitor (#2598) by @sentrivanaerror_sampler function (#2511) by @antonpirkeraiohttp (#2590) by @antonpirkerTypeError with no-argument apply_async (#2575) by @szokeasaurusrexos.path.devnull access issues (#2579) by @sentrivanacode.filepath frame picking logic (#2568) by @sentrivana