Skip to content

Releases: getsentry/sentry-python

2.48.0

16 Dec 14:55

Choose a tag to compare

Middleware spans are now disabled by default in Django, Starlette and FastAPI integrations. Set the middleware_spans integration-level
option to capture individual spans per middleware layer. To record Django middleware spans, for example, configure as follows

  import sentry_sdk
  from sentry_sdk.integrations.django import DjangoIntegration

  sentry_sdk.init(
      dsn="<your-dsn>",
      integrations=[
          DjangoIntegration(middleware_spans=True),
      ],
  )

New Features ✨

  • feat(ai): add single message truncation by @shellmayr in #5079

  • feat(django): Add span around Task.enqueue by @sentrivana in #5209

  • feat(starlette): Set transaction name when middleware spans are disabled by @alexander-alderman-webb in #5223

  • feat: Add "K_REVISION" to environment variable release check (exposed by cloud run) by @rpradal in #5222

Langgraph

OTLP

  • feat(otlp): Optionally capture exceptions from otel's Span.record_exception api by @sl0thentr0py in #5235
  • feat(otlp): Implement new Propagator.inject for OTLPIntegration by @sl0thentr0py in #5221

Bug Fixes 🐛

Integrations

Internal Changes 🔧

2.47.0

03 Dec 14:06
a1e3004

Choose a tag to compare

Bug Fixes 🐛

New Features ✨

Deprecations

Build / dependencies / internal 🔧

2.46.0

24 Nov 09:34
d3375bc

Choose a tag to compare

Various fixes & improvements

2.45.0

18 Nov 13:23

Choose a tag to compare

