Skip to content

Commit 0e2e134

Browse files
fix(pure-eval): Guard against module shadowing (#5252)
Use explicit imports to prevent `AttributeError` when `pure_eval` or `executing` is shadowed. Follows up on #5140.
1 parent d781b88 commit 0e2e134

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

sentry_sdk/integrations/pure_eval.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
from sentry_sdk._types import Event, Hint
1616

1717
try:
18-
import executing
18+
from executing import Source
1919
except ImportError:
2020
raise DidNotEnable("executing is not installed")
2121

2222
try:
23-
import pure_eval
23+
from pure_eval import Evaluator
2424
except ImportError:
2525
raise DidNotEnable("pure_eval is not installed")
2626

@@ -81,7 +81,7 @@ def add_executing_info(
8181

8282

8383
def pure_eval_frame(frame: "FrameType") -> "Dict[str, Any]":
84-
source = executing.Source.for_frame(frame)
84+
source = Source.for_frame(frame)
8585
if not source.tree:
8686
return {}
8787

@@ -98,7 +98,7 @@ def pure_eval_frame(frame: "FrameType") -> "Dict[str, Any]":
9898
if isinstance(scope, (ast.FunctionDef, ast.ClassDef, ast.Module)):
9999
break
100100

101-
evaluator = pure_eval.Evaluator.from_frame(frame)
101+
evaluator = Evaluator.from_frame(frame)
102102
expressions = evaluator.interesting_expressions_grouped(scope)
103103

104104
def closeness(expression: "Tuple[List[Any], Any]") -> "Tuple[int, int]":

tests/test_shadowed_module.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def pytest_generate_tests(metafunc):
3030
submodule_names
3131
- {
3232
"litellm",
33-
"pure_eval",
3433
"ray",
3534
"typer",
3635
},

0 commit comments

Comments
 (0)