Skip to content
Merged
7 changes: 6 additions & 1 deletion sentry_sdk/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,12 @@ def should_send_default_pii(self):

Returns whether the client should send default PII (Personally Identifiable Information) data to Sentry.
"""
return self.options.get("send_default_pii", False)
result = self.options.get("send_default_pii", False)

if not self.options["dsn"] and self.spotlight is not None:
result = True

return result

@property
def dsn(self):
Expand Down
1 change: 1 addition & 0 deletions sentry_sdk/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,7 @@ class OP:
# This type exists to trick mypy and PyCharm into thinking `init` and `Client`
# take these arguments (even though they take opaque **kwargs)
class ClientConstructor:

def __init__(
self,
dsn=None, # type: Optional[str]
Expand Down
18 changes: 18 additions & 0 deletions tests/test_scope.py
Original file line number Diff line number Diff line change
Expand Up @@ -811,6 +811,24 @@ def test_should_send_default_pii_false(sentry_init):
assert should_send_default_pii() is False


def test_should_send_default_pii_default_false(sentry_init):
sentry_init()

assert should_send_default_pii() is False


def test_should_send_default_pii_false_with_dsn_and_spotlight(sentry_init):
sentry_init(dsn="http://key@localhost/1", spotlight=True)

assert should_send_default_pii() is False


def test_should_send_default_pii_true_without_dsn_and_spotlight(sentry_init):
sentry_init(spotlight=True)

assert should_send_default_pii() is True


def test_set_tags():
scope = Scope()
scope.set_tags({"tag1": "value1", "tag2": "value2"})
Expand Down
Loading