コード例 #1
0
 def test_serialize(self):
     """Message can be serialized to file."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         with open(TEST_OUTPUT, "w") as test:
             msg.write(test)
     os.unlink(TEST_OUTPUT)
コード例 #2
0
 def test_metadata(self):
     """Metadata is read correctly from GribMessage."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         key_count = 255
         self.assertEqual(len(msg), key_count)
         self.assertEqual(msg.size(), 160219)
         self.assertEqual(len(msg.keys()), key_count)
コード例 #3
0
 def test_missing_message_behavior(self):
     """Missing messages are detected properly."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         self.assertTrue(msg.missing("scaleFactorOfSecondFixedSurface"))
         msg["scaleFactorOfSecondFixedSurface"] = 5
         msg.set_missing("scaleFactorOfSecondFixedSurface")
         with self.assertRaises(KeyError):
             msg["scaleFactorOfSecondFixedSurface"]
コード例 #4
0
 def test_iteration_works(self):
     """The GribFile allows proper iteration over all messages."""
     step_ranges = []
     with GribFile(TESTGRIB) as grib:
         for _ in range(len(grib)):
             msg = GribMessage(grib)
             step_ranges.append(msg["stepRange"])
     self.assertSequenceEqual(step_ranges, ["0", "6", "12", "18", "24"])
コード例 #5
0
ファイル: gribindex.py プロジェクト: weathersource/grib_api
    def select(self, key_value_pairs):
        """
        Return message associated with given key value pairs.

        ``key_value_pairs`` should be passed as a dictionary.
        """
        for key in key_value_pairs:
            gribapi.grib_index_select(self.iid, key, key_value_pairs[key])
        return GribMessage(gribindex=self)
コード例 #6
0
 def test_memory_management(self):
     """Messages in GribFile can be opened and closed properly."""
     with GribFile(TESTGRIB) as grib:
         self.assertEqual(len(grib), 5)
         for i in range(len(grib)):
             msg = GribMessage(grib)
             self.assertEqual(msg["shortName"], "msl")
         self.assertEqual(len(grib.open_messages), 5)
     self.assertEqual(len(grib.open_messages), 0)
コード例 #7
0
ファイル: gribfile.py プロジェクト: weathersource/grib_api
 def next(self):
     try:
         return GribMessage(self)
     except IOError:
         raise StopIteration()
コード例 #8
0
 def test_value_setting(self):
     """Keys can be set properly."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         msg["scaleFactorOfSecondFixedSurface"] = 5
         msg["values"] = [1, 2, 3]
コード例 #9
0
 def test_read_invalid_file(self):
     """Trying to open message on nonexistent GRIB file raises IOError."""
     with NamedTemporaryFile(mode='r') as f:
         with GribFile(f.name) as grib:
             self.assertRaises(IOError, lambda: GribMessage(grib))
コード例 #10
0
 def test_read_past_last_message(self):
     """Trying to open message on exhausted GRIB file raises IOError."""
     with GribFile(TESTGRIB) as grib:
         for _ in range(len(grib)):
             GribMessage(grib)
         self.assertRaises(IOError, lambda: GribMessage(grib))
コード例 #11
0
 def test_clone(self):
     """Messages can be used to produce clone Messages."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         msg2 = GribMessage(clone=msg)
         self.assertSequenceEqual(msg.keys(), msg2.keys())