@@ -75,6 +75,10 @@ def check_visitor_fn_args(ast, node, key, parent, path, ancestors, is_edited=Fal
7575 assert getattr (parent , key ) is node
7676
7777
78+ def get_value (node ):
79+ return getattr (node , "value" , None )
80+
81+
7882def describe_visitor ():
7983 def validates_path_argument ():
8084 ast = parse ("{ a }" , no_location = True )
@@ -219,15 +223,15 @@ class TestVisitor(Visitor):
219223 def enter (self , * args ):
220224 check_visitor_fn_args (ast , * args )
221225 node = args [0 ]
222- kind , value = node .kind , getattr (node , "value" , None )
226+ kind , value = node .kind , get_value (node )
223227 visited .append (["enter" , kind , value ])
224228 if kind == "field" and node .name .value == "b" :
225229 return SKIP
226230
227231 def leave (self , * args ):
228232 check_visitor_fn_args (ast , * args )
229233 node = args [0 ]
230- kind , value = node .kind , getattr (node , "value" , None )
234+ kind , value = node .kind , get_value (node )
231235 visited .append (["leave" , kind , value ])
232236
233237 visit (ast , TestVisitor ())
@@ -258,15 +262,15 @@ class TestVisitor(Visitor):
258262 def enter (self , * args ):
259263 check_visitor_fn_args (ast , * args )
260264 node = args [0 ]
261- kind , value = node .kind , getattr (node , "value" , None )
265+ kind , value = node .kind , get_value (node )
262266 visited .append (["enter" , kind , value ])
263267 if kind == "name" and node .value == "x" :
264268 return BREAK
265269
266270 def leave (self , * args ):
267271 check_visitor_fn_args (ast , * args )
268272 node = args [0 ]
269- kind , value = node .kind , getattr (node , "value" , None )
273+ kind , value = node .kind , get_value (node )
270274 visited .append (["leave" , kind , value ])
271275
272276 visit (ast , TestVisitor ())
@@ -295,13 +299,13 @@ class TestVisitor(Visitor):
295299 def enter (self , * args ):
296300 check_visitor_fn_args (ast , * args )
297301 node = args [0 ]
298- kind , value = node .kind , getattr (node , "value" , None )
302+ kind , value = node .kind , get_value (node )
299303 visited .append (["enter" , kind , value ])
300304
301305 def leave (self , * args ):
302306 check_visitor_fn_args (ast , * args )
303307 node = args [0 ]
304- kind , value = node .kind , getattr (node , "value" , None )
308+ kind , value = node .kind , get_value (node )
305309 visited .append (["leave" , kind , value ])
306310 if kind == "name" and node .value == "x" :
307311 return BREAK
@@ -333,19 +337,19 @@ class TestVisitor(Visitor):
333337 def enter_name (self , * args ):
334338 check_visitor_fn_args (ast , * args )
335339 node = args [0 ]
336- kind , value = node .kind , getattr (node , "value" , None )
340+ kind , value = node .kind , get_value (node )
337341 visited .append (["enter" , kind , value ])
338342
339343 def enter_selection_set (self , * args ):
340344 check_visitor_fn_args (ast , * args )
341345 node = args [0 ]
342- kind , value = node .kind , getattr (node , "value" , None )
346+ kind , value = node .kind , get_value (node )
343347 visited .append (["enter" , kind , value ])
344348
345349 def leave_selection_set (self , * args ):
346350 check_visitor_fn_args (ast , * args )
347351 node = args [0 ]
348- kind , value = node .kind , getattr (node , "value" , None )
352+ kind , value = node .kind , get_value (node )
349353 visited .append (["leave" , kind , value ])
350354
351355 visit (ast , TestVisitor ())
@@ -373,13 +377,13 @@ class TestVisitor(Visitor):
373377 def enter (self , * args ):
374378 check_visitor_fn_args (ast , * args )
375379 node = args [0 ]
376- kind , value = node .kind , getattr (node , "value" , None )
380+ kind , value = node .kind , get_value (node )
377381 visited .append (["enter" , kind , value ])
378382
379383 def leave (self , * args ):
380384 check_visitor_fn_args (ast , * args )
381385 node = args [0 ]
382- kind , value = node .kind , getattr (node , "value" , None )
386+ kind , value = node .kind , get_value (node )
383387 visited .append (["leave" , kind , value ])
384388
385389 visit (ast , TestVisitor ())
@@ -800,15 +804,15 @@ class TestVisitor(Visitor):
800804 def enter (self , * args ):
801805 check_visitor_fn_args (ast , * args )
802806 node = args [0 ]
803- kind , value = node .kind , getattr (node , "value" , None )
807+ kind , value = node .kind , get_value (node )
804808 visited .append (["enter" , kind , value ])
805809 if kind == "field" and node .name .value == "b" :
806810 return SKIP
807811
808812 def leave (self , * args ):
809813 check_visitor_fn_args (ast , * args )
810814 node = args [0 ]
811- kind , value = node .kind , getattr (node , "value" , None )
815+ kind , value = node .kind , get_value (node )
812816 visited .append (["leave" , kind , value ])
813817
814818 visit (ast , ParallelVisitor ([TestVisitor ()]))
@@ -841,7 +845,7 @@ def __init__(self, name):
841845 def enter (self , * args ):
842846 check_visitor_fn_args (ast , * args )
843847 node = args [0 ]
844- kind , value = node .kind , getattr (node , "value" , None )
848+ kind , value = node .kind , get_value (node )
845849 name = self .name
846850 visited .append ([f"no-{ name } " , "enter" , kind , value ])
847851 if kind == "field" and node .name .value == name :
@@ -850,7 +854,7 @@ def enter(self, *args):
850854 def leave (self , * args ):
851855 check_visitor_fn_args (ast , * args )
852856 node = args [0 ]
853- kind , value = node .kind , getattr (node , "value" , None )
857+ kind , value = node .kind , get_value (node )
854858 name = self .name
855859 visited .append ([f"no-{ name } " , "leave" , kind , value ])
856860
@@ -902,15 +906,15 @@ class TestVisitor(Visitor):
902906 def enter (self , * args ):
903907 check_visitor_fn_args (ast , * args )
904908 node = args [0 ]
905- kind , value = node .kind , getattr (node , "value" , None )
909+ kind , value = node .kind , get_value (node )
906910 visited .append (["enter" , kind , value ])
907911 if kind == "name" and node .value == "x" :
908912 return BREAK
909913
910914 def leave (self , * args ):
911915 check_visitor_fn_args (ast , * args )
912916 node = args [0 ]
913- kind , value = node .kind , getattr (node , "value" , None )
917+ kind , value = node .kind , get_value (node )
914918 visited .append (["leave" , kind , value ])
915919
916920 visit (ast , ParallelVisitor ([TestVisitor ()]))
@@ -941,7 +945,7 @@ def __init__(self, name):
941945 def enter (self , * args ):
942946 check_visitor_fn_args (ast , * args )
943947 node = args [0 ]
944- kind , value = node .kind , getattr (node , "value" , None )
948+ kind , value = node .kind , get_value (node )
945949 name = self .name
946950 visited .append ([f"break-{ name } " , "enter" , kind , value ])
947951 if kind == "name" and node .value == name :
@@ -950,7 +954,7 @@ def enter(self, *args):
950954 def leave (self , * args ):
951955 check_visitor_fn_args (ast , * args )
952956 node = args [0 ]
953- kind , value = node .kind , getattr (node , "value" , None )
957+ kind , value = node .kind , get_value (node )
954958 name = self .name
955959 visited .append ([f"break-{ name } " , "leave" , kind , value ])
956960
@@ -988,13 +992,13 @@ class TestVisitor(Visitor):
988992 def enter (self , * args ):
989993 check_visitor_fn_args (ast , * args )
990994 node = args [0 ]
991- kind , value = node .kind , getattr (node , "value" , None )
995+ kind , value = node .kind , get_value (node )
992996 visited .append (["enter" , kind , value ])
993997
994998 def leave (self , * args ):
995999 check_visitor_fn_args (ast , * args )
9961000 node = args [0 ]
997- kind , value = node .kind , getattr (node , "value" , None )
1001+ kind , value = node .kind , get_value (node )
9981002 visited .append (["leave" , kind , value ])
9991003 if kind == "name" and node .value == "x" :
10001004 return BREAK
@@ -1028,14 +1032,14 @@ def __init__(self, name):
10281032 def enter (self , * args ):
10291033 check_visitor_fn_args (ast , * args )
10301034 node = args [0 ]
1031- kind , value = node .kind , getattr (node , "value" , None )
1035+ kind , value = node .kind , get_value (node )
10321036 name = self .name
10331037 visited .append ([f"break-{ name } " , "enter" , kind , value ])
10341038
10351039 def leave (self , * args ):
10361040 check_visitor_fn_args (ast , * args )
10371041 node = args [0 ]
1038- kind , value = node .kind , getattr (node , "value" , None )
1042+ kind , value = node .kind , get_value (node )
10391043 name = self .name
10401044 visited .append ([f"break-{ name } " , "leave" , kind , value ])
10411045 if kind == "field" and node .name .value == name :
@@ -1098,13 +1102,13 @@ class TestVisitor2(Visitor):
10981102 def enter (self , * args ):
10991103 check_visitor_fn_args (ast , * args )
11001104 node = args [0 ]
1101- kind , value = node .kind , getattr (node , "value" , None )
1105+ kind , value = node .kind , get_value (node )
11021106 visited .append (["enter" , kind , value ])
11031107
11041108 def leave (self , * args ):
11051109 check_visitor_fn_args (ast , * args , is_edited = True )
11061110 node = args [0 ]
1107- kind , value = node .kind , getattr (node , "value" , None )
1111+ kind , value = node .kind , get_value (node )
11081112 visited .append (["leave" , kind , value ])
11091113
11101114 edited_ast = visit (ast , ParallelVisitor ([TestVisitor1 (), TestVisitor2 ()]))
@@ -1154,13 +1158,13 @@ class TestVisitor2(Visitor):
11541158 def enter (self , * args ):
11551159 check_visitor_fn_args (ast , * args )
11561160 node = args [0 ]
1157- kind , value = node .kind , getattr (node , "value" , None )
1161+ kind , value = node .kind , get_value (node )
11581162 visited .append (["enter" , kind , value ])
11591163
11601164 def leave (self , * args ):
11611165 check_visitor_fn_args (ast , * args , is_edited = True )
11621166 node = args [0 ]
1163- kind , value = node .kind , getattr (node , "value" , None )
1167+ kind , value = node .kind , get_value (node )
11641168 visited .append (["leave" , kind , value ])
11651169
11661170 edited_ast = visit (ast , ParallelVisitor ([TestVisitor1 (), TestVisitor2 ()]))
0 commit comments