-
Notifications
You must be signed in to change notification settings - Fork 516
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use executing to infer code qualname (#749)
See #748
- Loading branch information
1 parent
0ee6a25
commit 5c34ead
Showing
7 changed files
with
123 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
from __future__ import absolute_import | ||
|
||
from sentry_sdk import Hub | ||
from sentry_sdk._types import MYPY | ||
from sentry_sdk.integrations import Integration, DidNotEnable | ||
from sentry_sdk.scope import add_global_event_processor | ||
from sentry_sdk.utils import walk_exception_chain, iter_stacks | ||
|
||
if MYPY: | ||
from typing import Optional | ||
|
||
from sentry_sdk._types import Event, Hint | ||
|
||
try: | ||
import executing | ||
except ImportError: | ||
raise DidNotEnable("executing is not installed") | ||
|
||
|
||
class ExecutingIntegration(Integration): | ||
identifier = "executing" | ||
|
||
@staticmethod | ||
def setup_once(): | ||
# type: () -> None | ||
|
||
@add_global_event_processor | ||
def add_executing_info(event, hint): | ||
# type: (Event, Optional[Hint]) -> Optional[Event] | ||
if Hub.current.get_integration(ExecutingIntegration) is None: | ||
return event | ||
|
||
if hint is None: | ||
return event | ||
|
||
exc_info = hint.get("exc_info", None) | ||
|
||
if exc_info is None: | ||
return event | ||
|
||
exception = event.get("exception", None) | ||
|
||
if exception is None: | ||
return event | ||
|
||
values = exception.get("values", None) | ||
|
||
if values is None: | ||
return event | ||
|
||
for exception, (_exc_type, _exc_value, exc_tb) in zip( | ||
reversed(values), walk_exception_chain(exc_info) | ||
): | ||
sentry_frames = [ | ||
frame | ||
for frame in exception.get("stacktrace", {}).get("frames", []) | ||
if frame.get("function") | ||
] | ||
tbs = list(iter_stacks(exc_tb)) | ||
if len(sentry_frames) != len(tbs): | ||
continue | ||
|
||
for sentry_frame, tb in zip(sentry_frames, tbs): | ||
frame = tb.tb_frame | ||
source = executing.Source.for_frame(frame) | ||
sentry_frame["function"] = source.code_qualname(frame.f_code) | ||
|
||
return event |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,6 +28,7 @@ | |
|
||
from sentry_sdk._types import ExcInfo, EndpointType | ||
|
||
|
||
epoch = datetime(1970, 1, 1) | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,3 +7,4 @@ pytest-cov==2.8.1 | |
gevent | ||
eventlet | ||
newrelic | ||
executing |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters