Skip to content

Commit 45a10c0

Browse files
authored
feat: Added last event id to hub (#38)
1 parent d4bbf5e commit 45a10c0

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

sentry_sdk/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def capture_event(self, event, scope=None, hint=None):
158158
event = self._prepare_event(event, scope, hint)
159159
if event is not None:
160160
self._transport.capture_event(event)
161-
return True
161+
return rv
162162

163163
def drain_events(self, timeout=None):
164164
if timeout is None:

sentry_sdk/hub.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ def __init__(self, client_or_hub=None, scope=None):
8080
if scope is None:
8181
scope = Scope()
8282
self._stack = [(client, scope)]
83+
self._last_event_id = None
8384

8485
def __enter__(self):
8586
return _HubManager(self)
@@ -96,6 +97,10 @@ def client(self):
9697
"""Returns the current client on the hub."""
9798
return self._stack[-1][0]
9899

100+
def last_event_id(self):
101+
"""Returns the last event ID."""
102+
return self._last_event_id
103+
99104
def bind_client(self, new):
100105
"""Binds a new client to the hub."""
101106
top = self._stack[-1]
@@ -105,7 +110,10 @@ def capture_event(self, event, hint=None):
105110
"""Captures an event."""
106111
client, scope = self._stack[-1]
107112
if client is not None:
108-
return client.capture_event(event, scope, hint)
113+
rv = client.capture_event(event, scope, hint)
114+
if rv is not None:
115+
self._last_event_id = rv
116+
return rv
109117

110118
def capture_message(self, message, level=None):
111119
"""Captures a message."""

sentry_sdk/minimal.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ def get_current_hub():
5656
return Hub.current
5757

5858

59+
@public
60+
def last_event_id():
61+
hub = Hub.current
62+
if hub is not None:
63+
return hub.last_event_id()
64+
65+
5966
try:
6067
from sentry_sdk.hub import Hub
6168
from sentry_sdk.scope import Scope

tests/test_basics.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from sentry_sdk import configure_scope, capture_exception
1+
from sentry_sdk import configure_scope, capture_exception, last_event_id, Hub
22

33

44
def test_processors(sentry_init, capture_events):
@@ -21,3 +21,20 @@ def error_processor(event, exc_info):
2121
event, = events
2222

2323
assert event["exception"]["values"][0]["value"] == "aha! whatever"
24+
25+
26+
def test_event_id(sentry_init, capture_events):
27+
sentry_init()
28+
events = capture_events()
29+
30+
try:
31+
raise ValueError("aha!")
32+
except Exception:
33+
event_id = capture_exception()
34+
int(event_id, 16)
35+
assert len(event_id) == 32
36+
37+
event, = events
38+
assert event["event_id"] == event_id
39+
assert last_event_id() == event_id
40+
assert Hub.current.last_event_id() == event_id

0 commit comments

Comments
 (0)