[Python-modules-commits] [fparser] 06/09: WIP more py3

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Jul 28 10:45:31 UTC 2017


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch dev-python3
in repository fparser.

commit 77fe2d7cab0150e38b099b286a13906c52760fba
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Tue Jul 25 18:49:38 2017 +0100

    WIP more py3
---
 src/fparser/Fortran2003.py         | 57 +++++++++++++++++++-------------------
 src/fparser/api.py                 | 14 +++++-----
 src/fparser/base_classes.py        | 39 +++++++++++++-------------
 src/fparser/sourceinfo.py          |  3 +-
 src/fparser/splitline.py           |  2 +-
 src/fparser/typedecl_statements.py | 46 +++++++++++++++---------------
 src/fparser/utils.py               | 22 +++++++--------
 7 files changed, 93 insertions(+), 90 deletions(-)

diff --git a/src/fparser/Fortran2003.py b/src/fparser/Fortran2003.py
index 461836e..660d266 100644
--- a/src/fparser/Fortran2003.py
+++ b/src/fparser/Fortran2003.py
@@ -69,11 +69,12 @@
 # Original author: Pearu Peterson <pearu at cens.ioc.ee>
 # First version created: Oct 2006
 
+from __future__ import print_function
 import re
 import logging
-from splitline import string_replace_map
-import pattern_tools as pattern
-from readfortran import FortranReaderBase
+from .splitline import string_replace_map
+from . import pattern_tools as pattern
+from .readfortran import FortranReaderBase
 
 logger = logging.getLogger("fparser")
 
@@ -92,7 +93,7 @@ def show_result(func):
     def new_func(cls, string, **kws):
         r = func(cls, string, **kws)
         if r is not None and isinstance(r, StmtBase):
-            print '%s(%r) -> %r' % (cls.__name__, string, str(r))
+            print ('%s(%r) -> %r' % (cls.__name__, string, str(r)))
         return r
     return new_func
 
@@ -140,11 +141,11 @@ class Base(object):
             # restore readers content when no match is found.
             try:
                 result = cls.match(string)
-            except NoMatchError, msg:
+            except NoMatchError as msg:
                 if str(msg)=='%s: %r' % (cls.__name__, string): # avoid recursion 1.
                     raise
 
-        #print '__new__:result:',cls.__name__,`string,result`
+        #print '__new__:result:',cls.__name__,repr(string,result)
         if isinstance(result, tuple):
             obj = object.__new__(cls)
             obj.string = string
@@ -160,17 +161,17 @@ class Base(object):
                 #print '%s:%s: %r' % (cls.__name__,subcls.__name__,string)
                 try:
                     obj = subcls(string, parent_cls = parent_cls)
-                except NoMatchError, msg:
+                except NoMatchError as msg:
                     obj = None
                 if obj is not None:
                     return obj
 
         else:
-            raise AssertionError,`result`
+            raise AssertionError(repr(result))
         errmsg = '%s: %r' % (cls.__name__, string)
         #if isinstance(string, FortranReaderBase) and string.fifo_item:
         #    errmsg += ' while reaching %s' % (string.fifo_item[-1])
-        raise NoMatchError, errmsg
+        raise NoMatchError(errmsg)
 
 ##     def restore_reader(self):
 ##         self._item.reader.put_item(self._item)
@@ -224,7 +225,7 @@ content : tuple
               enable_select_type_construct_hook = False,
               enable_case_construct_hook = False
               ):
-        assert isinstance(reader,FortranReaderBase),`reader`
+        assert isinstance(reader,FortranReaderBase),repr(reader)
         content = []
         if startcls is not None:
             try:
@@ -1870,7 +1871,7 @@ class Component_Decl(Base): # R442
         if newline.startswith('='):
             init = Component_Initialization(newline)
         else:
-            assert newline=='',`newline`
+            assert newline=='',repr(newline)
         return name, array_spec, char_length, init
     match = staticmethod(match)
     def tostr(self):
@@ -2465,7 +2466,7 @@ class Entity_Decl(Base): # R504
         elif newline:
             return
         else:
-            assert newline=='',`newline, string`
+            assert newline=='',repr(newline, string)
         return name, array_spec, char_length, init
     match = staticmethod(match)
     def tostr(self):
