Looking to upgrade from Sentry SDK 1.x to 2.x? Here's a comprehensive list of what's changed. Looking for a more digestable summary? See the guide in the docs with the most common migration patterns.
- 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.
- While refactoring the inner workings of the SDK we added new top-level APIs for custom instrumentation called
new_scopeandisolation_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 customAuthenticationPolicyclass. -
The method
need_code_loationof theMetricsAggregatorwas renamed toneed_code_location. -
The
BackgroundWorkerthread used to process events was renamed fromraven-sentry.BackgroundWorkertosentry-sdk.BackgroundWorker. -
The
reraisefunction was moved fromdebugg_ai_sdk._compattodebugg_ai_sdk.utils. -
The
_ScopeManagerwas moved fromdebugg_ai_sdk.hubtodebugg_ai_sdk.scope. -
The signature for the metrics callback function set with
before_emit_metrichas changed frombefore_emit_metric(key, tags)tobefore_emit_metric(key, value, unit, tags) -
Moved the contents of
tracing_utils_py3.pytotracing_utils.py. Thestart_child_span_decoratoris now indebugg_ai_sdk.tracing_utils. -
The actual implementation of
get_current_spanwas moved todebugg_ai_sdk.tracing_utils.debugg_ai_sdk.get_current_spanis still accessible as part of the top-level API. -
debugg_ai_sdk.tracing_utils.add_query_source(): Removed thehubparameter. It is not necessary anymore. -
debugg_ai_sdk.tracing_utils.record_sql_queries(): Removed thehubparameter. It is not necessary anymore. -
debugg_ai_sdk.tracing_utils.get_current_span()does now take ascopeinstead of ahubas parameter. -
debugg_ai_sdk.tracing_utils.should_propagate_trace()now takes aClientinstead of aHubas first parameter. -
debugg_ai_sdk.utils.is_sentry_url()now takes aClientinstead of aHubas first parameter. -
debugg_ai_sdk.utils._get_contextvarsdoes not return a tuple with three values, but a tuple with two values. Thecopy_contextwas removed. -
You no longer have to use
configure_scopeto mutate a transaction. Instead, you simply get the current scope to mutate the transaction. Here is a recipe on how to change your code to make it work: Your existing implementation:transaction = debugg_ai_sdk.transaction(...) # later in the code execution: with debugg_ai_sdk.configure_scope() as scope: scope.set_transaction_name("new-transaction-name")
needs to be changed to this:
transaction = debugg_ai_sdk.transaction(...) # later in the code execution: scope = debugg_ai_sdk.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 debugg_ai_sdk.integrations.Integrationsetup_oncedebugg_ai_sdk.metrics.Metricadd,serialize_value, andweightdebugg_ai_sdk.profiler.Schedulersetupandteardowndebugg_ai_sdk.transport.Transportcapture_envelope
- 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 support for Tornado < 6.
- Removed support for sending events to the
/storeendpoint. Everything is now sent to the/envelopeendpoint. 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.0or higher of self-hosted Sentry. - The deprecated
with_localsconfiguration option was removed. Useinclude_local_variablesinstead. See https://docs.sentry.io/platforms/python/configuration/options/#include-local-variables. - The deprecated
request_bodiesconfiguration 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
installmethod for custom integrations. Please usesetup_onceinstead. - Removed
debugg_ai_sdk.tracing.Span.new_span. Usedebugg_ai_sdk.tracing.Span.start_childinstead. - Removed
debugg_ai_sdk.tracing.Transaction.new_span. Usedebugg_ai_sdk.tracing.Transaction.start_childinstead. - Removed support for creating transactions via
debugg_ai_sdk.tracing.Span(transaction=...). To create a transaction, please usedebugg_ai_sdk.tracing.Transaction(name=...). - Removed
debugg_ai_sdk.utils.Auth.store_api_url. debugg_ai_sdk.utils.Auth.get_api_url's now accepts adebugg_ai_sdk.consts.EndpointTypeenum 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 possibledebugg_ai_sdk.consts.EndpointTypevalue. The parameter exists for future compatibility.- Removed
tracing_utils_py2.py. Thestart_child_span_decoratoris now indebugg_ai_sdk.tracing_utils. - Removed the
debugg_ai_sdk.profiler.Scheduler.stop_profilingmethod. Any calls to this method can simply be removed, since this was a no-op method. - Removed the experimental
metrics_summary_sample_rateconfig option. - Removed the experimental
should_summarize_metricconfig option.
-
Using the
Hubdirectly 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 debugg_ai_sdk with debugg_ai_sdk.start_span(...): # do something
-
Hub cloning is deprecated.
Before:
with Hub(Hub.current) as hub: # do something with the cloned hub
After:
import debugg_ai_sdk with debugg_ai_sdk.isolation_scope() as scope: # do something with the forked scope
-
configure_scopeis deprecated. Modify the current or isolation scope directly instead.Before:
with configure_scope() as scope: # do something with `scope`
After:
from debugg_ai_sdk import get_current_scope scope = get_current_scope() # do something with `scope`
Or:
from debugg_ai_sdk import get_isolation_scope scope = get_isolation_scope() # do something with `scope`
When to use
get_current_scope()andget_isolation_scope()depends on how long the change to the scope should be in effect. If you want the changed scope to affect the whole request-response cycle or the whole execution of task, use the isolation scope. If it's more localized, use the current scope. -
push_scopeis deprecated. Fork the current or the isolation scope instead.Before:
with push_scope() as scope: # do something with `scope`
After:
import debugg_ai_sdk with debugg_ai_sdk.new_scope() as scope: # do something with `scope`
Or:
import debugg_ai_sdk with debugg_ai_sdk.isolation_scope() as scope: # do something with `scope`
new_scope()will fork the current scope, whileisolation_scope()will fork the isolation scope. The lifecycle of a single isolation scope roughly translates to the lifecycle of a transaction in most cases, so if you're looking to create a new separated scope for a whole request-response cycle or task execution, go forisolation_scope(). If you want to wrap a smaller unit code, fork the current scope instead withnew_scope(). -
Accessing the client via the hub has been deprecated. Use the top-level
debugg_ai_sdk.get_client()to get the current client. -
profiler_modeandprofiles_sample_ratehave been deprecated as_experimentsoptions. Use them as top level options instead:debugg_ai_sdk.init( ..., profiler_mode="thread", profiles_sample_rate=1.0, )
-
Deprecated
debugg_ai_sdk.transport.Transport.capture_event. Please usedebugg_ai_sdk.transport.Transport.capture_envelope, instead. -
Passing a function to
debugg_ai_sdk.init'stransportkeyword argument has been deprecated. If you wish to provide a custom transport, please pass adebugg_ai_sdk.transport.Transportinstance or a subclass. -
The parameter
propagate_hubinThreadingIntegration()was deprecated and renamed topropagate_scope.