示例#1
0
def test_locator_file_names_supports_datetime_types(time):
    path = "file.nc"
    variable = "variable"
    database = db.Database.connect(":memory:")
    database.insert_file_name(path, "2020-01-01 00:00:00")
    database.insert_time(path, variable, "2020-01-01 00:00:00", 0)
    locator = db.Locator(database.connection)
    result = locator.file_names(path, variable, time, time)
    expect = [path]
    assert expect == result
示例#2
0
 def test_image_given_non_existent_entry_in_database(self):
     name = None
     pattern = None
     database = db.Database.connect(":memory:")
     locator = db.Locator(database.connection)
     state = db.State(variable="variable",
                      initial_time="2019-01-01 00:00:00",
                      valid_time="2019-01-01 00:00:00",
                      pressure=1000.)
     loader = data.DBLoader(name, pattern, locator)
     result = loader.image(state)
     expect = self.empty_image
     self.assert_dict_equal(expect, result)
示例#3
0
 def __init__(self,
              label=None,
              pattern=None,
              locator="file_system",
              directory=None,
              database_path=None,
              **kwargs):
     self.label = label
     self.pattern = pattern
     self.use_database = locator == "database"
     if self.use_database:
         self.database = db.get_database(database_path)
         self.locator = db.Locator(self.database.connection,
                                   directory=directory)
     else:
         self.locator = Locator.pattern(self.pattern)
示例#4
0
 def test_image_given_inconsistent_pressures(self):
     path = "file.nc"
     variable = "variable"
     initial_time = "2019-01-01 00:00:00"
     valid_time = "2019-01-01 00:00:00"
     pressure = 1000.
     database = db.Database.connect(":memory:")
     database.insert_file_name(path, initial_time)
     database.insert_pressure(path, variable, pressure, i=0)
     database.insert_time(path, variable, valid_time, i=0)
     locator = db.Locator(database.connection)
     state = db.State(variable=variable,
                      initial_time=initial_time,
                      valid_time=valid_time,
                      pressure=pressure,
                      pressures=[925.])
     loader = data.DBLoader(None, "*.nc", locator)
     result = loader.image(state)
     expect = self.empty_image
     self.assert_dict_equal(expect, result)
示例#5
0
    def from_database(cls,
                      connection,
                      file_type,
                      label,
                      pattern,
                      replacement_dir=None):
        """Builds a loader powered by a SQL database

        .. note:: ``replacement_dir`` can be used to modify
                  names in ``file`` table

        :param connection: sqlite3.connection to a database
        :param file_type: keyword to specify particular loader
        :param label: keyword to link app state to loader
        :param replacement_dir: directory to substitute in ``file`` table
        """
        locator = db.Locator(connection, directory=replacement_dir)
        return cls.file_loader(file_type,
                               pattern,
                               label=label,
                               locator=locator)
示例#6
0
 def setUp(self):
     self.connection = sqlite3.connect(":memory:")
     self.database = db.Database(self.connection)
     self.locator = db.Locator(self.connection)