asdf-format/asdf

`Compressors` provided via the `extensions` argument to `asdf.AsdfFile.__init__` are ignored

Opened this issue · 0 comments

Providing a Compressor via an Extension listed in the extensions argument to asdf.AsdfFile.__Init__ does not work as expected.

import asdf
import numpy as np


class MyCompressor:
    label = b"hgtg"

    def compress(self, data, **kwargs):
        yield b"42"

    def decompress(self, blocks, out, **kwargs):
        return 0


class MyExtension:
    compressors = [MyCompressor()]
    extension_uri = "asdf://example.com/foo-1.0.0"


arr = np.array([1, 2, 3])
tree = {'arr': arr}

# works via context
with asdf.config_context() as cfg:
    cfg.add_extension(MyExtension())
    af = asdf.AsdfFile()
    af["arr"] = arr
    af.set_array_compression(arr, "hgtg")
    af.write_to("test.asdf")

af = asdf.AsdfFile(extensions=[MyExtension()])
af["arr"] = arr
af.set_array_compression(arr, "hgtg")
af.write_to("test.asdf")   # this fails with ValueError: Invalid compression type: hgtg