Skip to content

Commit f76c35c

Browse files
committed
Slightly nicer docstring detection for closure
1 parent 82963cd commit f76c35c

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

uncompyle6/semantics/customize36.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -207,17 +207,12 @@ def n_classdef36(node):
207207
elif build_class[1][0] == "load_closure":
208208
# Python 3 with closures not functions
209209
load_closure = build_class[1]
210-
if load_closure[-4] == "LOAD_CODE":
211-
subclass_code = load_closure[-4].attr
212-
elif hasattr(load_closure[-3], "attr"):
213-
# Python 3.3 classes with closures work like this.
214-
# Note have to test before 3.2 case because
215-
# index -2 also has an attr.
216-
subclass_code = load_closure[-3].attr
217-
elif hasattr(load_closure[-2], "attr"):
218-
# Python 3.2 works like this
219-
subclass_code = load_closure[-2].attr
220-
else:
210+
subclass_code = None
211+
for i in range(-4, -1):
212+
if load_closure[i] == "LOAD_CODE":
213+
subclass_code = load_closure[i].attr
214+
break
215+
if subclass_code is None:
221216
raise RuntimeError(
222217
"Internal Error n_classdef: cannot find " "class body"
223218
)

0 commit comments

Comments
 (0)