@@ -44,6 +44,9 @@ class FunctionNode:
4444 closure_func_refs : dict [str , str ] = field (default_factory = dict )
4545 module_vars : dict [str , str ] = field (default_factory = dict )
4646 class_bases : list [str ] = field (default_factory = list )
47+ class_keywords : dict [str , str ] = field (default_factory = dict )
48+ class_attrs : list [str ] = field (default_factory = list )
49+ class_decorators : list [str ] = field (default_factory = list )
4750
4851 def to_dict (self ) -> dict [str , Any ]:
4952 d : dict [str , Any ] = {
@@ -63,6 +66,12 @@ def to_dict(self) -> dict[str, Any]:
6366 d ["module_vars" ] = dict (self .module_vars )
6467 if self .class_bases :
6568 d ["class_bases" ] = list (self .class_bases )
69+ if self .class_keywords :
70+ d ["class_keywords" ] = dict (self .class_keywords )
71+ if self .class_attrs :
72+ d ["class_attrs" ] = list (self .class_attrs )
73+ if self .class_decorators :
74+ d ["class_decorators" ] = list (self .class_decorators )
6675 return d
6776
6877 def to_content_blob (self ) -> dict [str , Any ]:
@@ -86,6 +95,12 @@ def to_content_blob(self) -> dict[str, Any]:
8695 blob ["module_vars" ] = dict (self .module_vars )
8796 if self .class_bases :
8897 blob ["class_bases" ] = list (self .class_bases )
98+ if self .class_keywords :
99+ blob ["class_keywords" ] = dict (self .class_keywords )
100+ if self .class_attrs :
101+ blob ["class_attrs" ] = list (self .class_attrs )
102+ if self .class_decorators :
103+ blob ["class_decorators" ] = list (self .class_decorators )
89104 return blob
90105
91106 def content_hash (self ) -> str :
@@ -107,6 +122,9 @@ def content_hash(self) -> str:
107122 "closure_func_refs" : dict (sorted (self .closure_func_refs .items ())),
108123 "module_vars" : dict (sorted (self .module_vars .items ())),
109124 "class_bases" : list (self .class_bases ),
125+ "class_keywords" : dict (sorted (self .class_keywords .items ())),
126+ "class_attrs" : list (self .class_attrs ),
127+ "class_decorators" : list (self .class_decorators ),
110128 }
111129 raw = json .dumps (canonical , sort_keys = True , separators = ("," , ":" ))
112130 return hashlib .sha256 (raw .encode ("utf-8" )).hexdigest ()[:16 ]
@@ -125,4 +143,7 @@ def from_dict(cls, data: dict[str, Any]) -> Self:
125143 closure_func_refs = data .get ("closure_func_refs" , {}),
126144 module_vars = data .get ("module_vars" , {}),
127145 class_bases = data .get ("class_bases" , []),
146+ class_keywords = data .get ("class_keywords" , {}),
147+ class_attrs = data .get ("class_attrs" , []),
148+ class_decorators = data .get ("class_decorators" , []),
128149 )
0 commit comments