@@ -3188,7 +3189,7 @@ items : (Namelist_Group_Name, Namelist_Group_Object_List)-tuple
         parts = line.split('/')
         items = []
         fst = parts.pop(0)
-        assert not fst,`fst, parts`
+        assert not fst,repr((fst, parts))
         while len(parts)>=2:
             name,lst = parts[:2]
             del parts[:2]
@@ -3197,7 +3198,7 @@ items : (Namelist_Group_Name, Namelist_Group_Object_List)-tuple
             if lst.endswith(','):
                 lst = lst[:-1].rstrip()
             items.append((Namelist_Group_Name(name),Namelist_Group_Object_List(lst)))
-        assert not parts,`parts`
+        assert not parts,repr(parts)
         return tuple(items)
 
     def tostr(self):
@@ -3551,7 +3552,7 @@ class Allocate_Stmt(StmtBase): # R623
         opts = None
         if i!=-1:
             j = line[:i].rfind(',')
-            assert j!=-1,`i,j,line`
+            assert j!=-1,repr((i,j,line))
             opts = Alloc_Opt_List(repmap(line[j+1:].lstrip()))
             line = line[:j].rstrip()        
         return spec, Allocation_List(repmap(line)), opts
@@ -3694,7 +3695,7 @@ class Deallocate_Stmt(StmtBase): # R635
         opts = None
         if i!=-1:
             j = line[:i].rfind(',')
-            assert j!=-1,`i,j,line`
+            assert j!=-1,repr((i,j,line))
             opts = Dealloc_Opt_List(repmap(line[j+1:].lstrip()))
             line = line[:j].rstrip()
         return Allocate_Object_List(repmap(line)), opts
@@ -3782,7 +3783,7 @@ class Defined_Op(STRINGBase): # R703, 723
     subclass_names = []
     def match(string):
         if pattern.non_defined_binary_op.match(string):
-            raise NoMatchError,'%s: %r' % (Defined_Unary_Op.__name__, string)
+            raise NoMatchError('%s: %r' % (Defined_Unary_Op.__name__, string))
         return STRINGBase.match(pattern.abs_defined_op, string)
     match = staticmethod(match)
 
@@ -4034,13 +4035,13 @@ class Pointer_Assignment_Stmt(StmtBase): # R735
             l = repmap(lhs[i+1:-1].strip())
             try:
                 return Data_Pointer_Object(o), Bounds_Spec_List(l), Data_Target(rhs)
-            except NoMatchError, msg:
+            except NoMatchError as msg:
                 return Data_Pointer_Object(o), Bounds_Remapping_List(l), Data_Target(rhs)
         else:
             lhs = repmap(lhs)
         try:
             return Data_Pointer_Object(lhs), None, Data_Target(rhs)
-        except NoMatchError, msg:
+        except NoMatchError as msg:
             return Proc_Pointer_Object(lhs), None, Proc_Target(rhs)
 
     def tostr(self):
@@ -5444,11 +5445,11 @@ items : (Io_Control_Spec_List, Format, Input_Item_List)
     
     def tostr(self):
         if self.items[0] is not None:
-            assert self.items[1] is None,`self.items`
+            assert self.items[1] is None,repr(self.items)
             if self.items[2] is None:
                 return 'READ(%s)' % (self.items[0])
             return 'READ(%s) %s' % (self.items[0], self.items[2])
-        assert self.items[1] is not None, `self.items`
+        assert self.items[1] is not None, repr(self.items)
         if self.items[2] is None:
             return 'READ %s' % (self.items[1])
         return 'READ %s, %s' % (self.items[1], self.items[2])
@@ -5745,7 +5746,7 @@ items : (File_Unit_Number, Position_Spec_List)
 
     def tostr(self):
         if self.items[0] is not None:
-            assert self.items[1] is None, `self.items`
+            assert self.items[1] is None, repr(self.items)
             return 'BACKSPACE %s' % (self.items[0])
         return 'BACKSPACE(%s)' % (self.items[1])
 
@@ -5773,7 +5774,7 @@ items : (File_Unit_Number, Position_Spec_List)
 
     def tostr(self):
         if self.items[0] is not None:
