20
20
def _patched_find_arguments_from_base_classes (node ):
21
21
"""Patched version that handles AssignAttr nodes in __init__."""
22
22
import astroid .brain .brain_dataclasses as brain_dataclasses_module
23
-
23
+
24
24
# Get the original function implementation
25
- orig_func = brain_dataclasses_module ._find_arguments_from_base_classes .__wrapped__ if hasattr (brain_dataclasses_module ._find_arguments_from_base_classes , '__wrapped__' ) else brain_dataclasses_module ._find_arguments_from_base_classes
26
-
25
+ orig_func = (
26
+ brain_dataclasses_module ._find_arguments_from_base_classes .__wrapped__
27
+ if hasattr (
28
+ brain_dataclasses_module ._find_arguments_from_base_classes , "__wrapped__"
29
+ )
30
+ else brain_dataclasses_module ._find_arguments_from_base_classes
31
+ )
32
+
27
33
pos_only_store = {}
28
34
kw_only_store = {}
29
-
35
+
30
36
for base in reversed (node .mro ()):
31
37
if not base .is_dataclass :
32
38
continue
@@ -46,16 +52,23 @@ def _patched_find_arguments_from_base_classes(node):
46
52
47
53
for kwarg , data in kw_only .items ():
48
54
kw_only_store [kwarg ] = data
49
-
55
+
50
56
return pos_only_store , kw_only_store
51
57
52
58
53
59
# Apply the monkey patch
54
60
try :
55
61
import astroid .brain .brain_dataclasses as brain_dataclasses_module
56
- if not hasattr (brain_dataclasses_module ._find_arguments_from_base_classes , '__wrapped__' ):
57
- brain_dataclasses_module ._find_arguments_from_base_classes .__wrapped__ = brain_dataclasses_module ._find_arguments_from_base_classes
58
- brain_dataclasses_module ._find_arguments_from_base_classes = _patched_find_arguments_from_base_classes
62
+
63
+ if not hasattr (
64
+ brain_dataclasses_module ._find_arguments_from_base_classes , "__wrapped__"
65
+ ):
66
+ brain_dataclasses_module ._find_arguments_from_base_classes .__wrapped__ = (
67
+ brain_dataclasses_module ._find_arguments_from_base_classes
68
+ )
69
+ brain_dataclasses_module ._find_arguments_from_base_classes = (
70
+ _patched_find_arguments_from_base_classes
71
+ )
59
72
except ImportError :
60
73
# astroid.brain.brain_dataclasses might not be available in all versions
61
74
pass
0 commit comments