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
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
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__
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)
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_)
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_)
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'")
def write_(*args, **kwargs): fmt = 'gwf.{}'.format(get_default_gwf_api()) writer = get_writer(fmt, container) return writer(*args, **kwargs)