-            assert self.items[1] is None, `self.items`
+            assert self.items[1] is None, repr(self.items)
             return 'ENDFILE %s' % (self.items[0])
         return 'ENDFILE(%s)' % (self.items[1])
 
@@ -5801,7 +5802,7 @@ items : (File_Unit_Number, Position_Spec_List)
 
     def tostr(self):
         if self.items[0] is not None:
-            assert self.items[1] is None, `self.items`
+            assert self.items[1] is None, repr(self.items)
             return 'REWIND %s' % (self.items[0])
         return 'REWIND(%s)' % (self.items[1])
 
@@ -5853,7 +5854,7 @@ items : (File_Unit_Number, Position_Spec_List)
 
     def tostr(self):
         if self.items[0] is not None:
-            assert self.items[1] is None, `self.items`
+            assert self.items[1] is None, repr(self.items)
             return 'FLUSH %s' % (self.items[0])
         return 'FLUSH(%s)' % (self.items[1])
 
@@ -5915,7 +5916,7 @@ items : (Inquire_Spec_List, Scalar_Int_Variable, Output_Item_List)
 
     def tostr(self):
         if self.items[0] is None:
-            assert None not in self.items[1:],`self.items`
+            assert None not in self.items[1:],repr(self.items)
             return 'INQUIRE(IOLENGTH=%s) %s' % (self.items[1:])
         return 'INQUIRE(%s)' % (self.items[0])
 
@@ -6191,7 +6192,7 @@ class Data_Edit_Desc_C1002(Base):
             if self.items[3] is None:
                 return '%s%s.%s' % (c, self.items[1], self.items[2])
             return '%s%s.%sE%s' % (c, self.items[1], self.items[2], self.items[3])
-        raise NotImpletenetedError,`c`
+        raise NotImpletenetedError(repr(c))
 
 class Data_Edit_Desc(Base): # R1005
     """
@@ -6265,7 +6266,7 @@ class Data_Edit_Desc(Base): # R1005
                     return '%s%s' % (c, self.items[1])
                 else:
                     return '%s%s(%s)' % (c, self.items[1], self.items[2])
-        raise NotImpletenetedError,`c`
+        raise NotImpletenetedError(repr(c))
 
 class W(Base): # R1006
     """
diff --git a/src/fparser/api.py b/src/fparser/api.py
index 1c5d5b6..caf4c1b 100644
--- a/src/fparser/api.py
+++ b/src/fparser/api.py
@@ -72,13 +72,13 @@ Module content
 
 __autodoc__ = ['get_reader', 'parse', 'walk']
 
-import Fortran2003
+from . import Fortran2003
 # import all Statement classes:
-from base_classes import EndStatement, classes
-from block_statements import *
+from .base_classes import EndStatement, classes
+from .block_statements import *
 
 # CHAR_BIT is used to convert object bit sizes to byte sizes
-from utils import CHAR_BIT
+from .utils import CHAR_BIT
 
 def get_reader(input, isfree=None, isstrict=None, include_dirs = None, source_only = None,
                ignore_comments = True):
