Skip to content

Add fixture for ValueError.message to modernize #261

@CarstenGrohmann

Description

@CarstenGrohmann

Bug report

Please extend the modernize tool to display a warning when ValueError.message is used, or replace the message attribute
e.g. with str(<exception>), since ValueError.message no longer exists in Python 3.

Reproducer

$ cat example.py2
#!/usr/bin/env python2.7
try:
   raise ValueError('Foo')
except ValueError as e:
   print "Caught: %s" % e.message

$ modernize example.py2 
Loading the following fixers:
   fissix.fixes.fix_apply  (apply)
   fissix.fixes.fix_except  (except)
   fissix.fixes.fix_exec  (exec)
   fissix.fixes.fix_execfile  (execfile)
   fissix.fixes.fix_exitfunc  (exitfunc)
   fissix.fixes.fix_funcattrs  (funcattrs)
   fissix.fixes.fix_has_key  (has_key)
   fissix.fixes.fix_idioms  (idioms)
   fissix.fixes.fix_long  (long)
   fissix.fixes.fix_methodattrs  (methodattrs)
   fissix.fixes.fix_ne  (ne)
   fissix.fixes.fix_numliterals  (numliterals)
   fissix.fixes.fix_operator  (operator)
   fissix.fixes.fix_paren  (paren)
   fissix.fixes.fix_reduce  (reduce)
   fissix.fixes.fix_renames  (renames)
   fissix.fixes.fix_repr  (repr)
   fissix.fixes.fix_set_literal  (set_literal)
   fissix.fixes.fix_standarderror  (standarderror)
   fissix.fixes.fix_sys_exc  (sys_exc)
   fissix.fixes.fix_throw  (throw)
   fissix.fixes.fix_tuple_params  (tuple_params)
   fissix.fixes.fix_types  (types)
   fissix.fixes.fix_ws_comma  (ws_comma)
   fissix.fixes.fix_xreadlines  (xreadlines)
   libmodernize.fixes.fix_basestring  (basestring)
   libmodernize.fixes.fix_dict_six  (dict_six)
   libmodernize.fixes.fix_file  (file)
   libmodernize.fixes.fix_filter  (filter)
   libmodernize.fixes.fix_import  (import)
   libmodernize.fixes.fix_imports_six  (imports_six)
   libmodernize.fixes.fix_input_six  (input_six)
   libmodernize.fixes.fix_int_long_tuple  (int_long_tuple)
   libmodernize.fixes.fix_itertools_imports_six  (itertools_imports_six)
   libmodernize.fixes.fix_itertools_six  (itertools_six)
   libmodernize.fixes.fix_map  (map)
   libmodernize.fixes.fix_metaclass  (metaclass)
   libmodernize.fixes.fix_next  (next)
   libmodernize.fixes.fix_print  (print)
   libmodernize.fixes.fix_raise  (raise)
   libmodernize.fixes.fix_raise_six  (raise_six)
   libmodernize.fixes.fix_unichr  (unichr)
   libmodernize.fixes.fix_unicode_type  (unicode_type)
   libmodernize.fixes.fix_urllib_six  (urllib_six)
   libmodernize.fixes.fix_xrange_six  (xrange_six)
   libmodernize.fixes.fix_zip  (zip)
Applying the following explicit transformations:
   (None)

RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored example.py2
--- example.py2	(original)
+++ example.py2	(refactored)
@@ -1,5 +1,6 @@
#!/usr/bin/env python2.7
+from __future__ import print_function
try:
    raise ValueError('Foo')
except ValueError as e:
-    print "Caught: %s" % e.message
+    print("Caught: %s" % e.message)
RefactoringTool: Files that need to be modified:
RefactoringTool: example.py2

Example of an expected result

--- example.py2	(original)
+++ example.py2	(refactored)
@@ -2,4 +2,4 @@
 try:
     raise ValueError('Foo')
 except ValueError as e:
-    print "Caught: %s" % e.message
+    print("Caught: %s" % str(e))

My environment

  • up-to-date ArchLinux on x86_64
  • Python 3.10.8 (main, Oct 13 2022, 21:13:48) [GCC 12.2.0]
  • modernize 0.8.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions