diff --git a/src/hydrodiy/data/dutils.py b/src/hydrodiy/data/dutils.py index 675cd97..b3abe18 100644 --- a/src/hydrodiy/data/dutils.py +++ b/src/hydrodiy/data/dutils.py @@ -16,6 +16,34 @@ import c_hydrodiy_data +def get_value_from_kwargs(kw, fullname, shortname=None, default=None): + """ Extract argument from a kwargs dictionnary. + + Parameters + ---------- + kw : dict + Kwargs dictionnary. + fullname : str + Full name of the argument. + shortname : str + Abbreviated name. + default : obj + Default value. + + Returns + ------- + """ + value = kw.get(fullname, kw.get(shortname, default)) + + if fullname in kw: + kw.pop(fullname) + + if shortname in kw: + kw.pop(shortname) + + return value + + def sequence_true(values): """ Identify start and end of consecutive "true" values. Can be used for gap analysis. diff --git a/src/hydrodiy/data/tests/test_hydata_dutils.py b/src/hydrodiy/data/tests/test_hydata_dutils.py index 5209675..0916f52 100644 --- a/src/hydrodiy/data/tests/test_hydata_dutils.py +++ b/src/hydrodiy/data/tests/test_hydata_dutils.py @@ -51,6 +51,24 @@ def agg_d2m(x, fun="mean"): # Tests + +def test_get_value_from_kwargs(allclose): + kw = dict(firstarg=10, secondarg=100) + v = dutils.get_value_from_kwargs(kw, "firstarg") + assert v == 10 + assert kw == dict(secondarg=100) + + kw = dict(f=10) + v = dutils.get_value_from_kwargs(kw, "firstarg", "f") + assert v == 10 + assert kw == dict() + + kw = dict(firstarg=10) + v = dutils.get_value_from_kwargs(kw, "bidule", "b", 100) + assert v == 100 + assert kw == dict(firstarg=10) + + def test_cast_scalar(allclose): """ Test scalar casts """ x = 0.6