Petr Vokac 238799e
diff --git a/python/sample.py b/python/sample.py
Petr Vokac 238799e
index 75666308..961214c0 100644
Petr Vokac 238799e
--- a/python/sample.py
Petr Vokac 238799e
+++ b/python/sample.py
Petr Vokac 238799e
@@ -1,5 +1,6 @@
Petr Vokac 238799e
 #!/usr/bin/env python
Petr Vokac 238799e
 
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 
Petr Vokac 238799e
 def test():
Petr Vokac 238799e
@@ -7,8 +8,8 @@ def test():
Petr Vokac 238799e
     try:
Petr Vokac 238799e
       pluginManager = pydmlite.PluginManager()
Petr Vokac 238799e
       pluginManager.loadConfiguration(configFile)
Petr Vokac 238799e
-    except Exception, e:
Petr Vokac 238799e
-      print e
Petr Vokac 238799e
+    except Exception as e:
Petr Vokac 238799e
+      print(e)
Petr Vokac 238799e
       return 
Petr Vokac 238799e
 
Petr Vokac 238799e
     try:
Petr Vokac 238799e
@@ -18,28 +19,28 @@ def test():
Petr Vokac 238799e
       group.setUnsigned("gid", 0)
Petr Vokac 238799e
       securityContext.user.setUnsigned("uid", 0)
Petr Vokac 238799e
       securityContext.groups.append(group)
Petr Vokac 238799e
-    except Exception, e:
Petr Vokac 238799e
-      print e
Petr Vokac 238799e
+    except Exception as e:
Petr Vokac 238799e
+      print(e)
Petr Vokac 238799e
       return 
Petr Vokac 238799e
 
Petr Vokac 238799e
     try:
Petr Vokac 238799e
       stackInstance = pydmlite.StackInstance(pluginManager)
Petr Vokac 238799e
       stackInstance.setSecurityContext(securityContext)
Petr Vokac 238799e
-    except Exception, e:
Petr Vokac 238799e
-      print e
Petr Vokac 238799e
+    except Exception as e:
Petr Vokac 238799e
+      print(e)
Petr Vokac 238799e
       return
Petr Vokac 238799e
 
Petr Vokac 238799e
     try:
Petr Vokac 238799e
       catalog = stackInstance.getCatalog()
Petr Vokac 238799e
-    except Exception, e:
Petr Vokac 238799e
-      print e
Petr Vokac 238799e
+    except Exception as e:
Petr Vokac 238799e
+      print(e)
Petr Vokac 238799e
       return
Petr Vokac 238799e
     try:
Petr Vokac 238799e
       f = catalog.extendedStat("/", True)
Petr Vokac 238799e
-      print f.stat.st_ino
Petr Vokac 238799e
-      print f.stat.st_size
Petr Vokac 238799e
-    except Exception, e:
Petr Vokac 238799e
-      print e
Petr Vokac 238799e
+      print(f.stat.st_ino)
Petr Vokac 238799e
+      print(f.stat.st_size)
Petr Vokac 238799e
+    except Exception as e:
Petr Vokac 238799e
+      print(e)
Petr Vokac 238799e
       return
Petr Vokac 238799e
 
Petr Vokac 238799e
 test()
Petr Vokac 238799e
diff --git a/shell/src/argus.py b/shell/src/argus.py
Petr Vokac 238799e
index 308dcaa6..b382145d 100644
Petr Vokac 238799e
--- a/shell/src/argus.py
Petr Vokac 238799e
+++ b/shell/src/argus.py
Petr Vokac 238799e
@@ -200,8 +200,8 @@ class ArgusBan(object):
Petr Vokac 238799e
                 if [x.text for x in actions] != ['.*']: continue
Petr Vokac 238799e
                 # ignore policies with permit rules
Petr Vokac 238799e
                 rules = policy.findall("{%(xacml)s}Rule" % ArgusBan._PAP_NS)
Petr Vokac 238799e
-                if len(filter(lambda x: x.get('Effect') == 'Permit', rules)) > 0: continue
Petr Vokac 238799e
-                for rules in filter(lambda x: x.get('Effect') == 'Deny', rules):
Petr Vokac 238799e
+                if len([x for x in rules if x.get('Effect') == 'Permit']) > 0: continue
Petr Vokac 238799e
+                for rules in [x for x in rules if x.get('Effect') == 'Deny']:
Petr Vokac 238799e
                     for subject_match in rules.findall("{%(xacml)s}Target/{%(xacml)s}Subjects/{%(xacml)s}Subject/{%(xacml)s}SubjectMatch" % ArgusBan._PAP_NS):
Petr Vokac 238799e
                         subject_type = subject_match.find("{%(xacml)s}SubjectAttributeDesignator" % ArgusBan._PAP_NS)
Petr Vokac 238799e
                         subject_value = subject_match.find("{%(xacml)s}AttributeValue" % ArgusBan._PAP_NS)
Petr Vokac 238799e
diff --git a/shell/src/dmlite-mysql-dirspaces.py b/shell/src/dmlite-mysql-dirspaces.py
Petr Vokac 238799e
index 8a74bc60..e1df54e2 100755
Petr Vokac 238799e
--- a/shell/src/dmlite-mysql-dirspaces.py
Petr Vokac 238799e
+++ b/shell/src/dmlite-mysql-dirspaces.py
Petr Vokac 238799e
@@ -305,7 +305,7 @@ class CachedFullPath(object):
Petr Vokac 238799e
                 elif currid in id2parent:
Petr Vokac 238799e
                     if currid in revids:
Petr Vokac 238799e
                         revids.reverse()
Petr Vokac 238799e
-                        fullpath = '/'.join(map(lambda x: id2name[x], revids))
Petr Vokac 238799e
+                        fullpath = '/'.join([id2name[x] for x in revids])
Petr Vokac 238799e
                         _log.info("db inconsistency: detected directory loop for fileid %i parent %i %s", fileid, currid, fullpath)
Petr Vokac 238799e
                         for revid in revids: self._cache[revid] = None
Petr Vokac 238799e
                         revids = []
Petr Vokac 238799e
@@ -318,7 +318,7 @@ class CachedFullPath(object):
Petr Vokac 238799e
                     if fileid != 0:
Petr Vokac 238799e
                         if fileid != currid:
Petr Vokac 238799e
                             revids.reverse()
Petr Vokac 238799e
-                            fullpath = '/'.join(map(lambda x: id2name[x], revids))
Petr Vokac 238799e
+                            fullpath = '/'.join([id2name[x] for x in revids])
Petr Vokac 238799e
                             _log.info("db inconsistency: could not find path for fileid %i parent %i (most likely the entry is orphan, path %s)", fileid, currid, fullpath)
Petr Vokac 238799e
                         else:
Petr Vokac 238799e
                             _log.info("db inconsistency: could not find path for fileid %i (most likely the entry is orphan)", fileid)
Petr Vokac 238799e
@@ -337,7 +337,7 @@ class CachedFullPath(object):
Petr Vokac 238799e
                         self._cache[revid] = self._cache[currid] + revids[:i+1]
Petr Vokac 238799e
                     if not self._fileid_only:
Petr Vokac 238799e
                         if revid in self._cache_path: continue
Petr Vokac 238799e
-                        pathsuffix = '/'.join(map(lambda x: id2name[x], revids[:i+1]))
Petr Vokac 238799e
+                        pathsuffix = '/'.join([id2name[x] for x in revids[:i+1]])
Petr Vokac 238799e
                         if currid == 0:
Petr Vokac 238799e
                             self._cache_path[revid] = pathsuffix
Petr Vokac 238799e
                         elif currid in self._cache_path:
Petr Vokac 238799e
@@ -449,7 +449,7 @@ def get_quotatoken_data(conn):
Petr Vokac 238799e
 
Petr Vokac 238799e
         # sort quotatokens by path length with longest first
Petr Vokac 238799e
         # (this ordering is assumed by code calling this function)
Petr Vokac 238799e
-        for row in sorted(filter(lambda x: x[0] != None, rows), key=lambda x: len(x[0]), reverse=True):
Petr Vokac 238799e
+        for row in sorted([x for x in rows if x[0] != None], key=lambda x: len(x[0]), reverse=True):
Petr Vokac 238799e
             path, poolname, u_token, s_token, t_space, g_space, u_space = row
Petr Vokac 238799e
             ret.append((path, poolname, u_token, s_token, t_space, g_space, u_space))
Petr Vokac 238799e
 
Petr Vokac 238799e
@@ -572,7 +572,7 @@ def fix_spacetokens_by_path(conn_data, skip=[], updatedb=False):
Petr Vokac 238799e
                     _log.warn("skipping fileid %i, unable to reconstruct its parent %i path (dpm-dbck can correct this problem)", fileid, pfileid)
Petr Vokac 238799e
                     continue
Petr Vokac 238799e
 
Petr Vokac 238799e
-                qt_selected = filter(lambda x: path.startswith(x[0]), qt)
Petr Vokac 238799e
+                qt_selected = [x for x in qt if path.startswith(x[0])]
Petr Vokac 238799e
                 if len(qt_selected) == 0:
Petr Vokac 238799e
                     _log.warn("skipping %s/%s with fileid %i, because it doen't match any quotatoken path", path, name, fileid)
Petr Vokac 238799e
                     continue
Petr Vokac 238799e
@@ -904,9 +904,9 @@ def fix_dir_size(conn_data, updatelevels, updatedb=False):
Petr Vokac 238799e
 
Petr Vokac 238799e
         if len(curr_psize) > 0:
Petr Vokac 238799e
             # try to get real paths for updated directories
Petr Vokac 238799e
-            pathnames = pathname.get_ids_multi(curr_psize.keys())
Petr Vokac 238799e
+            pathnames = pathname.get_ids_multi(list(curr_psize.keys()))
Petr Vokac 238799e
             pathrealname = CachedFullPath(conn_path)
Petr Vokac 238799e
-            pathrealnames = pathrealname.get_path_multi(curr_psize.keys())
Petr Vokac 238799e
+            pathrealnames = pathrealname.get_path_multi(list(curr_psize.keys()))
Petr Vokac 238799e
             for fileid in pathnames.keys():
Petr Vokac 238799e
                 if fileid in pathrealnames:
Petr Vokac 238799e
                     pathnames[fileid] = pathrealnames[fileid]
Petr Vokac 238799e
@@ -1000,7 +1000,7 @@ def fix_spacetokens_size(conn_data, updatedb=False):
Petr Vokac 238799e
                     parent_already_accounted = True
Petr Vokac 238799e
             if parent_already_accounted: continue
Petr Vokac 238799e
             accounted_dirs.append(longer_path)
Petr Vokac 238799e
-        path2subid[path] = map(lambda x: path2id[x], accounted_dirs)
Petr Vokac 238799e
+        path2subid[path] = [path2id[x] for x in accounted_dirs]
Petr Vokac 238799e
 
Petr Vokac 238799e
     updated = 0
Petr Vokac 238799e
     conn.autocommit(False)
Petr Vokac 238799e
@@ -1013,18 +1013,18 @@ def fix_spacetokens_size(conn_data, updatedb=False):
Petr Vokac 238799e
             id2size = {}
Petr Vokac 238799e
             qtsubdirids = path2subid[path]
Petr Vokac 238799e
             cursor = conn.cursor()
Petr Vokac 238799e
-            cursor.execute("SELECT fileid, filesize FROM Cns_file_metadata WHERE fileid IN ({0}) FOR UPDATE".format(','.join(map(lambda x: str(x), [pathid] + qtsubdirids))))
Petr Vokac 238799e
+            cursor.execute("SELECT fileid, filesize FROM Cns_file_metadata WHERE fileid IN ({0}) FOR UPDATE".format(','.join([str(x) for x in [pathid] + qtsubdirids])))
Petr Vokac 238799e
             for row in cursor:
Petr Vokac 238799e
                 fileid, filesize = row
Petr Vokac 238799e
                 id2size[fileid] = filesize
Petr Vokac 238799e
             cursor_dpm = conn_dpm.cursor()
Petr Vokac 238799e
             cursor_dpm.execute("SELECT t_space, u_space FROM dpm_space_reserv WHERE path = %s FOR UPDATE", (path, ))
Petr Vokac 238799e
             t_space, u_space = cursor_dpm.fetchone()
Petr Vokac 238799e
-            pathfreespace = t_space - (id2size[pathid] - sum(map(lambda x: id2size[x], qtsubdirids)))
Petr Vokac 238799e
+            pathfreespace = t_space - (id2size[pathid] - sum([id2size[x] for x in qtsubdirids]))
Petr Vokac 238799e
             if u_space != pathfreespace:
Petr Vokac 238799e
                 _log.info("%supdate spacetoken %s[%s] %.02f%% relative change %i from %i to %i = t_space(%i) - (dirsize(%i) - sum(%s))",
Petr Vokac 238799e
                           dry_run, path2st[path], path, 100. * (u_space - pathfreespace) / pathfreespace, u_space - pathfreespace, u_space,
Petr Vokac 238799e
-                          pathfreespace, t_space, id2size[pathid], ','.join(map(lambda x: "{0}({1})".format(id2path[x], id2size[x]), qtsubdirids)))
Petr Vokac 238799e
+                          pathfreespace, t_space, id2size[pathid], ','.join(["{0}({1})".format(id2path[x], id2size[x]) for x in qtsubdirids]))
Petr Vokac 238799e
                 if updatedb:
Petr Vokac 238799e
                     cursor_dpm.execute("BEGIN") # be explicit
Petr Vokac 238799e
                     cursor_dpm.execute("UPDATE dpm_space_reserv SET u_space = %s WHERE path = %s", (pathfreespace, path))
Petr Vokac 238799e
@@ -1241,7 +1241,7 @@ if __name__ == '__main__':
Petr Vokac 238799e
             _log.error("unknown fix \"%s\", use --help command line option to get more informations", fix)
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
 
Petr Vokac 238799e
-    if not options.force and len(filter(lambda x: x.endswith('offline'), fix_names)):
Petr Vokac 238799e
+    if not options.force and len([x for x in fix_names if x.endswith('offline')]):
Petr Vokac 238799e
         _log.info('DPM must be offline for requested safe DB updates')
Petr Vokac 238799e
 
Petr Vokac 238799e
         # try to open TCP connections to the DPM headnode service ports
Petr Vokac 238799e
diff --git a/shell/src/dmlite-prom.py b/shell/src/dmlite-prom.py
Petr Vokac 238799e
index 2629c3b4..ab9bf211 100755
Petr Vokac 238799e
--- a/shell/src/dmlite-prom.py
Petr Vokac 238799e
+++ b/shell/src/dmlite-prom.py
Petr Vokac 238799e
@@ -15,12 +15,13 @@ import os, sys, re
Petr Vokac 238799e
 import optparse
Petr Vokac 238799e
 import socket
Petr Vokac 238799e
 import logging, logging.handlers
Petr Vokac 238799e
-from io import StringIO
Petr Vokac 238799e
 try:
Petr Vokac 238799e
-    from urllib.parse import urlparse
Petr Vokac 238799e
+    from io import StringIO
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    from StringIO import StringIO
Petr Vokac 238799e
+try:
Petr Vokac 238799e
     from urllib.request import urlopen
Petr Vokac 238799e
 except ImportError:
Petr Vokac 238799e
-    from urlparse import urlparse
Petr Vokac 238799e
     from urllib2 import urlopen
Petr Vokac 238799e
 
Petr Vokac 238799e
 __version__ = '0.0.1'
Petr Vokac 238799e
diff --git a/shell/src/dmlite-shell b/shell/src/dmlite-shell
Petr Vokac 238799e
index 2eec3ed8..26d3ec4b 100755
Petr Vokac 238799e
--- a/shell/src/dmlite-shell
Petr Vokac 238799e
+++ b/shell/src/dmlite-shell
Petr Vokac 238799e
@@ -16,6 +16,11 @@ import atexit
Petr Vokac 238799e
 import argparse
Petr Vokac 238799e
 import logging, logging.handlers
Petr Vokac 238799e
 
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    input = raw_input  # Redefine for Python 2
Petr Vokac 238799e
+except NameError:
Petr Vokac 238799e
+    pass
Petr Vokac 238799e
+
Petr Vokac 238799e
 __version__ = '1.13.3'
Petr Vokac 238799e
 
Petr Vokac 238799e
 _log = logging.getLogger('dmlite-shell')
Petr Vokac 238799e
@@ -149,9 +154,9 @@ def main():
Petr Vokac 238799e
             # get next command
Petr Vokac 238799e
             try:
Petr Vokac 238799e
                 if sys.__stdin__.isatty():
Petr Vokac 238799e
-                    cmdline = raw_input('> ')
Petr Vokac 238799e
+                    cmdline = input('> ')
Petr Vokac 238799e
                 else:
Petr Vokac 238799e
-                    cmdline = raw_input()
Petr Vokac 238799e
+                    cmdline = input()
Petr Vokac 238799e
                 cmdline = cmdline.strip()
Petr Vokac 238799e
             except EOFError:
Petr Vokac 238799e
                 # all commands from input have been executed, exit...
Petr Vokac 238799e
diff --git a/shell/src/dpm-storage-summary.cgi b/shell/src/dpm-storage-summary.cgi
Petr Vokac 238799e
index 10bc471a..208dbf55 100755
Petr Vokac 238799e
--- a/shell/src/dpm-storage-summary.cgi
Petr Vokac 238799e
+++ b/shell/src/dpm-storage-summary.cgi
Petr Vokac 238799e
@@ -25,7 +25,10 @@ from __future__ import division
Petr Vokac 238799e
 
Petr Vokac 238799e
 import os, sys, time
Petr Vokac 238799e
 import socket
Petr Vokac 238799e
-import StringIO
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    import io as StringIO
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    import StringIO
Petr Vokac 238799e
 import json
Petr Vokac 238799e
 import logging
Petr Vokac 238799e
 import logging.handlers
Petr Vokac 238799e
diff --git a/shell/src/dpm-storage-summary.py b/shell/src/dpm-storage-summary.py
Petr Vokac 238799e
index 5670dfef..ff932643 100755
Petr Vokac 238799e
--- a/shell/src/dpm-storage-summary.py
Petr Vokac 238799e
+++ b/shell/src/dpm-storage-summary.py
Petr Vokac 238799e
@@ -23,7 +23,7 @@ _log = logging.getLogger('DPMSRR')
Petr Vokac 238799e
 
Petr Vokac 238799e
 
Petr Vokac 238799e
 # The top level object
Petr Vokac 238799e
-class storageService:
Petr Vokac 238799e
+class storageService(object):
Petr Vokac 238799e
 
Petr Vokac 238799e
     def __init__(self, config):
Petr Vokac 238799e
         self.config = config