Various fixes & improvements

  • OTLPIntegration (#4877) by @sl0thentr0py

    Enable the new OTLP integration with the code snippet below, and your OpenTelemetry instrumentation will be automatically sent to Sentry's OTLP ingestion endpoint.

      import sentry_sdk
      from sentry_sdk.integrations.otlp import OTLPIntegration
    
      sentry_sdk.init(
          dsn="<your-dsn>",
          # Add data like inputs and responses;
          # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info
          send_default_pii=True,
          integrations=[
              OTLPIntegration(),
          ],
      )

    Under the hood, this will setup:

    • A SpanExporter that will automatically set up the OTLP ingestion endpoint from your DSN
    • A Propagator that ensures Distributed Tracing works
    • Trace/Span linking for all other Sentry events such as Errors, Logs, Crons and Metrics

    If you were using the SentrySpanProcessor before, we recommend migrating over to OTLPIntegration since it's a much simpler setup.

  • feat(integrations): implement context management for invoke_agent spans (#5089) by @constantinius

  • feat(loguru): Capture extra (#5096) by @sentrivana

  • feat: Attach server.address to metrics (#5113) by @alexander-alderman-webb

  • fix: Cast message and detail attributes before appending exception notes (#5114) by @alexander-alderman-webb

  • fix(integrations): ensure that GEN_AI_AGENT_NAME is properly set for GEN_AI spans under an invoke_agent span (#5030) by @constantinius

  • fix(logs): Update sentry.origin (#5112) by @sentrivana

  • chore: Deprecate description truncation option for Redis spans (#5073) by @alexander-alderman-webb

  • chore: Deprecate max_spans LangChain parameter (#5074) by @alexander-alderman-webb

  • chore(toxgen): Check availability of pip and add detail to exceptions (#5076) by @alexander-alderman-webb

  • chore: add MCP SDK Pydantic AI and OpenAI Agents to the list of auto enabled integrations (#5111) by @constantinius

  • test: add tests for either FastMCP implementation (#5075) by @constantinius

  • fix(ci): Re-enable skipped tests (#5104) by @sentrivana

  • ci: 🤖 Update test matrix with new releases (11/17) (#5110) by @github-actions

  • ci: Force coverage core ctrace for 3.14 (#5108) by @sl0thentr0py

2.44.0

11 Nov 09:36

Choose a tag to compare

Various fixes & improvements

2.43.0

29 Oct 11:26
b069aa2

Choose a tag to compare

Various fixes & improvements

  • Pydantic AI integration (#4906) by @constantinius

    Enable the new Pydantic AI integration with the code snippet below, and you can use the Sentry AI dashboards to observe your AI calls:

    import sentry_sdk
    from sentry_sdk.integrations.pydantic_ai import PydanticAIIntegration
    sentry_sdk.init(
        dsn="<your-dsn>",
        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for tracing.
        traces_sample_rate=1.0,
        # Add data like inputs and responses;
        # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info
        send_default_pii=True,
        integrations=[
            PydanticAIIntegration(),
        ],
    )
  • MCP Python SDK (#4964) by @constantinius

    Enable the new Python MCP integration with the code snippet below:

    import sentry_sdk
    from sentry_sdk.integrations.mcp import MCPIntegration
    sentry_sdk.init(
        dsn="<your-dsn>",
        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for tracing.
        traces_sample_rate=1.0,
        # Add data like inputs and responses;
        # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info
        send_default_pii=True,
        integrations=[
            MCPIntegration(),
        ],
    )
  • fix(strawberry): Remove autodetection, always use sync extension (#4984) by @sentrivana

    Previously, StrawberryIntegration would try to guess whether it should install the sync or async version of itself. This auto-detection was very brittle and could lead to us auto-enabling async code in a sync context. With this change, StrawberryIntegration remains an auto-enabling integration, but it'll enable the sync version by default. If you want to enable the async version, pass the option explicitly:

    sentry_sdk.init(
        # ...
        integrations=[
            StrawberryIntegration(
                async_execution=True
            ),
        ],
    )
  • fix(google-genai): Set agent name (#5038) by @constantinius

  • fix(integrations): hooking into error tracing function to find out if an execute tool span should be set to error (#4986) by @constantinius

  • fix(django): Improve logic for classifying cache hits and misses (#5029) by @alexander-alderman-webb

  • chore(metrics): Rename _metrics to metrics (#5035) by @alexander-alderman-webb

  • fix(tracemetrics): Bump metric buffer size to 1k (#5031) by @k-fish

  • fix startlette deprecation warning (#5034) by @DeoLeung

  • build(deps): bump actions/upload-artifact from 4 to 5 (#5032) by @dependabot

  • fix(ai): truncate messages for google genai (#4992) by @shellmayr

  • fix(ai): add message truncation to litellm (#4973) by @shellmayr

  • feat(langchain): Support v1 (#4874) by @sentrivana

  • ci: Run common test suite on Python 3.14t (#4969) by @alexander-alderman-webb

  • feat: Officially support 3.14 & run integration tests on 3.14 (#4974) by @sentrivana

  • Make logger template format safer to missing kwargs (#4981) by @sl0thentr0py

  • tests(huggingface): Support 1.0.0rc7 (#4979) by @alexander-alderman-webb

  • feat: Enable HTTP request code origin by default (#4967) by @alexander-alderman-webb

  • ci: Run common test suite on Python 3.14 (#4896) by @sentrivana

3.0.0a7

20 Oct 13:50
7d96f39

Choose a tag to compare

3.0.0a7 Pre-release
Pre-release

We are discontinuing development on 3.0. Please see
https://github.com/getsentry/sentry-python/discussions/4955 for more information.

3.0.0a7 is a maintenance release that adds a warning that there won't be
a stable 3.0 release. If you are on a 3.0 alpha release, please switch back
to 2.x to get the newest features and fixes.

2.42.1

20 Oct 12:38

Choose a tag to compare

Various fixes & improvements

2.42.0

15 Oct 07:41

Choose a tag to compare

Various fixes & improvements

  • feat: Add source information for slow outgoing HTTP requests (#4902) by @alexander-alderman-webb

  • tests: Update tox (#4913) by @sentrivana

  • fix(Ray): Retain the original function name when patching Ray tasks (#4858) by @svartalf

  • feat(ai): Add python-genai integration (#4891) by @vgrozdanic
    Enable the new Google GenAI integration with the code snippet below, and you can use the Sentry AI dashboards to observe your AI calls:

    import sentry_sdk
    from sentry_sdk.integrations.google_genai import GoogleGenAIIntegration
    sentry_sdk.init(
        dsn="<your-dsn>",
        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for tracing.
        traces_sample_rate=1.0,
        # Add data like inputs and responses;
        # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info
        send_default_pii=True,
        integrations=[
            GoogleGenAIIntegration(),
        ],
    )

2.41.0

09 Oct 14:12
685287d

Choose a tag to compare

Various fixes & improvements

  • feat: Add concurrent.futures patch to threading integration (#4770) by @alexander-alderman-webb

    The SDK now makes sure to automatically preserve span relationships when using ThreadPoolExecutor.

  • chore: Remove old metrics code (#4899) by @sentrivana

    Removed all code related to the deprecated experimental metrics feature (sentry_sdk.metrics).

  • ref: Remove "experimental" from log function name (#4901) by @sentrivana

  • fix(ai): Add mapping for gen_ai message roles (#4884) by @shellmayr

  • feat(metrics): Add trace metrics behind an experiments flag (#4898) by @k-fish