diff --git a/src/blosc2/schunk.py b/src/blosc2/schunk.py index b8d6fa879..4184e1432 100644 --- a/src/blosc2/schunk.py +++ b/src/blosc2/schunk.py @@ -154,7 +154,10 @@ class Meta(Mapping): def get(self, key: str, default: Any = None) -> Any: """Return the value for `key` if `key` is in the dictionary, else return `default`. If `default` is not given, it defaults to ``None``.""" - return self.get(key, default) + try: + return self[key] + except KeyError: + return default def __init__(self, schunk): self.schunk = schunk diff --git a/tests/ndarray/test_metalayers.py b/tests/ndarray/test_metalayers.py index 8da9399a5..36f5b4ddb 100644 --- a/tests/ndarray/test_metalayers.py +++ b/tests/ndarray/test_metalayers.py @@ -52,6 +52,10 @@ def test_metalayers(shape, chunks, blocks, urlpath, contiguous, dtype): assert "test" in a.schunk.meta assert a.schunk.meta["test"] == test_meta + assert a.schunk.meta.get("numpy") == numpy_meta + assert a.schunk.meta.get("error") is None + assert a.schunk.meta.get("error", "default") == "default" + test_meta = {b"lorem": 4231} a.schunk.meta["test"] = test_meta assert a.schunk.meta["test"] == test_meta