Petr Vokac 238799e
diff --git a/shell/src/infoutils.py b/shell/src/infoutils.py
Petr Vokac 238799e
index bfc1e3d9..7e00b196 100755
Petr Vokac 238799e
--- a/shell/src/infoutils.py
Petr Vokac 238799e
+++ b/shell/src/infoutils.py
Petr Vokac 238799e
@@ -1,3 +1,4 @@
Petr Vokac 238799e
+from __future__ import division
Petr Vokac 238799e
 import json
Petr Vokac 238799e
 import re
Petr Vokac 238799e
 import subprocess
Petr Vokac 238799e
@@ -10,7 +11,7 @@ import rpm
Petr Vokac 238799e
 from dmliteshell import executor
Petr Vokac 238799e
 
Petr Vokac 238799e
 
Petr Vokac 238799e
-class SystemInfo:
Petr Vokac 238799e
+class SystemInfo(object):
Petr Vokac 238799e
     """All necessary info on the DPM and the system"""
Petr Vokac 238799e
 
Petr Vokac 238799e
     def __init__(self, config=None):
Petr Vokac 238799e
@@ -36,7 +37,7 @@ class SystemInfo:
Petr Vokac 238799e
         if mi.count() != 1:
Petr Vokac 238799e
             return None
Petr Vokac 238799e
         else:
Petr Vokac 238799e
-            entry = mi.next()
Petr Vokac 238799e
+            entry = next(mi)
Petr Vokac 238799e
             return str(entry['version'])
Petr Vokac 238799e
 
Petr Vokac 238799e
     def nameversion(self, packages):
Petr Vokac 238799e
@@ -107,20 +108,20 @@ class SystemInfo:
Petr Vokac 238799e
         totalgroups = set([])
Petr Vokac 238799e
         for space, qt in jgqt.items():
Petr Vokac 238799e
             if isinstance(qt["groups"], dict):
Petr Vokac 238799e
-                groups = qt["groups"].values()
Petr Vokac 238799e
+                groups = list(qt["groups"].values())
Petr Vokac 238799e
             if isinstance(qt["groups"], list):
Petr Vokac 238799e
                 groups = qt["groups"]
Petr Vokac 238799e
             # don't show "root" qt group unless it is the only group asociated
Petr Vokac 238799e
             # with this space, because ldif code rely on non-empty groups
Petr Vokac 238799e
             if len(groups) > 1: groups.remove("root")
Petr Vokac 238799e
             qt["groups"] = groups
Petr Vokac 238799e
-            map(totalgroups.add, groups)
Petr Vokac 238799e
+            list(map(totalgroups.add, groups))
Petr Vokac 238799e
             totalcapacity += int(qt["quotatktotspace"])
Petr Vokac 238799e
             totalused += int(qt["pathusedspace"])
Petr Vokac 238799e
         return jgqt, totalcapacity, totalused, list(totalgroups)
Petr Vokac 238799e
 
Petr Vokac 238799e
 
Petr Vokac 238799e
-class Entry:
Petr Vokac 238799e
+class Entry(object):
Petr Vokac 238799e
     """Base class for all GLUE2 entries"""
Petr Vokac 238799e
 
Petr Vokac 238799e
     def __init__(self):
Petr Vokac 238799e
@@ -248,9 +249,9 @@ class StorageServiceCapacity(Entry):
Petr Vokac 238799e
         self.name = "GLUE2StorageServiceCapacityID"
Petr Vokac 238799e
         self.Attributes["GLUE2StorageServiceCapacityID"] = [hostname + "/StorageServiceCapacity"]
Petr Vokac 238799e
         self.Attributes["GLUE2StorageServiceCapacityType"] = ["online"]
