def test_grib_uuid_get_set(): # ECC-1167 gid = eccodes.codes_grib_new_from_samples("GRIB2") eccodes.codes_set(gid, "gridType", "unstructured_grid") uuid = eccodes.codes_get_string(gid, "uuidOfHGrid") assert uuid == "00000000000000000000000000000000" eccodes.codes_set_string(gid, "uuidOfHGrid", "DEfdBEef10203040b00b1e50001100FF") uuid = eccodes.codes_get_string(gid, "uuidOfHGrid") assert uuid == "defdbeef10203040b00b1e50001100ff" eccodes.codes_release(gid)
def test_grib_keys_iterator_skip(): gid = eccodes.codes_grib_new_from_samples("reduced_gg_pl_1280_grib1") iterid = eccodes.codes_keys_iterator_new(gid, "ls") count = 0 eccodes.codes_skip_computed(iterid) # codes_skip_coded(iterid) eccodes.codes_skip_edition_specific(iterid) eccodes.codes_skip_duplicates(iterid) eccodes.codes_skip_read_only(iterid) eccodes.codes_skip_function(iterid) while eccodes.codes_keys_iterator_next(iterid): keyname = eccodes.codes_keys_iterator_get_name(iterid) keyval = eccodes.codes_get_string(gid, keyname) assert len(keyval) > 0 count += 1 # centre, level and dataType assert count == 3 eccodes.codes_keys_iterator_delete(iterid) iterid = eccodes.codes_keys_iterator_new(gid) count = 0 eccodes.codes_skip_coded(iterid) while eccodes.codes_keys_iterator_next(iterid): count += 1 assert count == 141 eccodes.codes_keys_iterator_delete(iterid) eccodes.codes_release(gid)
def _index_grib_file(path, path_name=None): import eccodes with open(path, "rb") as f: h = eccodes.codes_grib_new_from_file(f) while h: try: field = dict() if isinstance(path_name, str): field["_path"] = path_name elif path_name is False: pass elif path_name is None: field["_path"] = path else: raise ValueError( f"Value of path_name cannot be '{path_name}.'") i = eccodes.codes_keys_iterator_new(h, "mars") try: while eccodes.codes_keys_iterator_next(i): name = eccodes.codes_keys_iterator_get_name(i) value = eccodes.codes_get_string(h, name) field[name] = value finally: eccodes.codes_keys_iterator_delete(i) field["_offset"] = eccodes.codes_get_long(h, "offset") field["_length"] = eccodes.codes_get_long(h, "totalLength") field["_param_id"] = eccodes.codes_get_string(h, "paramId") field["param"] = eccodes.codes_get_string(h, "shortName") yield field finally: eccodes.codes_release(h) h = eccodes.codes_grib_new_from_file(f)
def test_grib_keys_iterator(): gid = eccodes.codes_grib_new_from_samples("reduced_gg_pl_1280_grib1") iterid = eccodes.eccodes.codes_keys_iterator_new(gid, "ls") count = 0 while eccodes.codes_keys_iterator_next(iterid): keyname = eccodes.codes_keys_iterator_get_name(iterid) keyval = eccodes.codes_get_string(gid, keyname) assert len(keyval) > 0 count += 1 assert count == 10 eccodes.codes_keys_iterator_rewind(iterid) eccodes.eccodes.codes_keys_iterator_delete(iterid) eccodes.codes_release(gid)
def get_string(self, k: str) -> str: return eccodes.codes_get_string(self.gid, k)
def get_string(self, name): try: return eccodes.codes_get_string(self.handle, name) except eccodes.KeyValueNotFoundError: return None
def get_string(self, key): return eccodes.codes_get_string(self.handle, key)