diff --git a/bob/db/base/database.py b/bob/db/base/database.py index 9c07002b8fb5502850b06ffceb75b606f78b0e63..de0d5d19c8720f9642dc149af6bcd1ab668d9ad3 100644 --- a/bob/db/base/database.py +++ b/bob/db/base/database.py @@ -29,7 +29,8 @@ class FileDatabase(object): The extension of raw data files, e.g. ``.png``. """ - def __init__(self, original_directory, original_extension): + def __init__(self, original_directory, original_extension, **kwargs): + super(FileDatabase, self).__init__(**kwargs) self.original_directory = original_directory self.original_extension = original_extension @@ -57,7 +58,7 @@ class FileDatabase(object): if self.original_extension is None: raise ValueError( 'self.original_extension was not provided (must not be None)!') - return self.file_names( + return file_names( files, self.original_directory, self.original_extension) def original_file_name(self, file): @@ -102,42 +103,48 @@ class FileDatabase(object): def check_parameters_for_validity(self, parameters, parameter_description, valid_parameters, default_parameters=None): - DeprecationWarning("This method is deprecated. Please use the " - "equivalent function in bob.db.base.utils") + warnings.warn("check_parameters_for_validity is deprecated. Please use " + "the equivalent function in bob.db.base.utils", + DeprecationWarning, stacklevel=2) return check_parameters_for_validity(parameters, parameter_description, valid_parameters, default_parameters) def check_parameter_for_validity(self, parameter, parameter_description, valid_parameters, default_parameter=None): - DeprecationWarning("This method is deprecated. Please use the " - "equivalent function in bob.db.base.utils") + warnings.warn("check_parameter_for_validity is deprecated. Please use the " + "equivalent function in bob.db.base.utils", + DeprecationWarning, stacklevel=2) return check_parameter_for_validity(parameter, parameter_description, valid_parameters, default_parameter) def convert_names_to_highlevel(self, names, low_level_names, high_level_names): - DeprecationWarning("This method is deprecated. Please use the " - "equivalent function in bob.db.base.utils") + warnings.warn("convert_names_to_highlevel is deprecated. Please use the " + "equivalent function in bob.db.base.utils", + DeprecationWarning, stacklevel=2) return convert_names_to_highlevel(names, low_level_names, high_level_names) def convert_names_to_lowlevel(self, names, low_level_names, high_level_names): - DeprecationWarning("This method is deprecated. Please use the " - "equivalent function in bob.db.base.utils") + warnings.warn("convert_names_to_lowlevel is deprecated. Please use the " + "equivalent function in bob.db.base.utils", + DeprecationWarning, stacklevel=2) return convert_names_to_lowlevel(names, low_level_names, high_level_names) def file_names(self, files, directory, extension): - DeprecationWarning("This method is deprecated. Please use the " - "equivalent function in bob.db.base.utils") + warnings.warn("file_names is deprecated. Please use the " + "equivalent function in bob.db.base.utils", + DeprecationWarning, stacklevel=2) return file_names(files, directory, extension) def sort(self, files): - DeprecationWarning("This method is deprecated. Please use the " - "equivalent function (sort_files) in bob.db.base.utils") + warnings.warn("sort is deprecated. Please use " + "sort_files in bob.db.base.utils", + DeprecationWarning, stacklevel=2) return sort_files(files) @@ -145,11 +152,13 @@ class Database(FileDatabase): """This class is deprecated. New databases should use the :py:class:`bob.db.base.FileDatabase` class if required""" - def __init__(self, original_directory=None, original_extension=None): + def __init__(self, original_directory=None, original_extension=None, + **kwargs): warnings.warn("The bob.db.base.Database class is deprecated. " "Please use bob.db.base.FileDatabase instead.", - DeprecationWarning) - super(Database, self).__init__(original_directory, original_extension) + DeprecationWarning, stacklevel=2) + super(Database, self).__init__(original_directory, original_extension, + **kwargs) class SQLiteBaseDatabase(object): @@ -180,7 +189,8 @@ class SQLiteBaseDatabase(object): The `sqlite_file` parameter is kept in this attribute. """ - def __init__(self, sqlite_file, file_class): + def __init__(self, sqlite_file, file_class, **kwargs): + super(SQLiteBaseDatabase, self).__init__(**kwargs) self.m_sqlite_file = sqlite_file if not os.path.exists(sqlite_file): self.m_session = None @@ -312,11 +322,7 @@ class SQLiteBaseDatabase(object): if not preserve_order: return file_objects else: - # path_dict = {f.path : f for f in file_objects} <<-- works fine - # with python 2.7, but not in 2.6 - path_dict = {} - for f in file_objects: - path_dict[f.path] = f + path_dict = {f.path: f for f in file_objects} return [path_dict[path] for path in paths] def uniquify(self, file_list): @@ -355,6 +361,9 @@ class SQLiteDatabase(SQLiteBaseDatabase, FileDatabase): """ def __init__(self, sqlite_file, file_class, - original_directory, original_extension): - SQLiteBaseDatabase.__init__(self, sqlite_file, file_class) - FileDatabase.__init__(self, original_directory, original_extension) + original_directory, original_extension, **kwargs): + kwargs['sqlite_file'] = sqlite_file + kwargs['file_class'] = file_class + kwargs['original_directory'] = original_directory + kwargs['original_extension'] = original_extension + super(SQLiteDatabase, self).__init__(**kwargs) diff --git a/bob/db/base/tests/test_database.py b/bob/db/base/tests/test_database.py new file mode 100644 index 0000000000000000000000000000000000000000..87eb047a0463c9886451c6b8e6b0e3d96a61e857 --- /dev/null +++ b/bob/db/base/tests/test_database.py @@ -0,0 +1,19 @@ +"""You need to run the tests here like this: +$ PYTHONWARNINGS=all bin/nosetests -sv +""" + +from bob.db.base import Database + + +def test_database_deprecations(): + database = Database() + low_level_names = ('train', 'dev') + high_level_names = ('world', 'dev') + database.convert_names_to_lowlevel( + 'world', low_level_names, high_level_names) + database.convert_names_to_highlevel( + 'train', low_level_names, high_level_names) + database.check_parameter_for_validity( + 'world', 'groups', high_level_names, None) + database.check_parameters_for_validity( + 'world', 'groups', high_level_names, None)