From 53962a8beb946b97b0348711e671c9364a2e3c7a Mon Sep 17 00:00:00 2001
From: Amir MOHAMMADI <amir.mohammadi@idiap.ch>
Date: Sun, 11 Mar 2018 12:20:32 +0100
Subject: [PATCH] Account for unicode in Python 2

---
 bob/bio/base/database/database.py       | 4 ++--
 bob/bio/base/database/filelist/query.py | 2 +-
 bob/bio/base/grid.py                    | 4 ++--
 bob/bio/base/tools/command_line.py      | 7 ++++---
 bob/bio/base/utils/__init__.py          | 2 +-
 bob/bio/base/utils/resources.py         | 3 ++-
 conda/meta.yaml                         | 2 ++
 requirements.txt                        | 1 +
 8 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/bob/bio/base/database/database.py b/bob/bio/base/database/database.py
index d20f76f6..97d73e47 100644
--- a/bob/bio/base/database/database.py
+++ b/bob/bio/base/database/database.py
@@ -86,7 +86,7 @@ class BioDatabase(six.with_metaclass(abc.ABCMeta, bob.db.base.FileDatabase)):
             **kwargs
     ):
 
-        assert isinstance(name, str)
+        assert isinstance(name, six.string_types)
 
         super(BioDatabase, self).__init__(
             original_directory=original_directory,
@@ -180,7 +180,7 @@ class BioDatabase(six.with_metaclass(abc.ABCMeta, bob.db.base.FileDatabase)):
         """
         if replacements is None:
             return
-        if isinstance(replacements, str):
+        if isinstance(replacements, six.string_types):
             if not os.path.exists(replacements):
                 return
             # Open the database replacement file and reads its content
diff --git a/bob/bio/base/database/filelist/query.py b/bob/bio/base/database/filelist/query.py
index 4bb6487b..1f556629 100644
--- a/bob/bio/base/database/filelist/query.py
+++ b/bob/bio/base/database/filelist/query.py
@@ -823,7 +823,7 @@ class FileListBioDatabase(ZTBioDatabase):
           The full path of the original data file.
         """
 
-        if isinstance(self.original_extension, str):
+        if isinstance(self.original_extension, six.string_types):
             # extract file name
             file_name = file.make_path(self.original_directory, self.original_extension)
             if check_existence and os.path.exists(file_name):
diff --git a/bob/bio/base/grid.py b/bob/bio/base/grid.py
index 63906613..60aa0125 100644
--- a/bob/bio/base/grid.py
+++ b/bob/bio/base/grid.py
@@ -2,7 +2,7 @@
 # vim: set fileencoding=utf-8 :
 # @author: Manuel Guenther <Manuel.Guenther@idiap.ch>
 # @date: Tue Oct  2 12:12:39 CEST 2012
-
+import six
 
 PREDEFINED_QUEUES = {
   'default'     : {},
@@ -130,7 +130,7 @@ class Grid (object):
     """
     if self.is_local():
       return {}
-    if isinstance(params, str) and params in PREDEFINED_QUEUES:
+    if isinstance(params, six.string_types) and params in PREDEFINED_QUEUES:
       return PREDEFINED_QUEUES[params]
     elif isinstance(params, dict):
       return params
diff --git a/bob/bio/base/tools/command_line.py b/bob/bio/base/tools/command_line.py
index e7660706..d8bb712f 100644
--- a/bob/bio/base/tools/command_line.py
+++ b/bob/bio/base/tools/command_line.py
@@ -5,6 +5,7 @@ import argparse
 import os
 import socket
 import sys
+import six
 
 import bob.core
 import bob.extension
@@ -242,7 +243,7 @@ def take_from_config_or_command_line(args, config, keyword, default, required=Tr
 
     elif config is not None and hasattr(config, keyword):
         val = getattr(config, keyword)
-        if isinstance(val, str) and is_resource:
+        if isinstance(val, six.string_types) and is_resource:
             val = utils.load_resource(val, keyword, imports=args.imports, package_prefix=args.package_prefix,
                                       preferred_package=args.preferred_package)
         setattr(args, keyword, val)
@@ -294,10 +295,10 @@ def parse_config_file(parsers, args, args_dictionary, keywords, skips):
 
     take_from_config_or_command_line(args, config, "sub_directory",
                                      parser.get_default("sub_directory"), is_resource=False)
-                                     
+
     take_from_config_or_command_line(args, config, "env",
                                      parser.get_default("env"), is_resource=False)
-                                     
+
     skip_keywords = tuple(['skip_' + k.replace('-', '_') for k in skips])
 
     for keyword in keywords + skip_keywords + ('execute_only',):
diff --git a/bob/bio/base/utils/__init__.py b/bob/bio/base/utils/__init__.py
index 75737bdc..6738ad5e 100644
--- a/bob/bio/base/utils/__init__.py
+++ b/bob/bio/base/utils/__init__.py
@@ -56,7 +56,7 @@ def selected_elements(list_of_elements, desired_number_of_elements = None):
 
 def pretty_print(obj, kwargs):
   """Returns a pretty-print of the parameters to the constructor of a class, which should be able to copy-paste on the command line to create the object (with few exceptions)."""
-  return "%s(%s)" % (str(obj.__class__), ", ".join(["%s='%s'" % (key,value) if isinstance(value, str) else "%s=%s" % (key, value) for key,value in kwargs.items() if value is not None]))
+  return "%s(%s)" % (str(obj.__class__), ", ".join(["%s='%s'" % (key,value) if isinstance(value, six.string_types) else "%s=%s" % (key, value) for key,value in kwargs.items() if value is not None]))
 
 
 def is_argument_available(argument, method):
diff --git a/bob/bio/base/utils/resources.py b/bob/bio/base/utils/resources.py
index 5f6f4c13..fa5e3c42 100644
--- a/bob/bio/base/utils/resources.py
+++ b/bob/bio/base/utils/resources.py
@@ -14,6 +14,7 @@ if sys.version_info[0] == 2:
   from string import letters as ascii_letters
 else:
   from string import ascii_letters
+import six
 
 import logging
 logger = logging.getLogger("bob.bio.base")
@@ -173,7 +174,7 @@ def load_resource(resource, keyword, imports = ['bob.bio.base'], package_prefix=
     for i in imports:
       exec ("import %s"%i)
     # now, evaluate the resource (re-evaluate if the resource is still a string)
-    while isinstance(resource, str):
+    while isinstance(resource, six.string_types):
       resource = eval(resource)
     return resource
 
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 126977b7..fa9ebaea 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -44,10 +44,12 @@ requirements:
     - bob.measure
     - bob.sp
     - scipy {{ scipy }}
+    - six {{ six }}
   run:
     - python
     - setuptools
     - scipy
+    - six
 
 test:
   imports:
diff --git a/requirements.txt b/requirements.txt
index bc8552c0..774aac2d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14,3 +14,4 @@ click-plugins
 numpy
 scipy
 setuptools
+six
-- 
GitLab