Esempio n. 1
0
def inherit_io_registrations(cls):
    parent = cls.__mro__[1]
    for row in registry.get_formats(data_class=parent):
        name = row["Format"]
        # read
        if row["Read"].lower() == "yes":
            registry.register_reader(
                name,
                cls,
                registry.get_reader(name, parent),
                force=False,
            )
        # write
        if row["Write"].lower() == "yes":
            registry.register_writer(
                name,
                cls,
                registry.get_writer(name, parent),
                force=False,
            )
        # identify
        if row["Auto-identify"].lower() == "yes":
            registry.register_identifier(
                name,
                cls,
                registry._identifiers[(name, parent)],
                force=False,
            )
    return cls
Esempio n. 2
0
def inherit_table_io(cls):
    """Inherit file I/O registrations from `~astropy.table.Table`

    This decorator is modeled on `~gwpy.table.inherit_io_registrations`,
    authored by Duncan Macleod, for more see https://gwpy.github.io
    """
    for row in registry.get_formats(data_class=Table):
        name = row["Format"]
        # read
        if row["Read"].lower() == "yes":
            registry.register_reader(
                name,
                cls,
                registry.get_reader(name, Table),
                force=False,
            )
        # write
        if row["Write"].lower() == "yes":
            registry.register_writer(
                name,
                cls,
                registry.get_writer(name, Table),
                force=False,
            )
        # identify
        if row["Auto-identify"].lower() == "yes":
            registry.register_identifier(
                name,
                cls,
                registry._identifiers[(name, Table)],
                force=False,
            )
    return cls
Esempio n. 3
0
def inherit_io_registrations(cls):
    parent = cls.__mro__[1]
    for row in registry.get_formats(data_class=parent):
        name = row["Format"]
        # read
        if row["Read"].lower() == "yes":
            registry.register_reader(
                name,
                cls,
                registry.get_reader(name, parent),
                force=False,
            )
        # write
        if row["Write"].lower() == "yes":
            registry.register_writer(
                name,
                cls,
                registry.get_writer(name, parent),
                force=False,
            )
        # identify
        if row["Auto-identify"].lower() == "yes":
            registry.register_identifier(
                name,
                cls,
                registry._identifiers[(name, parent)],
                force=False,
            )
    return cls
Esempio n. 4
0
    def test_write_methods_have_explicit_kwarg_overwrite(self, format):
        writer = io_registry.get_writer(format, Cosmology)
        # test in signature
        sig = inspect.signature(writer)
        assert "overwrite" in sig.parameters

        # also in docstring
        assert "overwrite : bool" in writer.__doc__
Esempio n. 5
0
def test_register_writer():

    io_registry.register_writer('test1', TestData, empty_writer)
    io_registry.register_writer('test2', TestData, empty_writer)

    assert io_registry.get_writer('test1', TestData) == empty_writer
    assert io_registry.get_writer('test2', TestData) == empty_writer

    io_registry.unregister_writer('test1', TestData)

    with pytest.raises(io_registry.IORegistryError):
        io_registry.get_writer('test1', TestData)
    assert io_registry.get_writer('test2', TestData) == empty_writer

    io_registry.unregister_writer('test2', TestData)

    with pytest.raises(io_registry.IORegistryError):
        io_registry.get_writer('test2', TestData)
Esempio n. 6
0
def test_register_writer():

    io_registry.register_writer('test1', TestData, empty_writer)
    io_registry.register_writer('test2', TestData, empty_writer)

    assert io_registry.get_writer('test1', TestData) == empty_writer
    assert io_registry.get_writer('test2', TestData) == empty_writer

    io_registry.unregister_writer('test1', TestData)

    with pytest.raises(io_registry.IORegistryError):
        io_registry.get_writer('test1', TestData)
    assert io_registry.get_writer('test2', TestData) == empty_writer

    io_registry.unregister_writer('test2', TestData)

    with pytest.raises(io_registry.IORegistryError):
        io_registry.get_writer('test2', TestData)
Esempio n. 7
0
def register_library_format(container, library):
    """Register methods for the given library format

    E.g. for lalframe this functions creates methods and registers them
    for the ``lalframe`` format name.

    This format has been deprecated and will be removed prior to the 1.0
    release in favour of the ``gwf.<library>`` contention. All this method
    does is create directes from `format='<library'` to
    `format=gwf.<library>'`.

    Parameters
    ----------
    container : `Series`, `dict`
        series class or series dict class to register

    library : `str`
        name of frame library
    """
    fmt = 'gwf.%s' % library
    reader = get_reader(fmt, container)
    writer = get_writer(fmt, container)

    def read_(*args, **kwargs):
        warnings.warn("Reading with format=%r is deprecated and will be "
                      "disabled in an upcoming release, please use "
                      "format=%r instead" % (library, fmt),
                      DeprecationWarning)
        return reader(*args, **kwargs)

    def write_(*args, **kwargs):
        warnings.warn("Writing with format=%r is deprecated and will be "
                      "disabled in an upcoming release, please use "
                      "format=%r instead" % (library, fmt),
                      DeprecationWarning)
        return writer(*args, **kwargs)

    register_reader(library, container, read_)
    register_writer(library, container, write_)
Esempio n. 8
0
def register_library_format(container, library):
    """Register methods for the given library format

    E.g. for lalframe this functions creates methods and registers them
    for the ``lalframe`` format name.

    This format has been deprecated and will be removed prior to the 1.0
    release in favour of the ``gwf.<library>`` contention. All this method
    does is create directes from `format='<library'` to
    `format=gwf.<library>'`.

    Parameters
    ----------
    container : `Series`, `dict`
        series class or series dict class to register

    library : `str`
        name of frame library
    """
    fmt = 'gwf.%s' % library
    reader = get_reader(fmt, container)
    writer = get_writer(fmt, container)

    def read_(*args, **kwargs):
        warnings.warn(
            "Reading with format=%r is deprecated and will be "
            "disabled in an upcoming release, please use "
            "format=%r instead" % (library, fmt), DeprecationWarning)
        return reader(*args, **kwargs)

    def write_(*args, **kwargs):
        warnings.warn(
            "Writing with format=%r is deprecated and will be "
            "disabled in an upcoming release, please use "
            "format=%r instead" % (library, fmt), DeprecationWarning)
        return writer(*args, **kwargs)

    register_reader(library, container, read_)
    register_writer(library, container, write_)
Esempio n. 9
0
def test_get_writer_invalid():
    with pytest.raises(io_registry.IORegistryError) as exc:
        io_registry.get_writer('test', TestData)
    assert str(exc.value).startswith(
        "No writer defined for format 'test' and class 'TestData'")
Esempio n. 10
0
 def write_(*args, **kwargs):
     fmt = 'gwf.{}'.format(get_default_gwf_api())
     writer = get_writer(fmt, container)
     return writer(*args, **kwargs)
Esempio n. 11
0
 def write_(*args, **kwargs):
     fmt = 'gwf.{}'.format(get_default_gwf_api())
     writer = get_writer(fmt, container)
     return writer(*args, **kwargs)
Esempio n. 12
0
def test_get_writer_invalid():
    with pytest.raises(io_registry.IORegistryError) as exc:
        io_registry.get_writer('test', TestData)
    assert str(exc.value).startswith(
        "No writer defined for format 'test' and class 'TestData'")