@@ -115,7 +115,7 @@ def get_reader(input, isfree=None, isstrict=None, include_dirs = None, source_on
     """
     import os
     import re
-    from readfortran import FortranFileReader, FortranStringReader
+    from .readfortran import FortranFileReader, FortranStringReader
     if os.path.isfile(input):
         name,ext = os.path.splitext(input)
         if ext.lower() in ['.c']:
@@ -135,7 +135,7 @@ def get_reader(input, isfree=None, isstrict=None, include_dirs = None, source_on
     elif isinstance(input, str):
         reader = FortranStringReader(input, include_dirs = include_dirs, source_only = source_only)
     else:
-        raise TypeError,'Expected string or filename input but got %s' % (type(input))
+        raise TypeError('Expected string or filename input but got %s' % (type(input)))
     if isfree is None: isfree = reader.isfree
     if isstrict is None: isstrict = reader.isstrict
     reader.set_mode(isfree, isstrict)
@@ -213,7 +213,7 @@ def parse(input, isfree=None, isstrict=None, include_dirs = None, source_only =
     --------
     get_reader
     """
-    from parsefortran import FortranParser
+    from .parsefortran import FortranParser
     reader = get_reader(input, isfree, isstrict, include_dirs, source_only)
     parser = FortranParser(reader, ignore_comments = ignore_comments)
     parser.parse()
diff --git a/src/fparser/base_classes.py b/src/fparser/base_classes.py
index 91c7a77..d4f97c5 100644
--- a/src/fparser/base_classes.py
+++ b/src/fparser/base_classes.py
@@ -73,10 +73,11 @@ import re
 import sys
 import copy
 import logging
-from readfortran import Line, Comment
+from .readfortran import Line, Comment
 from numpy.distutils.misc_util import yellow_text, red_text
-from utils import split_comma, specs_split_comma, is_int_literal_constant
-from utils import classes
+from .utils import split_comma, specs_split_comma, is_int_literal_constant
+from .utils import classes
+from functools import reduce
 
 logger = logging.getLogger('fparser')
 
@@ -91,7 +92,7 @@ class AttributeHolder(object):
     def __init__(self, **kws):
         self._attributes = {}
         self._readonly = []
-        for k,v in kws.items():
+        for k,v in list(kws.items()):
             self._attributes[k] = v
             if callable(v):
                 self._readonly.append(k)
@@ -99,10 +100,10 @@ class AttributeHolder(object):
 
     def __getattr__(self, name):
         if name not in self._attributes:
-            raise AttributeError,'%s instance has no attribute %r, '\
+            raise AttributeError('%s instance has no attribute %r, '\
                   'expected attributes: %s' \
                   % (self.__class__.__name__,name,
-                     ','.join(self._attributes.keys()))
+                     ','.join(list(self._attributes.keys()))))
         value = self._attributes[name]
         if callable(value):
             value = value()
@@ -114,16 +115,16 @@ class AttributeHolder(object):
             self.__dict__[name] = value
             return
         if name in self._readonly:
-            raise AttributeError,'%s instance attribute %r is readonly' \
-                  % (self.__class__.__name__, name)
+            raise AttributeError('%s instance attribute %r is readonly' \
+                  % (self.__class__.__name__, name))
         if name not in self._attributes:
-            raise AttributeError,'%s instance has no attribute %r, '\
+            raise AttributeError('%s instance has no attribute %r, '\
                   'expected attributes: %s' \
-                  % (self.__class__.__name__,name,','.join(self._attributes.keys()))
+                  % (self.__class__.__name__,name,','.join(list(self._attributes.keys()))))
         self._attributes[name] = value
 
     def isempty(self):
-        for k in self._attributes.keys():
+        for k in list(self._attributes.keys()):
             v = getattr(self,k)
             if v: return False
         return True
@@ -134,7 +135,7 @@ class AttributeHolder(object):
         if depth==0: return tab + self.__class__.__name__
         l = [self.__class__.__name__+':']
         ttab = tab + '    '
-        for k in self._attributes.keys():
+        for k in list(self._attributes.keys()):
             v = getattr(self,k)
             if v:
                 if isinstance(v,list):
@@ -147,7 +148,7 @@ class AttributeHolder(object):
 
     def todict(self):
         d = {}
-        for k in self._attributes.keys():
+        for k in list(self._attributes.keys()):
             v = getattr(self, k)
             d[k] = v
         return d
@@ -361,26 +362,26 @@ class Variable(object):
             lattr = attr.lower()
             uattr = attr.upper()
             if lattr.startswith('dimension'):
-                assert self.dimension is None, `self.dimension,attr`
+                assert self.dimension is None, repr(self.dimension,attr)
                 l = attr[9:].lstrip()
-                assert l[0]+l[-1]=='()',`l`
+                assert l[0]+l[-1]=='()',repr(l)
                 self.set_dimension(split_comma(l[1:-1].strip(), self.parent.item))
                 continue
             if lattr.startswith('intent'):
                 l = attr[6:].lstrip()
-                assert l[0]+l[-1]=='()',`l`
+                assert l[0]+l[-1]=='()',repr(l)
                 self.set_intent(specs_split_comma(l[1:-1].strip(),
                                                   self.parent.item, upper=True))
                 continue
             if lattr.startswith('bind'):
                 l = attr[4:].lstrip()
