Skip to content

feat(data-collection): create DataCollection option in client#6702

Open
ericapisani wants to merge 16 commits into
masterfrom
ep/db-spec-experiement-foundation-dict
Open

feat(data-collection): create DataCollection option in client#6702
ericapisani wants to merge 16 commits into
masterfrom
ep/db-spec-experiement-foundation-dict

Conversation

@ericapisani

@ericapisani ericapisani commented Jun 30, 2026

Copy link
Copy Markdown
Member

Support more granular PII controls via the data_collection option as seen in the spec.

These changes:

  • introduce the option
  • normalizes the user-provided options into a DataCollection dict
  • handles populating the data_collection option based on what the user provided, and whether or not send_default_pii (which will eventually be legacy) was set.

They don't currently hook up to anything in order to keep the size of this pull request somewhat sane.

Some high-level design decisions to call out:

  1. Introducing 2 types for the different config options - one that's more flexible for user input, the other more strict after we've received the input.

This was done so that, once we've received the config from the user and have set defaults for values that weren't provided, we can avoid needing to constantly check if the value is None within the SDK.

  1. Including a provided_by_user property within the DataCollection type

This is mainly to deal with spotlight-related logic within the client, which you can see here.

Fixes PY-2570
Fixes #6700

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊

90453 passed | ⏭️ 6298 skipped | Total: 96751 | Pass Rate: 93.49% | Execution Time: 327m 49s

📊 Comparison with Base Branch

Metric Change
Total Tests 📈 +405
Passed Tests 📈 +405
Failed Tests
Skipped Tests

All tests are passing successfully.

✅ Patch coverage is 95.31%. Project has 2448 uncovered lines.
✅ Project coverage is 89.75%. Comparing base (base) to head (head).

Files with missing lines (3)
File Patch % Lines
sentry_sdk/data_collection.py 98.04% ⚠️ 1 Missing and 2 partials
sentry_sdk/client.py 90.91% ⚠️ 1 Missing
sentry_sdk/scope.py 50.00% ⚠️ 1 Missing
Coverage diff
@@            Coverage Diff             @@
##          main       #PR       +/-##
==========================================
+ Coverage    89.73%    89.75%    +0.02%
==========================================
  Files          192       193        +1
  Lines        23823     23887       +64
  Branches      8226      8244       +18
==========================================
+ Hits         21377     21439       +62
- Misses        2446      2448        +2
- Partials      1351      1351         —

Generated by Codecov Action

@ericapisani ericapisani changed the base branch from ep/db-spec-experiment-foundation to master July 2, 2026 19:43
@ericapisani ericapisani changed the title ref(data-collection): Rework DataCollection as a TypedDict, drop accessors feat(data-collection): create DataCollection option in client Jul 2, 2026
…ssors

Replace the class-based DataCollection/KeyValueCollectionBehavior/
GenAICollection/HttpHeadersCollection API with plain TypedDicts
(DataCollection, DataCollectionUserOptions, and per-category
*CollectionBehaviour/*UserOptions types) defined in _types.py.

Collection mode strings move from camelCase (denyList/allowList) to
snake_case (deny_list/allow_list) to match Python convention, since
this is a Python-only deviation from the spec that is never
serialized to Sentry.

Drop the should_collect_user_info/should_collect_gen_ai_inputs/
should_collect_gen_ai_outputs accessor methods and their module-level
shortcuts in favor of reading data_collection fields directly, and
drop the public sentry_sdk.DataCollection/GenAICollection/
HttpHeadersCollection/KeyValueCollectionBehavior exports.

Revert the Unreleased CHANGELOG entry and README example for the
prior class-based API.
@ericapisani ericapisani force-pushed the ep/db-spec-experiement-foundation-dict branch from 1d30c98 to 8b9dedb Compare July 2, 2026 19:47
Comment thread tests/test_data_collection.py
Comment thread tests/test_data_collection.py
Comment thread sentry_sdk/client.py
Comment thread sentry_sdk/data_collection.py
Comment thread sentry_sdk/data_collection.py Outdated
@ericapisani

Copy link
Copy Markdown
Member Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 0c3be5c. Configure here.

Comment thread sentry_sdk/client.py
Comment thread sentry_sdk/client.py
@ericapisani ericapisani marked this pull request as ready for review July 3, 2026 13:04
@ericapisani ericapisani requested a review from a team as a code owner July 3, 2026 13:04
@linear-code

linear-code Bot commented Jul 3, 2026

Copy link
Copy Markdown

PY-2570

Comment thread sentry_sdk/data_collection.py Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create DataCollection option in client

1 participant