Skip to content

Commit 59dd7a8

Browse files
committed
FIELDSETS: allow merge function to accept a single argument [MPY-310]
1 parent fe52ba9 commit 59dd7a8

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

metview/bindings.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1016,6 +1016,7 @@ def bind_functions(namespace, module_name=None):
10161016
namespace["setoutput"] = setoutput
10171017
namespace["metzoom"] = metzoom
10181018
namespace["version_info"] = version_info
1019+
namespace["merge"] = merge
10191020
namespace["dataset_to_fieldset"] = dataset_to_fieldset
10201021

10211022
namespace["Fieldset"] = Fieldset
@@ -1034,7 +1035,7 @@ def bind_functions(namespace, module_name=None):
10341035
greater_than = make(">")
10351036
lower_equal_than = make("<=")
10361037
lower_than = make("<")
1037-
merge = make("&")
1038+
met_merge = make("&")
10381039
met_not_eq = make("<>")
10391040
met_plot = make("plot")
10401041
mod = make("mod")
@@ -1063,6 +1064,14 @@ def version_info():
10631064
return binary_info
10641065

10651066

1067+
# wrapper so that we can merge a single value (just returns itself)
1068+
def merge(*args):
1069+
if len(args) == 1:
1070+
return args[0]
1071+
else:
1072+
return met_merge(*args)
1073+
1074+
10661075
# -----------------------------------------------------------------------------
10671076
# Particular code for calling the plot() command
10681077
# -----------------------------------------------------------------------------

tests/test_metview.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,34 @@ def test_fieldset_create_from_list_of_fieldsets_5():
822822
gl = mv.Fieldset(path=os.path.join(PATH, "test.grib"), fields=list_of_fields)
823823

824824

825+
def test_fieldset_merge_1():
826+
grib = mv.read(os.path.join(PATH, "t_for_xs.grib"))
827+
g3 = mv.merge(grib[1], grib[0])
828+
assert g3.count() == 2
829+
assert g3.grib_get_long("level") == [850, 1000]
830+
831+
832+
def test_fieldset_merge_2():
833+
grib = mv.read(os.path.join(PATH, "t_for_xs.grib"))
834+
g3 = mv.merge(grib[1], grib[0], grib[4])
835+
assert g3.count() == 3
836+
assert g3.grib_get_long("level") == [850, 1000, 400]
837+
838+
839+
def test_fieldset_merge_3():
840+
grib = mv.read(os.path.join(PATH, "t_for_xs.grib"))
841+
g3 = mv.merge(grib[2])
842+
assert g3.count() == 1
843+
assert g3.grib_get_long("level") == 700
844+
845+
846+
def test_fieldset_merge_4():
847+
grib = mv.read(os.path.join(PATH, "t_for_xs.grib"))
848+
g3 = mv.merge(grib[:3])
849+
assert g3.count() == 3
850+
assert g3.grib_get_long("level") == [1000, 850, 700]
851+
852+
825853
def test_fieldset_pickling():
826854
pickled_fname = file_in_testdir("pickled_fieldset.p")
827855
g = mv.Fieldset(path=os.path.join(PATH, "tuv_pl.grib"))

0 commit comments

Comments
 (0)