11import ast
2+ import copy
23import inspect
34import re
45import warnings
@@ -565,16 +566,14 @@ def visit_AnnAssign(self, node):
565566 return self .visit_Assign (node )
566567
567568 def assignTarget (self , target , value ):
569+ assert isinstance (target .ctx , ast .Store )
568570 if isinstance (target , ast .Subscript ):
569- assert target .ctx .__class__ .__name__ == "Store"
570571 return self .visit_Subscript_Store (target , value )
571572 if isinstance (target , ast .Tuple ):
572- assert target .ctx .__class__ .__name__ == "Store"
573573 for i , name in enumerate (target .elts ):
574574 self .set_value (self .visit (name ), value .values [i ])
575575 return
576576 if isinstance (target , ast .Attribute ):
577- assert target .ctx .__class__ .__name__ == "Store"
578577 base = self .visit (target .value )
579578 setattr (base , target .attr , value )
580579 return
@@ -600,12 +599,12 @@ def _sanitize_value(value):
600599 self .assignTarget (targets [0 ], values )
601600
602601 def visit_AugAssign (self , node ):
603- name = node .target . id
604- lhs = ast .Name ( id = name , ctx = ast . Load () )
602+ lhs = copy . deepcopy ( node .target )
603+ lhs . ctx = ast .Load ()
605604 rhs = ast .BinOp (lhs , node .op , node .value )
606605 assign = ast .Assign (targets = [node .target ], value = rhs )
607606 self .visit (assign )
608- return self .dereference_name ( name )
607+ return self .visit ( lhs )
609608
610609 def visit_Name (self , node ):
611610 if type (node .ctx ) is ast .Store :
@@ -995,15 +994,15 @@ def visit_While(self, node):
995994 ast .NodeVisitor .generic_visit (self , stmt )
996995
997996 def visit_Subscript_Load (self , node ):
998- assert node .ctx . __class__ . __name__ == " Load"
997+ assert isinstance ( node .ctx , ast . Load )
999998 lhs = self .visit (node .value )
1000999 slices = self .visit (node .slice )
10011000 if _is_triton_tensor (lhs ):
10021001 return lhs .__getitem__ (slices , _builder = self .builder )
10031002 return lhs [slices ]
10041003
10051004 def visit_Subscript_Store (self , node , value ):
1006- assert node .ctx . __class__ . __name__ == " Store"
1005+ assert isinstance ( node .ctx , ast . Store )
10071006 lhs = self .visit (node .value )
10081007 slices = self .visit (node .slice )
10091008 assert isinstance (lhs , language .tuple )
0 commit comments