File tree Expand file tree Collapse file tree 1 file changed +9
-11
lines changed
Expand file tree Collapse file tree 1 file changed +9
-11
lines changed Original file line number Diff line number Diff line change @@ -29,33 +29,31 @@ class Checker(TypeChecker):
2929 return cls
3030
3131
32- @dataclass
3332class Point:
3433 x: int
3534 y: int
3635
3736
3837p = Point(1, 2)
39- print(p)
38+ print(p, 'OK')
39+ print('---')
4040p.x = 'foo'
41- print(p)
41+ print(p, 'OK' )
4242"""
4343
4444
4545class DecorateClasses (ast .NodeTransformer ):
4646 def visit_ClassDef (self , node ):
47- if not [True for dec in node .decorator_list if dec .id == 'dataclass' ]:
48- # Not a dataclass
49- return node
50- dec = ast .Name (id = 'typed' , ctx = ast .Load ())
51- node .decorator_list .insert (0 , dec )
47+ # Only decorate classes with type annotations
48+ if [True for n in node .body if isinstance (n , ast .AnnAssign )]:
49+ dec = ast .Name (id = 'dataclass' , ctx = ast .Load ())
50+ node .decorator_list .insert (0 , dec )
51+ dec = ast .Name (id = 'typed' , ctx = ast .Load ())
52+ node .decorator_list .insert (0 , dec )
5253 return node
5354
5455
5556tree = ast .parse (CODE )
56- exec (compile (tree , filename = '' , mode = 'exec' ))
57-
58- print ('---' )
5957tree = DecorateClasses ().visit (tree )
6058ast .fix_missing_locations (tree )
6159exec (compile (tree , filename = '' , mode = 'exec' ))
You can’t perform that action at this time.
0 commit comments