Example #1
0
 def __init__(self, info=None, config=None):
     """Inheritor class must assign these values."""
     if info is None:
         info = utils.load_info(self.__class__.__name__.lower())
     self.info = info
     self.name = self.info['properties']['name']
     if not config:
         config = default()
         config.DATA_PATH = os.path.join(config.DATA_PATH, self.name)
     self.config = config
     self.data_path = self.config.DATA_PATH
Example #2
0
    def get_dataset(self, info, root=None, data_path=None):

        if not isinstance(info, dict):
            root = root or os.path.dirname(os.path.abspath(info))
            info = utils.load_info(info, given_path=True)
        name = info['properties']['name']
        module_name = info['properties'].get('module', name)
        dataset_module = utils.load_module(module_name, root=root)
        obj = None
        logger.info(inspect.getmembers(dataset_module))
        config = None
        if data_path:
            config = default()
            config.DATA_PATH = root
        for data_name, data_class in inspect.getmembers(dataset_module):
            if inspect.isclass(data_class) and \
               data_name.lower() == module_name.lower():
                obj = data_class(info, config)
                break
        if not obj:
            raise ImportError(('Module {} not found '
                               'the desired class.').format(name))
        return obj
Example #3
0
Utils for the datasets submodule.
"""

import os
import logging
import hashlib
import zipfile
import tarfile
import yaml
import shutil
import sys
import importlib
from six.moves import urllib
from gsitk.config import default

config = default()

logger = logging.getLogger(__name__)


def load_info(name, given_path=False):
    """Load YAML info for dataset."""
    if not given_path:
        path = os.path.dirname(os.path.abspath(__file__))

        if os.path.exists(os.path.join(path, '{}.yml'.format(name))):
            ext = '.yml'
        elif os.path.exists(os.path.join(path, '{}.yaml'.format(name))):
            ext = '.yaml'
        else:
            raise FileNotFoundError("{}".format(name))