Skip to content

Commit 6bf4b7e

Browse files
committed
retain-transient-locals-in-class
1 parent 4550c11 commit 6bf4b7e

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

IPython/core/guarded_eval.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ def dummy_function(*args, **kwargs):
684684
return None
685685
if isinstance(node, ast.ClassDef):
686686
# TODO support class decorators?
687-
class_locals = {}
687+
class_locals = context.transient_locals.copy()
688688
class_context = context.replace(transient_locals=class_locals)
689689
for child_node in node.body:
690690
eval_node(child_node, class_context)

tests/test_completer.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2141,6 +2141,19 @@ def _(expected):
21412141
),
21422142
"append",
21432143
],
2144+
[
2145+
"\n".join(
2146+
[
2147+
"l = []",
2148+
"class NotYetDefined:",
2149+
" def my_method(self):",
2150+
" return l",
2151+
"my_instance = NotYetDefined()",
2152+
"my_instance.my_method().",
2153+
]
2154+
),
2155+
"append",
2156+
],
21442157
],
21452158
)
21462159
def test_undefined_variables(use_jedi, evaluation, code, insert_text):

0 commit comments

Comments
 (0)