-                assert l[0]+l[-1]=='()',`l`
+                assert l[0]+l[-1]=='()',repr(l)
                 self.bind = specs_split_comma(l[1:-1].strip(), self.parent.item,
                                               upper = True)
                 continue
             if lattr.startswith('check'):
                 l = attr[5:].lstrip()
-                assert l[0]+l[-1]=='()',`l`
+                assert l[0]+l[-1]=='()',repr(l)
                 self.check.extend(split_comma(l[1:-1].strip(), self.parent.item))
                 continue
             if uattr not in attributes:
@@ -746,7 +747,7 @@ class BeginStatement(Statement):
                 # TODO: FIX ME, Comment content is a string
                 self.content.append(classes.Comment(self, item))
             else:
-                raise NotImplementedError(`item`)
+                raise NotImplementedError(repr(item))
             item = self.get_item()
 
         if not end_flag:
diff --git a/src/fparser/sourceinfo.py b/src/fparser/sourceinfo.py
index 7622103..5adf0dc 100644
--- a/src/fparser/sourceinfo.py
+++ b/src/fparser/sourceinfo.py
@@ -75,6 +75,7 @@ Author: Pearu Peterson <pearu at cens.ioc.ee>
 Created: May 2006
 -----
 """
+from __future__ import print_function
 
 __all__ = ['get_source_info', 'get_source_info_str']
 
@@ -169,7 +170,7 @@ def is_free_format(file):
 def simple_main():
     for filename in sys.argv[1:]:
         isfree, isstrict = get_source_info(filename)
-        print '%s: isfree=%s, isstrict=%s'  % (filename, isfree, isstrict)
+        print ('%s: isfree=%s, isstrict=%s'  % (filename, isfree, isstrict))
 
 if __name__ == '__main__':
     simple_main()
diff --git a/src/fparser/splitline.py b/src/fparser/splitline.py
index 9849aa1..751bab9 100644
--- a/src/fparser/splitline.py
+++ b/src/fparser/splitline.py
@@ -227,7 +227,7 @@ class LineSplitterBase(object):
     def __iter__(self):
         return self
 
-    def next(self):
+    def __next__(self):
         item = ''
         while not item:
             item = self.get_item() # get_item raises StopIteration
diff --git a/src/fparser/typedecl_statements.py b/src/fparser/typedecl_statements.py
index 3034278..6c0c87d 100644
--- a/src/fparser/typedecl_statements.py
+++ b/src/fparser/typedecl_statements.py
@@ -74,9 +74,9 @@ __all__ = ['Integer', 'Real', 'DoublePrecision', 'Complex', 'DoubleComplex',
 
 import re
 import string
-from base_classes import Statement, BeginStatement, EndStatement,\
+from .base_classes import Statement, BeginStatement, EndStatement,\
      AttributeHolder, Variable
-from utils import split_comma, AnalyzeError, name_re, is_entity_decl, is_name, CHAR_BIT, parse_array_spec
+from .utils import split_comma, AnalyzeError, name_re, is_entity_decl, is_name, CHAR_BIT, parse_array_spec
 
 # Intrinsic type specification statements
 
@@ -145,7 +145,7 @@ class TypeDeclarationStatement(Statement):
         apply_map = item.apply_map
         clsname = self.__class__.__name__.lower()
         line = item.get_line()
-        from block_statements import Function
+        from .block_statements import Function
 
         if not line.lower().startswith(clsname):
             i = 0
@@ -158,7 +158,7 @@ class TypeDeclarationStatement(Statement):
                     break
             line = line[:i].replace(' ','') + line[i:]
 
-        assert line.lower().startswith(clsname),`line,clsname`
+        assert line.lower().startswith(clsname),repr((line,clsname))
         line = line[len(clsname):].lstrip()
 
         if line.startswith('('):
@@ -221,12 +221,12 @@ class TypeDeclarationStatement(Statement):
 
         if isinstance(self.parent, Function) \
                and self.parent.name in self.entity_decls:
-            assert self.parent.typedecl is None,`self.parent.typedecl`
+            assert self.parent.typedecl is None,repr(self.parent.typedecl)
             self.parent.typedecl = self
             self.ignore = True
         if isinstance(self, Type):
             self.name = self.selector[1].lower()
-            assert is_name(self.name),`self.name`
+            assert is_name(self.name),repr(self.name)
         else:
             self.name = clsname
         return
@@ -238,14 +238,14 @@ class TypeDeclarationStatement(Statement):
         if selector.startswith('*'):
             length = selector[1:].lstrip()
         else:
-            assert selector[0]+selector[-1]=='()',`selector`
+            assert selector[0]+selector[-1]=='()',repr(selector)
             l = selector[1:-1].strip()
             if l.lower().startswith('kind'):
                 l = l[4:].lstrip()
                 if l[0]+l[-1]=='()':
                     kind = 'kind'+l
                 else:
-                    assert l.startswith('='),`l`
+                    assert l.startswith('='),repr(l)
                     kind = l[1:].lstrip()
             else:
                 kind = l
@@ -269,13 +269,13 @@ class TypeDeclarationStatement(Statement):
             l = selector[1:].lstrip()
             if l.startswith('('):
                 if l.endswith(','): l = l[:-1].rstrip()
-                assert l.endswith(')'),`l`
+                assert l.endswith(')'),repr(l)
                 l = l[1:-1].strip()
                 if l.lower().startswith('len'):
                     l = l[3:].lstrip()[1:].lstrip()
             kind=''
         else:
-            assert selector[0]+selector[-1]=='()',`selector`
+            assert selector[0]+selector[-1]=='()',repr(selector)
             l = split_comma(selector[1:-1].strip(), self.item)
             if len(l)==1:
                 l = l[0]
@@ -287,18 +287,18 @@ class TypeDeclarationStatement(Statement):
                 else:
                     kind = ''
             else:
-                assert len(l)==2,`l`
+                assert len(l)==2,repr(l)
                 key0, value0 = self._split_char_selector(l[0])
                 key1, value1 = self._split_char_selector(l[1])
                 if key0=='len':
-                    assert key1 in [None, 'kind'],`key1`
+                    assert key1 in [None, 'kind'],repr(key1)
                     l,kind = value0, value1
                 elif key0=='kind':
-                    assert key1=='len',`key1`
+                    assert key1=='len',repr(key1)
                     l,kind = value1, value0
                 else:
-                    assert key0 is None,`key0`
-                    assert key1 in [None,'kind'],`key1`
+                    assert key0 is None,repr(key0)
+                    assert key1 in [None,'kind'],repr(key1)
                     l, kind = value0, value1
         return l,kind
 
@@ -388,7 +388,7 @@ class TypeDeclarationStatement(Statement):
 
     def _parse_entity(self, line):
         m = name_re(line)
-        assert m,`line,self.item,self.__class__.__name__`
+        assert m,epr((line,self.item,self.__class__.__name__))
         name = line[:m.end()]
         line = line[m.end():].lstrip()
         array_spec = None
@@ -399,7 +399,7 @@ class TypeDeclarationStatement(Statement):
             line = item.get_line()
             if line.startswith('('):
                 i = line.find(')')
-                assert i!=-1,`line`
+                assert i!=-1,repr(line)
                 array_spec = parse_array_spec(line[1:i].strip(), item)
                 line = line[i+1:].lstrip()
 
@@ -416,7 +416,7 @@ class TypeDeclarationStatement(Statement):
         return name, array_spec, char_length, value
 
     def get_zero_value(self):
-        raise NotImplementedError,`self.__class__.__name__`
+        raise NotImplementedError(repr(self.__class__.__name__))
 
     def assign_expression(self, name, value):
         return '%s = %s' % (name, value)
@@ -544,7 +544,7 @@ class Type(TypeDeclarationStatement):
 
     def get_kind(self):
         # See 4.5.2, page 48
-        raise NotImplementedError,`self.__class__.__name__`
+        raise NotImplementedError(repr(self.__class__.__name__))
 
     def get_bit_size(self):
         return self.get_type_decl(self.name).get_bit_size()
@@ -573,17 +573,17 @@ class Implicit(Statement):
         items = []
         for item in split_comma(line, self.item):
             i = item.find('(')
-            assert i!=-1 and item.endswith(')'),`item`
+            assert i!=-1 and item.endswith(')'),repr(item)
             specs = []
             for spec in split_comma(item[i+1:-1].strip(), self.item):
                 if '-' in spec:
                     s,e = spec.lower().split('-')
                     s = s.strip()
                     e = e.strip()
-                    assert s in self.letters and e in self.letters,`s,e`
+                    assert s in self.letters and e in self.letters,repr((s,e))
                 else:
                     e = s = spec.lower().strip()
-                    assert s in self.letters,`s,e`
+                    assert s in self.letters,repr((s,e))
                 specs.append((s,e))
             tspec = item[:i].rstrip()
             stmt = None
@@ -592,7 +592,7 @@ class Implicit(Statement):
                     stmt = cls(self, self.item.copy(tspec))
                     if stmt.isvalid:
                         break
-            assert stmt is not None,`item,line`
+            assert stmt is not None,repr((item,line))
             items.append((stmt,specs))
         self.items = items
         return
diff --git a/src/fparser/utils.py b/src/fparser/utils.py
index c28722d..d14d192 100644
--- a/src/fparser/utils.py
+++ b/src/fparser/utils.py
@@ -74,6 +74,7 @@ Author: Pearu Peterson <pearu at cens.ioc.ee>
 Created: May 2006
 -----
 """
