def test_importing_rgb_does_not_set_large_format(self): data_item = DataItem.DataItem(numpy.zeros((8, 8, 4), dtype=float)) with contextlib.closing(data_item): data_item_rgb = DataItem.DataItem(numpy.zeros((8, 8, 4), dtype=numpy.uint8)) with contextlib.closing(data_item_rgb): data_element = ImportExportManager.create_data_element_from_data_item(data_item, include_data=True) data_element_rgb = ImportExportManager.create_data_element_from_data_item(data_item_rgb, include_data=True) data_element.pop("large_format") data_element_rgb.pop("large_format") with contextlib.closing(ImportExportManager.create_data_item_from_data_element(data_element)) as data_item: with contextlib.closing(ImportExportManager.create_data_item_from_data_element(data_element_rgb)) as data_item_rgb: self.assertTrue(data_item.large_format) self.assertFalse(data_item_rgb.large_format)
def test_data_item_to_data_element_includes_time_zone(self): # created/modified are utc; timezone is specified in metadata/description/time_zone data_item = DataItem.DataItem(numpy.zeros((16, 16))) data_item.created = datetime.datetime(2013, 6, 18, 14, 5, 4, 0) # always utc data_item.timezone = "Europe/Athens" data_item.timezone_offset = "+0300" data_item._set_modified(datetime.datetime(2013, 6, 18, 14, 5, 4, 0)) # always utc data_item.metadata = { "description": { "time_zone": { "tz": "+0300", "dst": "+60" } } } data_element = ImportExportManager.create_data_element_from_data_item( data_item, include_data=False) self.assertEqual( data_element["datetime_modified"], { "dst": "+60", "local_datetime": "2013-06-18T17:05:04", 'tz': "+0300", 'timezone': "Europe/Athens" })
def test_data_item_to_data_element_and_back_keeps_large_format_flag(self): data_item = DataItem.DataItem(numpy.zeros((4, 4, 4)), large_format=True) with contextlib.closing(data_item): data_element = ImportExportManager.create_data_element_from_data_item(data_item, include_data=True) self.assertTrue(data_element.get("large_format")) with contextlib.closing(ImportExportManager.create_data_item_from_data_element(data_element)) as data_item: self.assertTrue(data_item.large_format)
def test_data_item_with_numpy_bool_to_data_element_produces_json_compatible_dict( self): data_item = DataItem.DataItem(numpy.zeros((16, 16))) data_item.large_format = numpy.product( (2, 3, 4), dtype=numpy.int64) > 10 # produces a numpy.bool_ with contextlib.closing(data_item): data_element = ImportExportManager.create_data_element_from_data_item( data_item, include_data=False) json.dumps(data_element)
def test_data_item_to_data_element_produces_json_compatible_dict(self): data_item = DataItem.DataItem(numpy.zeros((16, 16))) data_item.created = datetime.datetime(2013, 6, 18, 14, 5, 4, 0) # always utc data_item.timezone = "Europe/Athens" data_item.timezone_offset = "+0300" data_item.source_file_path = "/path/to/source/file" data_item._set_modified(datetime.datetime(2013, 6, 18, 14, 5, 4, 0)) # always utc data_item.metadata = {"description": {"time_zone": {"tz": "+0300", "dst": "+60"}}} data_element = ImportExportManager.create_data_element_from_data_item(data_item, include_data=False) json.dumps(data_element)