@@ -891,30 +891,24 @@ def warn_about_none_ast(self, node, module_path, lineno):
891
891
)
892
892
"""
893
893
894
- warning_msg = ast .Str (
895
- 'Asserting the value None directly, Please use "assert is None" to eliminate ambiguity'
896
- )
897
- AST_NONE = ast .NameConstant (None )
894
+ # using parse because it's different between py2 py3
895
+ AST_NONE = ast .parse ("None" ).body [0 ].value
898
896
val_is_none = ast .Compare (node , [ast .Is ()], [AST_NONE ])
899
- import_warnings = ast .ImportFrom (
900
- module = "warnings" , names = [ast .alias ("warn_explicit" , None )], level = 0
901
- )
902
- import_pytest_warning = ast .ImportFrom (
903
- module = "pytest" , names = [ast .alias ("PytestWarning" , None )], level = 0
904
- )
905
- pytest_warning = ast_Call_helper ("PytestWarning" , warning_msg )
906
- # This won't work because this isn't the same "self" as an AssertionRewriter!
907
- # ast_filename = improved_ast_Call('str',ast.Attribute('self','module_path',ast.Load).module_path)
908
- warn = ast_Call_helper (
909
- "warn_explicit" ,
910
- pytest_warning ,
911
- category = AST_NONE ,
912
- filename = ast .Str (str (module_path )),
913
- lineno = ast .Num (lineno ),
914
- )
915
- return ast .If (
916
- val_is_none , [import_warnings , import_pytest_warning , ast .Expr (warn )], []
917
- )
897
+ send_warning = ast .parse (
898
+ """
899
+ from _pytest.warning_types import PytestWarning
900
+ from warnings import warn_explicit
901
+ warn_explicit(
902
+ PytestWarning('assertion the value None, Please use "assert is None"'),
903
+ category=None,
904
+ filename='{filename}',
905
+ lineno={lineno},
906
+ )
907
+ """ .format (
908
+ filename = str (module_path ), lineno = lineno
909
+ )
910
+ ).body
911
+ return ast .If (val_is_none , send_warning , [])
918
912
919
913
def visit_Name (self , name ):
920
914
# Display the repr of the name if it's a local variable or
0 commit comments