Petr Vokac 238799e
-        self.Attributes["GLUE2StorageServiceCapacityFreeSize"] = [str((tot - used) / 1024**3)]
Petr Vokac 238799e
-        self.Attributes["GLUE2StorageServiceCapacityTotalSize"] = [str(tot / 1024**3)]
Petr Vokac 238799e
-        self.Attributes["GLUE2StorageServiceCapacityUsedSize"] = [str(used / 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2StorageServiceCapacityFreeSize"] = [str((tot - used) // 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2StorageServiceCapacityTotalSize"] = [str(tot // 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2StorageServiceCapacityUsedSize"] = [str(used // 1024**3)]
Petr Vokac 238799e
         self.Attributes["GLUE2StorageServiceCapacityStorageServiceForeignKey"] = ["Undefined"]
Petr Vokac 238799e
         self.Attributes["ObjectClass"] = ["GLUE2StorageServiceCapacity"]
Petr Vokac 238799e
 
Petr Vokac 238799e
@@ -265,9 +266,9 @@ class DataStore(Entry):
Petr Vokac 238799e
         Entry.__init__(self)
Petr Vokac 238799e
         self.name = "GLUE2ResourceID"
Petr Vokac 238799e
         self.Attributes["GLUE2ResourceID"] = [hostname + "/DataStore"]
Petr Vokac 238799e
-        self.Attributes["GLUE2DataStoreTotalSize"] = [str(tot / 1024**3)]
Petr Vokac 238799e
-        self.Attributes["GLUE2DataStoreUsedSize"] = [str(used / 1024**3)]
Petr Vokac 238799e
-        self.Attributes["GLUE2DataStoreFreeSize"] = [str((tot - used) / 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2DataStoreTotalSize"] = [str(tot // 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2DataStoreUsedSize"] = [str(used // 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2DataStoreFreeSize"] = [str((tot - used) // 1024**3)]
Petr Vokac 238799e
         self.Attributes["GLUE2DataStoreType"] = ["disk"]
Petr Vokac 238799e
         self.Attributes["GLUE2DataStoreLatency"] = ["online"]
Petr Vokac 238799e
         self.Attributes["GLUE2DataStoreStorageManagerForeignKey"] = ["Undefined"]
Petr Vokac 238799e
@@ -344,9 +345,9 @@ class ShareCapacity(Entry):
Petr Vokac 238799e
         Entry.__init__(self)
Petr Vokac 238799e
         self.name = "GLUE2StorageShareCapacityID"
Petr Vokac 238799e
         self.Attributes["GLUE2StorageShareCapacityID"] = [hostname + "/Capacity/" + qtname]
Petr Vokac 238799e
-        self.Attributes["GLUE2StorageShareCapacityTotalSize"] = [str(qtspace / 1024**3)]
Petr Vokac 238799e
-        self.Attributes["GLUE2StorageShareCapacityUsedSize"] = [str(pathused / 1024**3)]
Petr Vokac 238799e
-        self.Attributes["GLUE2StorageShareCapacityFreeSize"] = [str((qtspace - pathused) / 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2StorageShareCapacityTotalSize"] = [str(qtspace // 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2StorageShareCapacityUsedSize"] = [str(pathused // 1024**3)]
Petr Vokac 238799e
+        self.Attributes["GLUE2StorageShareCapacityFreeSize"] = [str((qtspace - pathused) // 1024**3)]
Petr Vokac 238799e
         self.Attributes["GLUE2StorageShareCapacityType"] = ["online"]
Petr Vokac 238799e
         self.Attributes["GLUE2StorageShareCapacityStorageShareForeignKey"] = ["Undefined"]
Petr Vokac 238799e
         self.Attributes["ObjectClass"] = ["GLUE2StorageShareCapacity"]
Petr Vokac 238799e
diff --git a/shell/src/interpreter.py b/shell/src/interpreter.py
Petr Vokac 238799e
index d18f918b..94e86ba7 100644
Petr Vokac 238799e
--- a/shell/src/interpreter.py
Petr Vokac 238799e
+++ b/shell/src/interpreter.py
Petr Vokac 238799e
@@ -1,3 +1,6 @@
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
+from __future__ import absolute_import
Petr Vokac 238799e
+from __future__ import division
Petr Vokac 238799e
 # interpreter.py
Petr Vokac 238799e
 
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
@@ -10,19 +13,28 @@ import re
Petr Vokac 238799e
 import time
Petr Vokac 238799e
 import dateutil.parser
Petr Vokac 238799e
 import pycurl
Petr Vokac 238799e
-import urllib
Petr Vokac 238799e
-from dbutils import DPMDB
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    from urllib.parse import unquote
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    from urllib import unquote
Petr Vokac 238799e
+from .dbutils import DPMDB
Petr Vokac 238799e
 import threading
Petr Vokac 238799e
-import Queue
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    import queue as Queue
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    import Queue
Petr Vokac 238799e
 import signal
Petr Vokac 238799e
 import socket
Petr Vokac 238799e
-from executor import DomeExecutor
Petr Vokac 238799e
+from .executor import DomeExecutor
Petr Vokac 238799e
 import json
Petr Vokac 238799e
 import pprint
Petr Vokac 238799e
-import StringIO
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    import io as StringIO
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    import StringIO
Petr Vokac 238799e
 from M2Crypto import X509
Petr Vokac 238799e
-import utils
Petr Vokac 238799e
-import argus
Petr Vokac 238799e
+from . import utils
Petr Vokac 238799e
+from . import argus
Petr Vokac 238799e
 
Petr Vokac 238799e
 try:
Petr Vokac 238799e
     import dpm2
Petr Vokac 238799e
@@ -38,7 +50,7 @@ activitystatus = {'UNKNOWN': 0, 'ONLINE': 1, 'DOWN': 2}
Petr Vokac 238799e
 activitystatusbycode = dict((v, k) for k, v in activitystatus.items())
Petr Vokac 238799e
 
Petr Vokac 238799e
 
Petr Vokac 238799e
-class DMLiteInterpreter:
Petr Vokac 238799e
+class DMLiteInterpreter(object):
Petr Vokac 238799e
     """
Petr Vokac 238799e
       A class taking commands as strings and passing them to DMLite via pydmlite.
Petr Vokac 238799e
   """
Petr Vokac 238799e
@@ -260,7 +272,7 @@ class DMLiteInterpreter:
Petr Vokac 238799e
         return flist
Petr Vokac 238799e
 
Petr Vokac 238799e
 
Petr Vokac 238799e
-class ShellCommand:
Petr Vokac 238799e
+class ShellCommand(object):
Petr Vokac 238799e
     """
Petr Vokac 238799e
   An abstract class for deriving classes for supported shell commands.
Petr Vokac 238799e
   """
Petr Vokac 238799e
@@ -507,7 +519,7 @@ class ShellCommand:
Petr Vokac 238799e
                     if not lastgiven.startswith('/'):
Petr Vokac 238799e
                         lastgiven = './' + lastgiven
Petr Vokac 238799e
                     gfolder, gfilestart = os.path.split(lastgiven)
Petr Vokac 238799e
-                    groot, gdirs, gfiles = os.walk(gfolder).next()
Petr Vokac 238799e
+                    groot, gdirs, gfiles = next(os.walk(gfolder))
Petr Vokac 238799e
                     gfiles = gfiles + list((d + '/') for d in gdirs)
Petr Vokac 238799e
                     l = list(f for f in gfiles if f.startswith(gfilestart))
Petr Vokac 238799e
                 elif ptype == 'd': # dmlite file or folder
Petr Vokac 238799e
@@ -1005,7 +1017,7 @@ class InfoCommand(ShellCommand):
Petr Vokac 238799e
 
Petr Vokac 238799e
             self.ok('GUID:       ' + str(f.guid))
Petr Vokac 238799e
             self.ok('Ino:        ' + str(f.stat.st_ino))
Petr Vokac 238799e
-            self.ok('Mode:       ' + oct(f.stat.st_mode))
Petr Vokac 238799e
+            self.ok('Mode:       ' + '0%o' % f.stat.st_mode)
Petr Vokac 238799e
             self.ok('# of Links: ' + str(f.stat.st_nlink))
Petr Vokac 238799e
 
Petr Vokac 238799e
             try:
Petr Vokac 238799e
@@ -2631,7 +2643,7 @@ class Response(object):
Petr Vokac 238799e
         for marker in self.markers:
Petr Vokac 238799e
             if 'success' in marker.lower():
Petr Vokac 238799e
                 return 0
Petr Vokac 238799e
-            elif any(map(lambda x: x in marker.lower(), ['failed', 'aborted', 'failure'])):
Petr Vokac 238799e
+            elif any([x in marker.lower() for x in ['failed', 'aborted', 'failure']]):
Petr Vokac 238799e
                 return marker
Petr Vokac 238799e
 
Petr Vokac 238799e
     def printMarkers(self):
Petr Vokac 238799e
@@ -2739,7 +2751,7 @@ class Replicate(object):
Petr Vokac 238799e
             pass
Petr Vokac 238799e
 
Petr Vokac 238799e
         destination = loc[0].url.toString()
Petr Vokac 238799e
-        destination = urllib.unquote(destination)
Petr Vokac 238799e
+        destination = unquote(destination)
Petr Vokac 238799e
         #create correct destination url and SFN
Petr Vokac 238799e
         sfn = destination[0:destination.index(':') + 1] + destination[destination.index(':') + 1:destination.index('?')]
Petr Vokac 238799e
         destination = destination[0:destination.index(':') + 1] + str(http_port) + destination[destination.index(':') + 1:len(destination)]
Petr Vokac 238799e
@@ -3263,18 +3275,18 @@ class DrainReplicas(object):
Petr Vokac 238799e
                 fileSize = fileSize + file.size
Petr Vokac 238799e
             if self.parameters['move']:
Petr Vokac 238799e
                 self.interpreter.ok("Total replicas to move: " + str(numFiles))
Petr Vokac 238799e
-                self.interpreter.ok("Total capacity to move: " + str(fileSize / 1024) + " KB")
Petr Vokac 238799e
+                self.interpreter.ok("Total capacity to move: " + str(fileSize // 1024) + " KB")
Petr Vokac 238799e
             else:
Petr Vokac 238799e
                 self.interpreter.ok("Total replicas installed in the FS to drain: " + str(numFiles))
Petr Vokac 238799e
-                self.interpreter.ok("Total capacity installed in the FS to drain: " + str(fileSize / 1024) + " KB")
Petr Vokac 238799e
+                self.interpreter.ok("Total capacity installed in the FS to drain: " + str(fileSize // 1024) + " KB")
Petr Vokac 238799e
 
Petr Vokac 238799e
             #in case the size is != 100, we should limit the number of replicas to drain
Petr Vokac 238799e
             sizeToDrain = fileSize
Petr Vokac 238799e
             if self.parameters['size'] != 100:
Petr Vokac 238799e
-                sizeToDrain = sizeToDrain * self.parameters['size'] / 100
Petr Vokac 238799e
+                sizeToDrain = sizeToDrain * self.parameters['size'] // 100
Petr Vokac 238799e
             if not self.parameters['move']:
Petr Vokac 238799e
                 self.interpreter.ok("Percentage of capacity to drain: " + str(self.parameters['size']) + " %")
Petr Vokac 238799e
-                self.interpreter.ok("Total capacity to drain: " + str(sizeToDrain / 1024) + " KB")
Petr Vokac 238799e
+                self.interpreter.ok("Total capacity to drain: " + str(sizeToDrain // 1024) + " KB")
Petr Vokac 238799e
 
Petr Vokac 238799e
             for file in self.fileReplicas:
Petr Vokac 238799e
                 if (self.parameters['group'] != "ALL"):
Petr Vokac 238799e
diff --git a/src/dome/cli/dome.py b/src/dome/cli/dome.py
Petr Vokac 238799e
index 56af6f63..95be9127 100755
Petr Vokac 238799e
--- a/src/dome/cli/dome.py
Petr Vokac 238799e
+++ b/src/dome/cli/dome.py
Petr Vokac 238799e
@@ -4,11 +4,12 @@
Petr Vokac 238799e
 This file implements the Dome CLI.
Petr Vokac 238799e
 The CLI provides an easy access to many features of the Dome Service
Petr Vokac 238799e
 """
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
+from __future__ import absolute_import
Petr Vokac 238799e
 import os
Petr Vokac 238799e
-import ConfigParser
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
 from optparse import OptionParser
Petr Vokac 238799e
-from executor import DomeExecutor
Petr Vokac 238799e
+from .executor import DomeExecutor
Petr Vokac 238799e
 
Petr Vokac 238799e
 def main():
Petr Vokac 238799e
     # parse options
Petr Vokac 238799e
@@ -31,7 +32,7 @@ def main():
Petr Vokac 238799e
 
Petr Vokac 238799e
     if options.execute:
Petr Vokac 238799e
         if not options.url:
Petr Vokac 238799e
-                print "Please specify the url  via --url option"
Petr Vokac 238799e
+                print("Please specify the url  via --url option")
Petr Vokac 238799e
                 sys.exit(1)
Petr Vokac 238799e
     executor = DomeExecutor("/etc/grid-security/dpmmgr/dpmcert.pem", "/etc/grid-security/dpmmgr/dpmkey.pem",
Petr Vokac 238799e
                             "/etc/grid-security/certificates", options.clientDN, options.clientAddr)
Petr Vokac 238799e
@@ -40,81 +41,81 @@ def main():
Petr Vokac 238799e
 
Petr Vokac 238799e
     if options.execute == 'get':
Petr Vokac 238799e
         if not options.lfn:
Petr Vokac 238799e
-            print "Please specify the LFN  via --lfn option"
Petr Vokac 238799e
+            print("Please specify the LFN  via --lfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.pfn:
Petr Vokac 238799e
-            print "Please specify the PFN  via --pfn option"
Petr Vokac 238799e
+            print("Please specify the PFN  via --pfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.server:
Petr Vokac 238799e
-            print "Please specify the Server  via --server option"
Petr Vokac 238799e
+            print("Please specify the Server  via --server option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.fs:
Petr Vokac 238799e
-            print "Please specify the Filesystem  via --fs option"
Petr Vokac 238799e
+            print("Please specify the Filesystem  via --fs option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.get(options.url,options.lfn, options.pfn,options.server,options.fs)
Petr Vokac 238799e
     if options.execute == 'put':
Petr Vokac 238799e
         if not options.lfn:
Petr Vokac 238799e
-            print "Please specify the LFN  via --lfn option"
Petr Vokac 238799e
+            print("Please specify the LFN  via --lfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.put(options.url,options.lfn)
Petr Vokac 238799e
     elif options.execute == 'putdone':
Petr Vokac 238799e
         if not options.pfn:
Petr Vokac 238799e
-            print "Please specify the PFN  via --pfn option"
Petr Vokac 238799e
+            print("Please specify the PFN  via --pfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.size:
Petr Vokac 238799e
-            print "Please specify the Server  via --size option"
Petr Vokac 238799e
+            print("Please specify the Server  via --size option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.putDone(options.url, options.pfn,options.size)
Petr Vokac 238799e
     elif options.execute == 'getspaceinfo':
Petr Vokac 238799e
         executor.getSpaceInfo(options.url)
Petr Vokac 238799e
     elif options.execute == 'statpool':
Petr Vokac 238799e
         if not options.pool:
Petr Vokac 238799e
-            print "Please specify the Pool to stat  via --pool option"
Petr Vokac 238799e
+            print("Please specify the Pool to stat  via --pool option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.statPool(options.url,options.pool)
Petr Vokac 238799e
     elif options.execute == 'getquotatoken':
Petr Vokac 238799e
         if not options.lfn:
Petr Vokac 238799e
-            print "Please specify the LFN  via --lfn option"
Petr Vokac 238799e
+            print("Please specify the LFN  via --lfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.getquotatoken(options.url,options.lfn)
Petr Vokac 238799e
     elif options.execute == 'setquotatoken':
Petr Vokac 238799e
         if not options.lfn:
Petr Vokac 238799e
-            print "Please specify the LFN  via --lfn option"
Petr Vokac 238799e
+            print("Please specify the LFN  via --lfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.pool:
Petr Vokac 238799e
-            print "Please specify the Pool to set the quota  token  via --pool option"
Petr Vokac 238799e
+            print("Please specify the Pool to set the quota  token  via --pool option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.space:
Petr Vokac 238799e
-            print "Please specify the Space for the quota token  via --space option"
Petr Vokac 238799e
+            print("Please specify the Space for the quota token  via --space option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.desc:
Petr Vokac 238799e
-            print "Please specify the Space for the quota token description  via --desc option"
Petr Vokac 238799e
+            print("Please specify the Space for the quota token description  via --desc option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.setquotatoken(options.url,options.lfn,options.pool, options.space,options.desc)
Petr Vokac 238799e
     elif options.execute == 'delquotatoken':
Petr Vokac 238799e
         if not options.lfn:
Petr Vokac 238799e
-            print "Please specify the LFN  via --lfn option"
Petr Vokac 238799e
+            print("Please specify the LFN  via --lfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.pool:
Petr Vokac 238799e
-            print "Please specify the Pool to set the quota  token  via --pool option"
Petr Vokac 238799e
+            print("Please specify the Pool to set the quota  token  via --pool option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.delquotatoken(options.url,options.lfn,options.pool)
Petr Vokac 238799e
     elif options.execute == 'getdirspaces':
Petr Vokac 238799e
         if not options.lfn:
Petr Vokac 238799e
-            print "Please specify the LFN  via --lfn option"
Petr Vokac 238799e
+            print("Please specify the LFN  via --lfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.getdirspaces(options.url,options.lfn)
Petr Vokac 238799e
     elif options.execute == "pfnrm":
Petr Vokac 238799e
         if not options.pfn:
Petr Vokac 238799e
-            print "Please specify the PFN  via --pfn option"
Petr Vokac 238799e
+            print("Please specify the PFN  via --pfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.pfnrm(options.url,options.pfn)
Petr Vokac 238799e
     elif options.execute == "delreplica":
Petr Vokac 238799e
         if not options.pfn:
Petr Vokac 238799e
-            print "Please specify the PFN  via --pfn option"
Petr Vokac 238799e
+            print("Please specify the PFN  via --pfn option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         if not options.server:
Petr Vokac 238799e
-            print "Please specify the Server  via --server option"
Petr Vokac 238799e
+            print("Please specify the Server  via --server option")
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
         executor.delreplica(options.url,options.pfn,options.server)
Petr Vokac 238799e
 
Petr Vokac 238799e
diff --git a/src/dome/cli/executor.py b/src/dome/cli/executor.py
Petr Vokac 238799e
index 53e541bc..46cdde32 100644
Petr Vokac 238799e
--- a/src/dome/cli/executor.py
Petr Vokac 238799e
+++ b/src/dome/cli/executor.py
Petr Vokac 238799e
@@ -1,3 +1,4 @@
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 from subprocess import Popen, PIPE, STDOUT
Petr Vokac 238799e
 from pipes import quote
Petr Vokac 238799e
 import os
Petr Vokac 238799e
diff --git a/tests/dpm/dpm-tester.py b/tests/dpm/dpm-tester.py
Petr Vokac 238799e
index 7308b010..0d637b61 100755
Petr Vokac 238799e
--- a/tests/dpm/dpm-tester.py
Petr Vokac 238799e
+++ b/tests/dpm/dpm-tester.py
Petr Vokac 238799e
@@ -2,7 +2,10 @@
Petr Vokac 238799e
 from __future__ import print_function, division, absolute_import
Petr Vokac 238799e
 
Petr Vokac 238799e
 import gfal2
Petr Vokac 238799e
-import StringIO
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    import io as StringIO
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    import StringIO
Petr Vokac 238799e
 import traceback
Petr Vokac 238799e
 import datetime
Petr Vokac 238799e
 import time
Petr Vokac 238799e
@@ -13,7 +16,10 @@ import inspect
Petr Vokac 238799e
 import os
Petr Vokac 238799e
 import filecmp
Petr Vokac 238799e
 import hashlib
Petr Vokac 238799e
-import urllib
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    from urllib.parse import quote, unquote
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    from urllib import quote, unquote
Petr Vokac 238799e
 import signal
Petr Vokac 238799e
 import stat
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
@@ -22,7 +28,10 @@ import textwrap
Petr Vokac 238799e
 import json
Petr Vokac 238799e
 import subprocess
Petr Vokac 238799e
 import random
Petr Vokac 238799e
-from urlparse import urlparse
Petr Vokac 238799e
+try:
Petr Vokac 238799e
+    from urllib.parse import urlparse
Petr Vokac 238799e
+except ImportError:
Petr Vokac 238799e
+    from urlparse import urlparse
Petr Vokac 238799e
 
Petr Vokac 238799e
 EX_OK              = 0
Petr Vokac 238799e
 EX_WARNING         = 1
Petr Vokac 238799e
@@ -164,7 +173,7 @@ def get_test_number():
Petr Vokac 238799e
     return TEST_NUMBER
Petr Vokac 238799e
 
Petr Vokac 238799e
 
Petr Vokac 238799e
-class TestResult:
Petr Vokac 238799e
+class TestResult(object):
Petr Vokac 238799e
     """A class to store and display the results from a single test run"""
Petr Vokac 238799e
     def __init__(self, prefix, name):
Petr Vokac 238799e
         self.prefix = prefix
Petr Vokac 238799e
@@ -221,7 +230,7 @@ class TestResult:
Petr Vokac 238799e
     @staticmethod
Petr Vokac 238799e
     def show_skipped(prefix, name, indent=""):
Petr Vokac 238799e
         if USE_XML:
Petr Vokac 238799e
-            print("""<testcase name="{0:02d} {1}" classname="{2}" time="0">""".format(get_test_number(), urllib.quote(name), prefix))
Petr Vokac 238799e
+            print("""<testcase name="{0:02d} {1}" classname="{2}" time="0">""".format(get_test_number(), quote(name), prefix))
Petr Vokac 238799e
             print("""<skipped/></testcase>""")
Petr Vokac 238799e
             return
Petr Vokac 238799e
 
Petr Vokac 238799e
@@ -247,7 +256,7 @@ class TestResult:
Petr Vokac 238799e
         return strio.getvalue()
Petr Vokac 238799e
 
Petr Vokac 238799e
     def show_xml(self):
Petr Vokac 238799e
-        print("""<testcase name="{0:02d} {1}" classname="{2}" time="{3}">""".format(get_test_number(), urllib.quote(self.name), self.prefix,
Petr Vokac 238799e
+        print("""<testcase name="{0:02d} {1}" classname="{2}" time="{3}">""".format(get_test_number(), quote(self.name), self.prefix,
Petr Vokac 238799e
               duration_in_sec(self.starttime, self.endtime)))
Petr Vokac 238799e
 
Petr Vokac 238799e
         if not self.ok():
Petr Vokac 238799e
@@ -285,7 +294,7 @@ class ThreadExc(threading.Thread):
Petr Vokac 238799e
             self.exception = e
Petr Vokac 238799e
 
Petr Vokac 238799e
 # Wraps the result from the execution of a gfal function
Petr Vokac 238799e
-class GfalStatus:
Petr Vokac 238799e
+class GfalStatus(object):
Petr Vokac 238799e
     def __init__(self, output, exception, traceback, timed_out):
Petr Vokac 238799e
         self.output = output
Petr Vokac 238799e
         self.traceback = traceback
Petr Vokac 238799e
@@ -404,7 +413,7 @@ class DomeCredentials(object):
Petr Vokac 238799e
         self.clientDN = clientDN
Petr Vokac 238799e
         self.clientAddress = clientAddress
Petr Vokac 238799e
 
Petr Vokac 238799e
-class DomeTalker:
Petr Vokac 238799e
+class DomeTalker(object):
Petr Vokac 238799e
     """Issues requests to Dome"""
Petr Vokac 238799e
 
Petr Vokac 238799e
     @staticmethod
Petr Vokac 238799e
@@ -446,7 +455,7 @@ class DomeTalker:
Petr Vokac 238799e
         result.write(f("Davix exit code: {proc.returncode}"))
Petr Vokac 238799e
         return result
Petr Vokac 238799e
 
Petr Vokac 238799e
-class DomeTester:
Petr Vokac 238799e
+class DomeTester(object):
Petr Vokac 238799e
     def __init__(self, uri):
Petr Vokac 238799e
         self.uri = uri
Petr Vokac 238799e
         self.ctx = gfal2.creat_context()
Petr Vokac 238799e
@@ -534,7 +543,7 @@ def ensure_safe_path(path):
Petr Vokac 238799e
 # assumption: second will always contain a single chunk, ie don't pass
Petr Vokac 238799e
 # "/dir1/" along with "/dir2/file"
Petr Vokac 238799e
 def path_join(first, second):
Petr Vokac 238799e
-    second = urllib.quote(second)
Petr Vokac 238799e
+    second = quote(second)
Petr Vokac 238799e
 
Petr Vokac 238799e
     if first.endswith("/"):
Petr Vokac 238799e
         return first + second
Petr Vokac 238799e
@@ -568,7 +577,7 @@ def hammer_tester(functions, arguments):
Petr Vokac 238799e
     if result.alive(): result.success()
Petr Vokac 238799e
     return result
Petr Vokac 238799e
 
Petr Vokac 238799e
-class ProtocolTester:
Petr Vokac 238799e
+class ProtocolTester(object):
Petr Vokac 238799e
     def __init__(self, testcase):
Petr Vokac 238799e
         self.ctx = gfal2.creat_context()
Petr Vokac 238799e
 
Petr Vokac 238799e
@@ -906,7 +915,7 @@ def calculate_checksum(checksumtype, filename):
Petr Vokac 238799e
     if checksumtype == "md5":
Petr Vokac 238799e
         return hashlib.md5(open(filename, 'rb').read()).hexdigest()
Petr Vokac 238799e
 
Petr Vokac 238799e
-class Runner:
Petr Vokac 238799e
+class Runner(object):
Petr Vokac 238799e
     def __init__(self, function, args, name):
Petr Vokac 238799e
         self.function = function
Petr Vokac 238799e
         self.args = args
Petr Vokac 238799e
@@ -927,7 +936,7 @@ class Runner:
Petr Vokac 238799e
 
Petr Vokac 238799e
 # Run a series of tests, optionally with initialization and cleanup.
Petr Vokac 238799e
 # You can also nest orchestrators together, but be careful.
Petr Vokac 238799e
-class Orchestrator:
Petr Vokac 238799e
+class Orchestrator(object):
Petr Vokac 238799e
     def __init__(self, prefix=""):
Petr Vokac 238799e
         self.prefix = prefix
Petr Vokac 238799e
         self.initialization = []
Petr Vokac 238799e
@@ -1145,10 +1154,10 @@ def build_target_url(args, scheme):
Petr Vokac 238799e
     return path_join(build_base_url(args, scheme), args.testdir)
Petr Vokac 238799e
 
Petr Vokac 238799e
 def extract_path(url):
Petr Vokac 238799e
-    return urllib.unquote(urlparse(url).path)
Petr Vokac 238799e
+    return unquote(urlparse(url).path)
Petr Vokac 238799e
 
Petr Vokac 238799e
 def extract_file(url):
Petr Vokac 238799e
-    return urllib.unquote(url.split("/")[-1])
Petr Vokac 238799e
+    return unquote(url.split("/")[-1])
Petr Vokac 238799e
 
Petr Vokac 238799e
 def single_protocol_tests(args, scope):
Petr Vokac 238799e
     tester = ProtocolTester(scope)
Petr Vokac 238799e
diff --git a/tests/python/catalog.py b/tests/python/catalog.py
Petr Vokac 238799e
index e77e73d1..c329f4c5 100644
Petr Vokac 238799e
--- a/tests/python/catalog.py
Petr Vokac 238799e
+++ b/tests/python/catalog.py
Petr Vokac 238799e
@@ -20,7 +20,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		self.manager = pydmlite.PluginManager()
Petr Vokac 238799e
 		try :
Petr Vokac 238799e
 			self.manager.loadConfiguration(self.conf_file)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 			self.fail("%s" % err)
Petr Vokac 238799e
   		self.stack = pydmlite.StackInstance(self.manager)
Petr Vokac 238799e
 		self.creds = pydmlite.SecurityCredentials()
Petr Vokac 238799e
@@ -30,7 +30,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 			self.stack.setSecurityCredentials(self.creds)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 			self.fail("%s" % err)
Petr Vokac 238799e
 
Petr Vokac 238799e
 	def tearDown(self):
Petr Vokac 238799e
@@ -72,17 +72,17 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		catalog = self.stack.getCatalog()
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.changeDir(self.path)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
-		   catalog.makeDir(self.newdir,0775) # create a test dir
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		   catalog.makeDir(self.newdir,0o775) # create a test dir
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
-		   catalog.setMode(self.newdir,0777) # change mode from 0775 to 0777
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		   catalog.setMode(self.newdir,0o777) # change mode from 0775 to 0777
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		return 0
Petr Vokac 238799e
@@ -91,7 +91,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		mydirpath = self.path + "/" + self.newdir
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   xstat = catalog.extendedStat(mydirpath, True)  
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1  
Petr Vokac 238799e
 		self.assertEquals(xstat.name,self.newdir)    # checking the directory name 
Petr Vokac 238799e
@@ -106,18 +106,18 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		self.assertTrue(deltatimed < 4)             # checking the time to create the directory
Petr Vokac 238799e
 		self.assertEquals(xstat.stat.st_blksize,0)
Petr Vokac 238799e
 		self.assertEquals(xstat.stat.st_size, 0)
Petr Vokac 238799e
-		self.assertEquals(str(oct(xstat.stat.st_mode)),"040777")  # checking the mode
Petr Vokac 238799e
+		self.assertEquals(xstat.stat.st_mode, 0o40777)            # checking the mode
Petr Vokac 238799e
 	def test_rmdir(self):
Petr Vokac 238799e
 		catalog = self.stack.getCatalog()
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.changeDir(self.path)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		arg = self.path + "/" + self.rmdir
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.removeDir(arg)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		return 0 
Petr Vokac 238799e
@@ -125,22 +125,22 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		catalog = self.stack.getCatalog()
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.changeDir(self.path)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
-		   catalog.create(self.newfile, 0775) # create a test file
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		   catalog.create(self.newfile, 0o775) # create a test file
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   xstat = catalog.extendedStat(self.newfile, True)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(erra))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
-		   catalog.setMode(self.newfile,0777)   # change mode from 0775 to 0777
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		   catalog.setMode(self.newfile,0o777)   # change mode from 0775 to 0777
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		return 0
Petr Vokac 238799e
@@ -149,7 +149,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		filevername = self.path + "/" + self.newfile
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   xstat = catalog.extendedStat(filevername,True)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(erra))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		self.assertFalse(xstat.stat.isDir())
Petr Vokac 238799e
@@ -159,7 +159,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		self.assertTrue(xstat.stat.isReg())
Petr Vokac 238799e
 		self.assertTrue(stat.S_ISREG(xstat.stat.st_mode))
Petr Vokac 238799e
 		self.assertEquals(xstat.name, self.newfile)               # checking the file name
Petr Vokac 238799e
-		self.assertEquals(str(oct(xstat.stat.st_mode)),"0100777") # checking the file mode
Petr Vokac 238799e
+		self.assertEquals(xstat.stat.st_mode, 0o100777)           # checking the file mode
Petr Vokac 238799e
 		self.assertTrue(xstat.stat.st_ino > 0)
Petr Vokac 238799e
 		self.assertEquals(xstat.stat.st_nlink, 1)
Petr Vokac 238799e
                 deltatime = time.time() - xstat.stat.getMTime()
Petr Vokac 238799e
@@ -173,18 +173,18 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
                 catalog = self.stack.getCatalog()
Petr Vokac 238799e
                 try:
Petr Vokac 238799e
                    catalog.changeDir(self.path)
Petr Vokac 238799e
-                except Exception, err:
Petr Vokac 238799e
+                except Exception as err:
Petr Vokac 238799e
                    sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
                    return 1
Petr Vokac 238799e
                 try:
Petr Vokac 238799e
                    catalog.symlink(self.newfile, self.newlink)
Petr Vokac 238799e
-                except Exception, err:
Petr Vokac 238799e
+                except Exception as err:
Petr Vokac 238799e
                    sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
                    return 1
Petr Vokac 238799e
                 name = self.path + "/" +  self.newlink
Petr Vokac 238799e
                 try:
Petr Vokac 238799e
                    filename = catalog.readLink(name)
Petr Vokac 238799e
-                except Exception, err:
Petr Vokac 238799e
+                except Exception as err:
Petr Vokac 238799e
                    sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
                    return 1
Petr Vokac 238799e
                 return 0
Petr Vokac 238799e
@@ -192,7 +192,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		catalog = self.stack.getCatalog()
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   xstat = catalog.extendedStat(self.newlink,False)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		self.assertFalse(xstat.stat.isDir())
Petr Vokac 238799e
@@ -200,7 +200,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		self.assertTrue(xstat.stat.isLnk())
Petr Vokac 238799e
 		self.assertEquals(xstat.name,self.newlink)                     # checking the link name
Petr Vokac 238799e
 		self.assertEquals(catalog.readLink(self.newlink),self.newfile) # checking of the link (newlink->newfile)
Petr Vokac 238799e
-		self.assertEquals(str(oct(xstat.stat.st_mode)),"0120777")      # checking the link  mode
Petr Vokac 238799e
+		self.assertEquals(xstat.stat.st_mode, 0o120777)                # checking the link  mode
Petr Vokac 238799e
 		self.assertTrue(xstat.stat.st_ino > 0)
Petr Vokac 238799e
 		self.assertEquals(xstat.stat.st_nlink, 1)
Petr Vokac 238799e
 		deltatimel = time.time() - xstat.stat.getMTime()
Petr Vokac 238799e
@@ -212,12 +212,12 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		catalog = self.stack.getCatalog()
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.changeDir(self.path)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.unlink (self.newlink)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		return 0
Petr Vokac 238799e
@@ -226,17 +226,17 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		catalog = self.stack.getCatalog()
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.changeDir(self.path)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   xstat = catalog.extendedStat(self.newfile,True)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1	
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 		   catalog.unlink(self.newfile)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 		   sys.stderr.write('file is removed: %s\n' % str(err))
Petr Vokac 238799e
 		   return 1
Petr Vokac 238799e
 		return 0	
Petr Vokac 238799e
diff --git a/tests/python/catalog_first.py b/tests/python/catalog_first.py
Petr Vokac 238799e
index eb75bb1f..4a544e5b 100755
Petr Vokac 238799e
--- a/tests/python/catalog_first.py
Petr Vokac 238799e
+++ b/tests/python/catalog_first.py
Petr Vokac 238799e
@@ -13,7 +13,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 		self.manager = pydmlite.PluginManager()
Petr Vokac 238799e
 		try :
Petr Vokac 238799e
 			self.manager.loadConfiguration(self.conf_file)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 			self.fail("%s" % err)
Petr Vokac 238799e
   		self.stack = pydmlite.StackInstance(self.manager)
Petr Vokac 238799e
 		self.creds = pydmlite.SecurityCredentials()
Petr Vokac 238799e
@@ -23,7 +23,7 @@ class TestDmliteCatalog(unittest.TestCase):
Petr Vokac 238799e
 
Petr Vokac 238799e
 		try:
Petr Vokac 238799e
 			self.stack.setSecurityCredentials(self.creds)
Petr Vokac 238799e
-		except Exception, err:
Petr Vokac 238799e
+		except Exception as err:
Petr Vokac 238799e
 			self.fail("%s" % err)
Petr Vokac 238799e
 
Petr Vokac 238799e
 	def tearDown(self):
Petr Vokac 238799e
diff --git a/tests/python/dm-ls.py b/tests/python/dm-ls.py
Petr Vokac 238799e
index c0420283..c6a152fe 100755
Petr Vokac 238799e
--- a/tests/python/dm-ls.py
Petr Vokac 238799e
+++ b/tests/python/dm-ls.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
 import time
Petr Vokac 238799e
@@ -10,14 +11,14 @@ if __name__ == "__main__":
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
 #  print len
Petr Vokac 238799e
   if len < 3 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], "[-l] <configuration file> <path>"
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], "[-l] <configuration file> <path>")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
 #  print sys.argv[1]
Petr Vokac 238799e
   if sys.argv[1] == "-l" :
Petr Vokac 238799e
      l=1
Petr Vokac 238799e
   try :
Petr Vokac 238799e
       manager.loadConfiguration(sys.argv[l+1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   stack = pydmlite.StackInstance(manager)
Petr Vokac 238799e
@@ -29,7 +30,7 @@ if __name__ == "__main__":
Petr Vokac 238799e
 
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      stack.setSecurityCredentials(creds)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
@@ -46,10 +47,10 @@ if __name__ == "__main__":
Petr Vokac 238799e
 #                     print "\t%s" % xstat.name, "  is link to ", filename 
Petr Vokac 238799e
                      ltime = time.localtime(xstat.stat.getMTime())
Petr Vokac 238799e
                      date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])
Petr Vokac 238799e
-                     print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" %xstat.name, "->",filename
Petr Vokac 238799e
+                     print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" %xstat.name, "->",filename)
Petr Vokac 238799e
  
Petr Vokac 238799e
                      sys.exit(0)  
Petr Vokac 238799e
-    except Exception, err:
Petr Vokac 238799e
+    except Exception as err:
Petr Vokac 238799e
        sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
        sys.exit(1)
Petr Vokac 238799e
   flag = xstat.stat.isDir()
Petr Vokac 238799e
@@ -59,7 +60,7 @@ if __name__ == "__main__":
Petr Vokac 238799e
     catalog = stack.getCatalog()
Petr Vokac 238799e
     try :
Petr Vokac 238799e
         mydir = catalog.openDir(inputname)
Petr Vokac 238799e
-    except Exception, err:
Petr Vokac 238799e
+    except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
     while True:
Petr Vokac 238799e
@@ -83,13 +84,13 @@ if __name__ == "__main__":
Petr Vokac 238799e
                      filename = catalog.readLink(name)    
Petr Vokac 238799e
                      ltime = time.localtime(xstat.stat.getMTime())
Petr Vokac 238799e
                      date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])
Petr Vokac 238799e
-                     print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % f.name, "->",filename
Petr Vokac 238799e
+                     print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % f.name, "->",filename)
Petr Vokac 238799e
                   continue
Petr Vokac 238799e
            ltime = time.localtime(xstat.stat.getMTime()) 
Petr Vokac 238799e
            date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])           
Petr Vokac 238799e
-           print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % f.name
Petr Vokac 238799e
+           print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % f.name)
Petr Vokac 238799e
         else :  
Petr Vokac 238799e
-           print "\t%s" % f.name
Petr Vokac 238799e
+           print("\t%s" % f.name)
Petr Vokac 238799e
      except:
Petr Vokac 238799e
         catalog.closeDir(mydir)
Petr Vokac 238799e
         break
Petr Vokac 238799e
@@ -97,8 +98,8 @@ if __name__ == "__main__":
Petr Vokac 238799e
         if l>0 :
Petr Vokac 238799e
            ltime = time.localtime(xstat.stat.getMTime())
Petr Vokac 238799e
            date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])
Petr Vokac 238799e
-           print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name
Petr Vokac 238799e
+           print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name)
Petr Vokac 238799e
         else :
Petr Vokac 238799e
-           print "\t%s" % xstat.name
Petr Vokac 238799e
+           print("\t%s" % xstat.name)
Petr Vokac 238799e
   sys.exit(0)
Petr Vokac 238799e
   
Petr Vokac 238799e
diff --git a/tests/python/dm-mkdir.py b/tests/python/dm-mkdir.py
Petr Vokac 238799e
index d5fe47da..c6d165b6 100755
Petr Vokac 238799e
--- a/tests/python/dm-mkdir.py
Petr Vokac 238799e
+++ b/tests/python/dm-mkdir.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
  
Petr Vokac 238799e
@@ -8,12 +9,12 @@ if __name__ == "__main__":
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
 #  print len
Petr Vokac 238799e
   if len < 3 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], " <configuration file> <path> <dir> [<mode>]"
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], " <configuration file> <path> <dir> [<mode>]")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
 #  print sys.argv[1]
Petr Vokac 238799e
   try :
Petr Vokac 238799e
      manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1) 
Petr Vokac 238799e
      
Petr Vokac 238799e
@@ -29,22 +30,22 @@ if __name__ == "__main__":
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.changeDir(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
     sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
-     catalog.makeDir(sys.argv[3],0777)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+     catalog.makeDir(sys.argv[3],0o777)
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
-  print sys.argv[3]," was created"
Petr Vokac 238799e
+  print(sys.argv[3]," was created")
Petr Vokac 238799e
   if  len == 5 :
Petr Vokac 238799e
    try:
Petr Vokac 238799e
       mode = int(sys.argv[4],8)
Petr Vokac 238799e
-   except Exception, err:
Petr Vokac 238799e
+   except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
-   print sys.argv[3],"%o" % mode
Petr Vokac 238799e
+   print(sys.argv[3],"%o" % mode)
Petr Vokac 238799e
    catalog.setMode(sys.argv[3],mode)
Petr Vokac 238799e
 #  arg = sys.argv[2] + "/" + sys.argv[3] 
Petr Vokac 238799e
 #  catalog.removeDir(arg)
Petr Vokac 238799e
diff --git a/tests/python/dm-mkfile.py b/tests/python/dm-mkfile.py
Petr Vokac 238799e
index 380c5931..607318f4 100755
Petr Vokac 238799e
--- a/tests/python/dm-mkfile.py
Petr Vokac 238799e
+++ b/tests/python/dm-mkfile.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
 import time
Petr Vokac 238799e
@@ -9,11 +10,11 @@ if __name__ == "__main__":
Petr Vokac 238799e
   len = len(sys.argv)
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
   if len < 4 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], " <configuration file> <path> <file> [<mode>]"
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], " <configuration file> <path> <file> [<mode>]")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   stack = pydmlite.StackInstance(manager)
Petr Vokac 238799e
@@ -25,36 +26,36 @@ if __name__ == "__main__":
Petr Vokac 238799e
 
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      stack.setSecurityCredentials(creds)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
 
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.changeDir(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
-     catalog.create(sys.argv[3], 0775) # create a test file
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+     catalog.create(sys.argv[3], 0o775) # create a test file
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      xstat = catalog.extendedStat(sys.argv[3], True)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   ltime = time.localtime(xstat.stat.getMTime())
Petr Vokac 238799e
-  print "create a test file", "\t%s" % xstat.name
Petr Vokac 238799e
+  print("create a test file", "\t%s" % xstat.name)
Petr Vokac 238799e
 
Petr Vokac 238799e
   date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])
Petr Vokac 238799e
-  print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name   
Petr Vokac 238799e
+  print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name)
Petr Vokac 238799e
   if  len == 5 :
Petr Vokac 238799e
      try :
Petr Vokac 238799e
          mode = int(sys.argv[4],8)
Petr Vokac 238799e
 #         print "%o" % mode
Petr Vokac 238799e
-     except Exception, err:
Petr Vokac 238799e
+     except Exception as err:
Petr Vokac 238799e
             sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
 
Petr Vokac 238799e
             sys.exit(1)
Petr Vokac 238799e
@@ -64,6 +65,6 @@ if __name__ == "__main__":
Petr Vokac 238799e
 #     print "%o" % xstat.stat.st_mode
Petr Vokac 238799e
      ltime = time.localtime(xstat.stat.getMTime())
Petr Vokac 238799e
      date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])
Petr Vokac 238799e
-     print "change mode from 775 to ", "%o" % mode
Petr Vokac 238799e
-     print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name
Petr Vokac 238799e
+     print("change mode from 775 to ", "%o" % mode)
Petr Vokac 238799e
+     print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name)
Petr Vokac 238799e
   sys.exit(0)
Petr Vokac 238799e
diff --git a/tests/python/dm-mklink.py b/tests/python/dm-mklink.py
Petr Vokac 238799e
index e54b9d37..2f776fe4 100755
Petr Vokac 238799e
--- a/tests/python/dm-mklink.py
Petr Vokac 238799e
+++ b/tests/python/dm-mklink.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
  
Petr Vokac 238799e
@@ -8,12 +9,12 @@ if __name__ == "__main__":
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
 #  print len
Petr Vokac 238799e
   if len < 5 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], " <configuration file> <path>  <dir/file>  <ln> "
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], " <configuration file> <path>  <dir/file>  <ln> ")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
 #  print sys.argv[1]
Petr Vokac 238799e
   try :
Petr Vokac 238799e
      manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1) 
Petr Vokac 238799e
      
Petr Vokac 238799e
@@ -29,17 +30,17 @@ if __name__ == "__main__":
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.changeDir(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
     sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.symlink(sys.argv[3],sys.argv[4])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   name = sys.argv[2] + sys.argv[4]
Petr Vokac 238799e
   filename = catalog.readLink(name)
Petr Vokac 238799e
-  print   sys.argv[4], "->",filename
Petr Vokac 238799e
+  print(sys.argv[4], "->",filename)
Petr Vokac 238799e
 #  catalog.setMode(sys.argv[4],120777)
Petr Vokac 238799e
 #  arg = sys.argv[2] + "/" + sys.argv[3] 
Petr Vokac 238799e
 #  catalog.removeDir(arg)
Petr Vokac 238799e
diff --git a/tests/python/dm-physicallocation.py b/tests/python/dm-physicallocation.py
Petr Vokac 238799e
index 1b468bb1..a0133bee 100755
Petr Vokac 238799e
--- a/tests/python/dm-physicallocation.py
Petr Vokac 238799e
+++ b/tests/python/dm-physicallocation.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
 
Petr Vokac 238799e
@@ -6,11 +7,11 @@ if __name__ == "__main__":
Petr Vokac 238799e
   manager = pydmlite.PluginManager()
Petr Vokac 238799e
 
Petr Vokac 238799e
   if len(sys.argv) < 3:
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], "<configuration file> <path>"
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], "<configuration file> <path>")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   try :
Petr Vokac 238799e
       manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   stack = pydmlite.StackInstance(manager)
Petr Vokac 238799e
@@ -21,18 +22,18 @@ if __name__ == "__main__":
Petr Vokac 238799e
   creds.fqans.append("dteam")
Petr Vokac 238799e
   try :
Petr Vokac 238799e
       stack.setSecurityCredentials(creds)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   poolManager = stack.getPoolManager()
Petr Vokac 238799e
   try :
Petr Vokac 238799e
       location = poolManager.whereToRead(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   for l in location:
Petr Vokac 238799e
-    print "Chunk: %s:%s (%d-%d)" % (l.host, l.path, l.offset, l.offset + l.size)
Petr Vokac 238799e
+    print("Chunk: %s:%s (%d-%d)" % (l.host, l.path, l.offset, l.offset + l.size))
Petr Vokac 238799e
     for k in l.getKeys():
Petr Vokac 238799e
-      print "\t%s: %s" % (k, l.getString(k))
Petr Vokac 238799e
+      print("\t%s: %s" % (k, l.getString(k)))
Petr Vokac 238799e
   sys.exit(0)
Petr Vokac 238799e
 
Petr Vokac 238799e
diff --git a/tests/python/dm-rmdir.py b/tests/python/dm-rmdir.py
Petr Vokac 238799e
index 59971fe8..6eb950a0 100755
Petr Vokac 238799e
--- a/tests/python/dm-rmdir.py
Petr Vokac 238799e
+++ b/tests/python/dm-rmdir.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
  
Petr Vokac 238799e
@@ -8,12 +9,12 @@ if __name__ == "__main__":
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
 #  print len
Petr Vokac 238799e
   if len < 3 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], " <configuration file> <path> <dir> "
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], " <configuration file> <path> <dir> ")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
 #  print sys.argv[1]
Petr Vokac 238799e
   try :
Petr Vokac 238799e
      manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1) 
Petr Vokac 238799e
      
Petr Vokac 238799e
@@ -29,14 +30,14 @@ if __name__ == "__main__":
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.changeDir(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
     sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   arg = sys.argv[2] + "/" + sys.argv[3]
Petr Vokac 238799e
   try : 
Petr Vokac 238799e
      catalog.removeDir(arg)
Petr Vokac 238799e
-     print arg," was removed"      
Petr Vokac 238799e
+     print(arg," was removed")
Petr Vokac 238799e
      sys.exit(0)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
     sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
diff --git a/tests/python/dm-rmfile.py b/tests/python/dm-rmfile.py
Petr Vokac 238799e
index 4a2f1dfc..de68ef2b 100755
Petr Vokac 238799e
--- a/tests/python/dm-rmfile.py
Petr Vokac 238799e
+++ b/tests/python/dm-rmfile.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
 import time
Petr Vokac 238799e
@@ -9,11 +10,11 @@ if __name__ == "__main__":
Petr Vokac 238799e
   len = len(sys.argv)
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
   if len < 4 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], " <configuration file> <path> <file> "
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], " <configuration file> <path> <file> ")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   stack = pydmlite.StackInstance(manager)
Petr Vokac 238799e
@@ -25,31 +26,31 @@ if __name__ == "__main__":
Petr Vokac 238799e
 
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      stack.setSecurityCredentials(creds)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
 
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.changeDir(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      xstat = catalog.extendedStat(sys.argv[3], True)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1)
Petr Vokac 238799e
   ltime = time.localtime(xstat.stat.getMTime())
Petr Vokac 238799e
-  print "file exists: "
Petr Vokac 238799e
+  print("file exists: ")
Petr Vokac 238799e
 
Petr Vokac 238799e
   date=datetime(ltime[0],ltime[1],ltime[2],ltime[3],ltime[4],ltime[5])
Petr Vokac 238799e
-  print "%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name   
Petr Vokac 238799e
+  print("%o" % xstat.stat.st_mode, "\t", "\t", xstat.stat.st_uid, "\t", xstat.stat.st_gid, '\t', xstat.stat.st_size, "\t", date, "\t%s" % xstat.name)
Petr Vokac 238799e
   catalog.unlink(sys.argv[3])
Petr Vokac 238799e
   
Petr Vokac 238799e
   try:
Petr Vokac 238799e
       xstat = catalog.extendedStat(sys.argv[3], True)
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('file is removed: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(0)     
Petr Vokac 238799e
 #  sys.exit(0)
Petr Vokac 238799e
diff --git a/tests/python/dm-rmlink.py b/tests/python/dm-rmlink.py
Petr Vokac 238799e
index 1091ea7c..3104444a 100755
Petr Vokac 238799e
--- a/tests/python/dm-rmlink.py
Petr Vokac 238799e
+++ b/tests/python/dm-rmlink.py
Petr Vokac 238799e
@@ -1,4 +1,5 @@
Petr Vokac 238799e
 #!/usr/bin/python
Petr Vokac 238799e
+from __future__ import print_function
Petr Vokac 238799e
 import pydmlite
Petr Vokac 238799e
 import sys
Petr Vokac 238799e
  
Petr Vokac 238799e
@@ -8,12 +9,12 @@ if __name__ == "__main__":
Petr Vokac 238799e
   l=0
Petr Vokac 238799e
 #  print len
Petr Vokac 238799e
   if len < 3 or sys.argv[1] == "-h":
Petr Vokac 238799e
-    print "Usage:", sys.argv[0], " <configuration file> <path> <ln> "
Petr Vokac 238799e
+    print("Usage:", sys.argv[0], " <configuration file> <path> <ln> ")
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
 #  print sys.argv[1]
Petr Vokac 238799e
   try :
Petr Vokac 238799e
      manager.loadConfiguration(sys.argv[1])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
      sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
      sys.exit(1) 
Petr Vokac 238799e
      
Petr Vokac 238799e
@@ -29,12 +30,12 @@ if __name__ == "__main__":
Petr Vokac 238799e
   catalog = stack.getCatalog()
Petr Vokac 238799e
   try:
Petr Vokac 238799e
      catalog.changeDir(sys.argv[2])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
     sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
     sys.exit(1)
Petr Vokac 238799e
   try :
Petr Vokac 238799e
       catalog.unlink (sys.argv[3])
Petr Vokac 238799e
-  except Exception, err:
Petr Vokac 238799e
+  except Exception as err:
Petr Vokac 238799e
     sys.stderr.write('ERROR: %s\n' % str(err))
Petr Vokac 238799e
     sys.exit(1) 
Petr Vokac 238799e
 #  arg = sys.argv[2] + "/" + sys.argv[3]