Exemple #1
0
def test_cf_sglocator_match_attr(attr, root, loc, expected):
    value = dict(
        standard_name="my_var_at_t_location",
        long_name="My var at T location",
        name="myvar_t",
    )[attr]
    assert cf.SGLocator().match_attr(attr, value, root, loc) is expected
Exemple #2
0
def test_cf_sglocator_format_dataarray_no_copy_no_rename():
    banana = xr.DataArray(1,
                          name="banana_t",
                          attrs={"standard_name": "banana"})
    banana_fmt = cf.SGLocator().format_dataarray(banana,
                                                 "p",
                                                 copy=False,
                                                 rename=False)
    assert banana_fmt is banana
    assert banana_fmt.name == "banana_t"
    assert banana_fmt.standard_name == "banana_at_p_location"
Exemple #3
0
def test_cf_sglocator_get_location_error(name, standard_name, long_name):

    da = xr.DataArray(0)
    if name:
        da.name = name
    if standard_name:
        da.attrs["standard_name"] = standard_name
    if long_name:
        da.attrs["long_name"] = long_name

    with pytest.raises(cf.XoaCFError) as excinfo:
        cf.SGLocator().get_location(da)
Exemple #4
0
def test_cf_sglocator_get_location(name, standard_name, long_name, loc):

    da = xr.DataArray(0)
    if name:
        da.name = name
    if standard_name:
        da.attrs["standard_name"] = standard_name
    if long_name:
        da.attrs["long_name"] = long_name

    parsed_loc = cf.SGLocator().get_location(da)
    assert parsed_loc == loc
Exemple #5
0
def test_cf_sglocator_format_attrs_with_loc():
    attrs = {
        "name": "u_u",
        "standard_name": "banana_at_t_location",
        "long_name": "Banana",
        "int_attr": 10,
        "str_attr": "good",
    }

    fmt_attrs = cf.SGLocator().format_attrs(attrs, loc="f")
    assert fmt_attrs["name"] == "u_u"
    assert fmt_attrs["standard_name"] == "banana_at_f_location"
    assert fmt_attrs["long_name"] == "Banana at F location"
    for attr in ("int_attr", "str_attr"):
        assert fmt_attrs[attr] == attrs[attr]
Exemple #6
0
def test_cf_sglocator_patch_attrs(isn, psn, osn, loc):

    iattrs = {"units": "m", "color": "blue"}
    patch = {"cmap": "viridis", "mylist": [1, 2], "units": "cm"}
    if isn:
        iattrs["standard_name"] = isn
    if psn:
        patch["standard_name"] = psn

    oattrs = cf.SGLocator().patch_attrs(iattrs, patch, loc=loc)

    assert oattrs["units"] == "cm"
    assert oattrs["color"] == "blue"
    assert oattrs["cmap"] == "viridis"
    assert oattrs["mylist"] == [1, 2]

    assert oattrs.get("standard_name") == osn
Exemple #7
0
def test_cf_sglocator_format_dataarray(floc, fname, fattrs, out_name,
                                       out_standard_name):

    lon = xr.DataArray(range(5), dims="lon")
    banana = xr.DataArray(
        lon + 20,
        dims="lon",
        coords=[lon],
        name="banana_t",
        attrs={
            "standard_name": "banana",
            "taste": "good"
        },
    )
    banana_fmt = cf.SGLocator().format_dataarray(banana,
                                                 floc,
                                                 name=fname,
                                                 attrs=fattrs)
    assert banana_fmt.name == out_name
    assert banana_fmt.standard_name == out_standard_name
    assert banana_fmt.taste == "good"
Exemple #8
0
def test_cf_sglocator_parse_attr_with_valid_locations(attr, value, expected):
    assert cf.SGLocator(
        valid_locations=['u', 'rho'],
        name_format="{root}{loc}",
    ).parse_attr(attr, value) == expected
Exemple #9
0
def test_cf_sglocator_parse_attr(attr, value, expected):
    assert cf.SGLocator().parse_attr(attr, value) == expected
Exemple #10
0
def test_cf_sglocator_merge_attr(value0, value1, loc, value):
    out = cf.SGLocator().merge_attr("name", value0, value1, loc)
    assert out == value
Exemple #11
0
def test_cf_sglocator_format_attr_valid_locations():
    with pytest.raises(cf.XoaCFError) as excinfo:
        cf.SGLocator(valid_locations="x").format_attr("name", "banana", "y")
    assert str(excinfo.value) == "Invalid location: y. Please one use of: x."
Exemple #12
0
def test_cf_sglocator_format_attr(attr, root, loc, expected):
    assert cf.SGLocator().format_attr(attr, root, loc) == expected