+from __future__ import print_function
 
 __all__ = ['split_comma', 'specs_split_comma',
            'ParseError','AnalyzeError',
@@ -195,7 +196,7 @@ def parse_bind(line, item = None):
         newitem = None
     newline = newline[4:].lstrip()
     i = newline.find(')')
-    assert i!=-1,`newline`
+    assert i!=-1,repr(newline)
     args = []
     for a in specs_split_comma(newline[1:i].strip(), newitem, upper=True):
         args.append(a)
@@ -209,9 +210,9 @@ def parse_result(line, item = None):
         return None, line
     line = line[6:].lstrip()
     i = line.find(')')
-    assert i != -1,`line`
+    assert i != -1,repr(line)
     name = line[1:i].strip()
-    assert is_name(name),`name`
+    assert is_name(name),repr(name)
     return name, line[i+1:].lstrip()
 
 def filter_stmts(content, classes):
@@ -243,7 +244,7 @@ def get_module_files(directory, _cache={}):
         for name in module_line.findall(f.read()):
             name = name[1]
             if name in d:
-                print d[name],'already defines',name
+                print (d[name],'already defines',name)
                 continue
             d[name] = fn
     _cache[directory] = d
@@ -283,8 +284,8 @@ def module_in_file(name, filename):
 def str2stmt(string, isfree=True, isstrict=False):
     """ Convert Fortran code to Statement tree.
     """
-    from readfortran import Line, FortranStringReader
-    from parsefortran import FortranParser
+    from .readfortran import Line, FortranStringReader
+    from .parsefortran import FortranParser
     reader = FortranStringReader(string, isfree, isstrict)
     parser = FortranParser(reader)
     parser.parse()
@@ -314,13 +315,13 @@ def show_item_on_failure(func, _exception_depth=[0]):
     def new_func(self):
         try:
             func(self)
-        except AnalyzeError, msg:
+        except AnalyzeError as msg:
             clsname = self.__class__.__name__
             self.error('%s.analyze error: %s' % (clsname,msg))
             traceback.print_exc()
-        except ParseError, msg:
+        except ParseError as msg:
             self.error('parse error: %s' % (msg))
-        except Exception, msg:
+        except Exception as msg:
             _exception_depth[0] += 1
             if _exception_depth[0]==1:
                 self.error('exception triggered here: %s %s' % (Exception, msg))
@@ -340,7 +341,7 @@ class meta_classes(type):
             raise AttributeError('instance does not have attribute %r' % (name))
         return cls
 
-class classes(type):
+class classes(type, metaclass = meta_classes):
     """Make classes available as attributes of this class.
 
     To add a class to the attributes list, one must use::
@@ -354,7 +355,6 @@ class classes(type):
     * decorate analyze methods with show_item_on_failure
     """
 
-    __metaclass__ = meta_classes
 
     def __new__(metacls, name, bases, dict):
         if 'analyze' in dict:

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/fparser.git



More information about the Python-modules-commits mailing list