46
46
47
47
if sys .version_info >= (3 , 8 ):
48
48
namedExpr = ast .NamedExpr
49
+ astNameConstant = ast .Constant
50
+ astStr = ast .Constant
51
+ astNum = ast .Constant
49
52
else :
50
53
namedExpr = ast .Expr
54
+ astNameConstant = ast .NameConstant
55
+ astStr = ast .Str
56
+ astNum = ast .Num
51
57
52
58
53
59
assertstate_key = StashKey ["AssertionState" ]()
@@ -680,7 +686,7 @@ def run(self, mod: ast.Module) -> None:
680
686
if (
681
687
expect_docstring
682
688
and isinstance (item , ast .Expr )
683
- and isinstance (item .value , ast . Str )
689
+ and isinstance (item .value , astStr )
684
690
):
685
691
doc = item .value .s
686
692
if self .is_rewrite_disabled (doc ):
@@ -814,7 +820,7 @@ def pop_format_context(self, expl_expr: ast.expr) -> ast.Name:
814
820
current = self .stack .pop ()
815
821
if self .stack :
816
822
self .explanation_specifiers = self .stack [- 1 ]
817
- keys = [ast . Str (key ) for key in current .keys ()]
823
+ keys = [astStr (key ) for key in current .keys ()]
818
824
format_dict = ast .Dict (keys , list (current .values ()))
819
825
form = ast .BinOp (expl_expr , ast .Mod (), format_dict )
820
826
name = "@py_format" + str (next (self .variable_counter ))
@@ -868,16 +874,16 @@ def visit_Assert(self, assert_: ast.Assert) -> List[ast.stmt]:
868
874
negation = ast .UnaryOp (ast .Not (), top_condition )
869
875
870
876
if self .enable_assertion_pass_hook : # Experimental pytest_assertion_pass hook
871
- msg = self .pop_format_context (ast . Str (explanation ))
877
+ msg = self .pop_format_context (astStr (explanation ))
872
878
873
879
# Failed
874
880
if assert_ .msg :
875
881
assertmsg = self .helper ("_format_assertmsg" , assert_ .msg )
876
882
gluestr = "\n >assert "
877
883
else :
878
- assertmsg = ast . Str ("" )
884
+ assertmsg = astStr ("" )
879
885
gluestr = "assert "
880
- err_explanation = ast .BinOp (ast . Str (gluestr ), ast .Add (), msg )
886
+ err_explanation = ast .BinOp (astStr (gluestr ), ast .Add (), msg )
881
887
err_msg = ast .BinOp (assertmsg , ast .Add (), err_explanation )
882
888
err_name = ast .Name ("AssertionError" , ast .Load ())
883
889
fmt = self .helper ("_format_explanation" , err_msg )
@@ -893,8 +899,8 @@ def visit_Assert(self, assert_: ast.Assert) -> List[ast.stmt]:
893
899
hook_call_pass = ast .Expr (
894
900
self .helper (
895
901
"_call_assertion_pass" ,
896
- ast . Num (assert_ .lineno ),
897
- ast . Str (orig ),
902
+ astNum (assert_ .lineno ),
903
+ astStr (orig ),
898
904
fmt_pass ,
899
905
)
900
906
)
@@ -913,7 +919,7 @@ def visit_Assert(self, assert_: ast.Assert) -> List[ast.stmt]:
913
919
variables = [
914
920
ast .Name (name , ast .Store ()) for name in self .format_variables
915
921
]
916
- clear_format = ast .Assign (variables , ast . NameConstant (None ))
922
+ clear_format = ast .Assign (variables , astNameConstant (None ))
917
923
self .statements .append (clear_format )
918
924
919
925
else : # Original assertion rewriting
@@ -924,9 +930,9 @@ def visit_Assert(self, assert_: ast.Assert) -> List[ast.stmt]:
924
930
assertmsg = self .helper ("_format_assertmsg" , assert_ .msg )
925
931
explanation = "\n >assert " + explanation
926
932
else :
927
- assertmsg = ast . Str ("" )
933
+ assertmsg = astStr ("" )
928
934
explanation = "assert " + explanation
929
- template = ast .BinOp (assertmsg , ast .Add (), ast . Str (explanation ))
935
+ template = ast .BinOp (assertmsg , ast .Add (), astStr (explanation ))
930
936
msg = self .pop_format_context (template )
931
937
fmt = self .helper ("_format_explanation" , msg )
932
938
err_name = ast .Name ("AssertionError" , ast .Load ())
@@ -938,7 +944,7 @@ def visit_Assert(self, assert_: ast.Assert) -> List[ast.stmt]:
938
944
# Clear temporary variables by setting them to None.
939
945
if self .variables :
940
946
variables = [ast .Name (name , ast .Store ()) for name in self .variables ]
941
- clear = ast .Assign (variables , ast . NameConstant (None ))
947
+ clear = ast .Assign (variables , astNameConstant (None ))
942
948
self .statements .append (clear )
943
949
# Fix locations (line numbers/column offsets).
944
950
for stmt in self .statements :
@@ -952,20 +958,20 @@ def visit_NamedExpr(self, name: namedExpr) -> Tuple[namedExpr, str]:
952
958
# thinks it's acceptable.
953
959
locs = ast .Call (self .builtin ("locals" ), [], [])
954
960
target_id = name .target .id # type: ignore[attr-defined]
955
- inlocs = ast .Compare (ast . Str (target_id ), [ast .In ()], [locs ])
961
+ inlocs = ast .Compare (astStr (target_id ), [ast .In ()], [locs ])
956
962
dorepr = self .helper ("_should_repr_global_name" , name )
957
963
test = ast .BoolOp (ast .Or (), [inlocs , dorepr ])
958
- expr = ast .IfExp (test , self .display (name ), ast . Str (target_id ))
964
+ expr = ast .IfExp (test , self .display (name ), astStr (target_id ))
959
965
return name , self .explanation_param (expr )
960
966
961
967
def visit_Name (self , name : ast .Name ) -> Tuple [ast .Name , str ]:
962
968
# Display the repr of the name if it's a local variable or
963
969
# _should_repr_global_name() thinks it's acceptable.
964
970
locs = ast .Call (self .builtin ("locals" ), [], [])
965
- inlocs = ast .Compare (ast . Str (name .id ), [ast .In ()], [locs ])
971
+ inlocs = ast .Compare (astStr (name .id ), [ast .In ()], [locs ])
966
972
dorepr = self .helper ("_should_repr_global_name" , name )
967
973
test = ast .BoolOp (ast .Or (), [inlocs , dorepr ])
968
- expr = ast .IfExp (test , self .display (name ), ast . Str (name .id ))
974
+ expr = ast .IfExp (test , self .display (name ), astStr (name .id ))
969
975
return name , self .explanation_param (expr )
970
976
971
977
def visit_BoolOp (self , boolop : ast .BoolOp ) -> Tuple [ast .Name , str ]:
@@ -1001,7 +1007,7 @@ def visit_BoolOp(self, boolop: ast.BoolOp) -> Tuple[ast.Name, str]:
1001
1007
self .push_format_context ()
1002
1008
res , expl = self .visit (v )
1003
1009
body .append (ast .Assign ([ast .Name (res_var , ast .Store ())], res ))
1004
- expl_format = self .pop_format_context (ast . Str (expl ))
1010
+ expl_format = self .pop_format_context (astStr (expl ))
1005
1011
call = ast .Call (app , [expl_format ], [])
1006
1012
self .expl_stmts .append (ast .Expr (call ))
1007
1013
if i < levels :
@@ -1013,7 +1019,7 @@ def visit_BoolOp(self, boolop: ast.BoolOp) -> Tuple[ast.Name, str]:
1013
1019
self .statements = body = inner
1014
1020
self .statements = save
1015
1021
self .expl_stmts = fail_save
1016
- expl_template = self .helper ("_format_boolop" , expl_list , ast . Num (is_or ))
1022
+ expl_template = self .helper ("_format_boolop" , expl_list , astNum (is_or ))
1017
1023
expl = self .pop_format_context (expl_template )
1018
1024
return ast .Name (res_var , ast .Load ()), self .explanation_param (expl )
1019
1025
@@ -1099,9 +1105,9 @@ def visit_Compare(self, comp: ast.Compare) -> Tuple[ast.expr, str]:
1099
1105
next_expl = f"({ next_expl } )"
1100
1106
results .append (next_res )
1101
1107
sym = BINOP_MAP [op .__class__ ]
1102
- syms .append (ast . Str (sym ))
1108
+ syms .append (astStr (sym ))
1103
1109
expl = f"{ left_expl } { sym } { next_expl } "
1104
- expls .append (ast . Str (expl ))
1110
+ expls .append (astStr (expl ))
1105
1111
res_expr = ast .Compare (left_res , [op ], [next_res ])
1106
1112
self .statements .append (ast .Assign ([store_names [i ]], res_expr ))
1107
1113
left_res , left_expl = next_res , next_expl
0 commit comments