# Path: dbcollection/core/manager.py
# class CacheManager:
#     """Manage dbcollection configurations and stores them inside a cache file stored in disk.
# 
#     Attributes
#     ----------
#     cache_filename : str
#         Cache file path + name.
#     cache_dir : str
#         Default directory to store all dataset's metadata files.
#     download_dir : str
#         Default save dir path for downloaded data.
#     data : dict
#         Cache contents.
# 
#     """
# 
#     def __init__(self):
#         """Initializes the class."""
#         self.manager = CacheDataManager()
#         self.info = CacheManagerInfo(self.manager)
#         self.dataset = CacheManagerDataset(self.manager)
#         self.task = CacheManagerTask(self.manager)
#         self.category = CacheManagerCategory(self.manager)
# 
#     def info_cache(self):
#         """Prints the information of the cache."""
#         self.info.info()
#         self.dataset.info()
#         self.category.info()


from dbcollection.core.manager import CacheManager
        Tuple of keyword strings to categorize the dataset.
    verbose : bool
        Displays text information.
    force_overwrite : bool
        Forces the overwrite of data in cache
    cache_manager : CacheManager
        Cache manager object.

    """

    def __init__(self, name, task, data_dir, hdf5_filename, categories, verbose, force_overwrite):
        """Initialize class."""
        assert isinstance(name, str), "Must input a valid name."
        assert isinstance(task, str), "Must input a valid task."
        assert isinstance(data_dir, str), "Must input a valid data_dir."
        assert isinstance(hdf5_filename, str), "Must input a valid file_path."
        assert isinstance(categories, tuple), "Must input a valid list(tuple) of categories."
        assert isinstance(verbose, bool), "Must input a valid boolean for verbose."
        assert isinstance(force_overwrite, bool), "Must input a valid boolean for force_overwrite."

        self.name = name
        self.task = task
        self.data_dir = data_dir
        self.hdf5_filename = hdf5_filename
        self.categories = categories
        self.verbose = verbose
        self.force_overwrite = force_overwrite
        self.cache_manager = self.get_cache_manager()

    def get_cache_manager(self):

# Path: dbcollection/core/manager.py
# class CacheManager:
#     """Manage dbcollection configurations and stores them inside a cache file stored in disk.
# 
#     Attributes
#     ----------
#     cache_filename : str
#         Cache file path + name.
#     cache_dir : str
#         Default directory to store all dataset's metadata files.
#     download_dir : str
#         Default save dir path for downloaded data.
#     data : dict
#         Cache contents.
# 
#     """
# 
#     def __init__(self):
#         """Initializes the class."""
#         self.manager = CacheDataManager()
#         self.info = CacheManagerInfo(self.manager)
#         self.dataset = CacheManagerDataset(self.manager)
#         self.task = CacheManagerTask(self.manager)
#         self.category = CacheManagerCategory(self.manager)
# 
#     def info_cache(self):
#         """Prints the information of the cache."""
#         self.info.info()
#         self.dataset.info()
#         self.category.info()


# Path: dbcollection/core/api/add.py
from dbcollection.core.manager import CacheManager

        Tuple of keyword strings to categorize the dataset.
    verbose : bool
        Displays text information.
    force_overwrite : bool
        Forces the overwrite of data in cache
    cache_manager : CacheManager
        Cache manager object.

    """

    def __init__(self, name, task, data_dir, hdf5_filename, categories, verbose, force_overwrite):
        """Initialize class."""
        assert isinstance(name, str), "Must input a valid name."
        assert isinstance(task, str), "Must input a valid task."
        assert isinstance(data_dir, str), "Must input a valid data_dir."
        assert isinstance(hdf5_filename, str), "Must input a valid file_path."
        assert isinstance(categories, tuple), "Must input a valid list(tuple) of categories."
        assert isinstance(verbose, bool), "Must input a valid boolean for verbose."
        assert isinstance(force_overwrite, bool), "Must input a valid boolean for force_overwrite."

        self.name = name
        self.task = task
        self.data_dir = data_dir
        self.hdf5_filename = hdf5_filename
        self.categories = categories
        self.verbose = verbose
        self.force_overwrite = force_overwrite
        self.cache_manager = self.get_cache_manager()

    def get_cache_manager(self):

        return CacheManager()