Exemplo n.º 1
0
def test_register_identifier():

    io_registry.register_identifier('test1', TestData, empty_identifier)
    io_registry.register_identifier('test2', TestData, empty_identifier)

    io_registry.unregister_identifier('test1', TestData)
    io_registry.unregister_identifier('test2', TestData)
Exemplo n.º 2
0
def test_custom_identifier(tmpdir):

    good_fname = str(tmpdir.join('good.txt'))
    bad_fname = str(tmpdir.join('bad.txt'))

    # Create test data files.
    for name in [good_fname, bad_fname]:
        with open(name, 'w') as ff:
            ff.write('\n')

    format_name = 'custom_identifier_test'

    def identifier(origin, *args, **kwargs):
        fname = args[0]
        return 'good' in fname

    @data_loader(format_name, identifier=identifier)
    def reader(*args, **kwargs):
        """Doesn't actually get used."""
        return

    for datatype in [Spectrum1D, SpectrumList]:
        fmts = registry.identify_format('read', datatype, good_fname, None, [], {})
        assert format_name in fmts

        fmts = registry.identify_format('read', datatype, bad_fname, None, [], {})
        assert format_name not in fmts

        # Clean up after ourselves
        registry.unregister_reader(format_name, datatype)
        registry.unregister_identifier(format_name, datatype)
Exemplo n.º 3
0
    def save_register_new_loader(self, filename):
        """
        Save and register new loader file to specutils loader directory.
        If a loader with the current name already exists it will be
        deleted.

        Parameters
        ----------
        filename: str
          Loader filename. If filename does not end in ".py", ".py" will be appended
          to the end of the string.
        """
        filename = "{}.py".format(filename) if not filename.endswith(".py") else filename

        string = self.as_new_loader()

        with open(filename, 'w') as f:
            f.write(string)

        # If a loader by this name exists, delete it
        if self.new_loader_dict['name'] in registry.get_formats()['Format']:
            registry.unregister_reader(self.new_loader_dict['name'], Spectrum1D)
            registry.unregister_identifier(self.new_loader_dict['name'], Spectrum1D)

        # Add new loader to registry
        spec = importlib.util.spec_from_file_location(os.path.basename(filename)[:-3], filename)
        mod = importlib.util.module_from_spec(spec)
        spec.loader.exec_module(mod)

        QMessageBox.information(self,
                                "Loader saved successful.",
                                "Custom loader was saved successfully.")
Exemplo n.º 4
0
    def save_register_new_loader(self, filename):
        """
        Save and register new loader file to specutils loader directory.
        If a loader with the current name already exists it will be
        deleted.

        Parameters
        ----------
        filename: str
          Loader filename. If filename does not end in ".py", ".py" will be appended
          to the end of the string.
        """
        filename = "{}.py".format(
            filename) if not filename.endswith(".py") else filename

        string = self.as_new_loader()

        with open(filename, 'w') as f:
            f.write(string)

        # If a loader by this name exists, delete it
        if self.new_loader_dict['name'] in registry.get_formats()['Format']:
            registry.unregister_reader(self.new_loader_dict['name'],
                                       Spectrum1D)
            registry.unregister_identifier(self.new_loader_dict['name'],
                                           Spectrum1D)

        # Add new loader to registry
        spec = importlib.util.spec_from_file_location(
            os.path.basename(filename)[:-3], filename)
        mod = importlib.util.module_from_spec(spec)
        spec.loader.exec_module(mod)

        QMessageBox.information(self, "Loader saved successful.",
                                "Custom loader was saved successfully.")
Exemplo n.º 5
0
    def save_register_new_loader(self, filename):
        filename = "{}.py".format(
            filename) if not filename.endswith(".py") else filename

        string = self.as_new_loader()

        with open(filename, 'w') as f:
            f.write(string)

        # If a loader by this name exists, delete it
        if self.new_loader_dict['name'] in registry.get_formats()['Format']:
            registry.unregister_reader(self.new_loader_dict['name'],
                                       Spectrum1D)
            registry.unregister_identifier(self.new_loader_dict['name'],
                                           Spectrum1D)

        # Add new loader to registry
        spec = importlib.util.spec_from_file_location(
            os.path.basename(filename)[:-3], filename)
        mod = importlib.util.module_from_spec(spec)
        spec.loader.exec_module(mod)

        message_box = QMessageBox()
        message_box.setText("Loader saved successful.")
        message_box.setIcon(QMessageBox.Information)
        message_box.setInformativeText("Custom loader was saved successfully.")

        message_box.exec()
Exemplo n.º 6
0
def test_custom_identifier(tmpdir):

    good_fname = str(tmpdir.join('good.txt'))
    bad_fname = str(tmpdir.join('bad.txt'))

    # Create test data files.
    for name in [good_fname, bad_fname]:
        with open(name, 'w') as ff:
            ff.write('\n')

    format_name = 'custom_identifier_test'

    def identifier(origin, *args, **kwargs):
        fname = args[0]
        return 'good' in fname

    @data_loader(format_name, identifier=identifier)
    def reader(*args, **kwargs):
        """Doesn't actually get used."""
        return

    for datatype in [Spectrum1D, SpectrumList]:
        fmts = registry.identify_format('read', datatype, good_fname, None, [],
                                        {})
        assert format_name in fmts

        fmts = registry.identify_format('read', datatype, bad_fname, None, [],
                                        {})
        assert format_name not in fmts

        # Clean up after ourselves
        registry.unregister_reader(format_name, datatype)
        registry.unregister_identifier(format_name, datatype)
Exemplo n.º 7
0
def test_default_identifier_extension(tmpdir):

    good_fname = str(tmpdir.join('empty.fits'))
    bad_fname = str(tmpdir.join('empty.txt'))

    # Create test data files.
    for name in [good_fname, bad_fname]:
        with open(name, 'w') as ff:
            ff.write('\n')

    format_name = 'default_identifier_extension_test'

    @data_loader(format_name, extensions=['fits'])
    def reader(*args, **kwargs):
        """Doesn't actually get used."""
        return

    for datatype in [Spectrum1D, SpectrumList]:
        fmts = registry.identify_format('read', datatype, good_fname, None, [], {})
        assert format_name in fmts

        fmts = registry.identify_format('read', datatype, bad_fname, None, [], {})
        assert format_name not in fmts

        # Clean up after ourselves
        registry.unregister_reader(format_name, datatype)
        registry.unregister_identifier(format_name, datatype)
Exemplo n.º 8
0
def test_register_identifier():

    io_registry.register_identifier('test1', TestData, empty_identifier)
    io_registry.register_identifier('test2', TestData, empty_identifier)

    io_registry.unregister_identifier('test1', TestData)
    io_registry.unregister_identifier('test2', TestData)
Exemplo n.º 9
0
def test_default_identifier_extension(tmpdir):

    good_fname = str(tmpdir.join('empty.fits'))
    bad_fname = str(tmpdir.join('empty.txt'))

    # Create test data files.
    for name in [good_fname, bad_fname]:
        with open(name, 'w') as ff:
            ff.write('\n')

    format_name = 'default_identifier_extension_test'

    @data_loader(format_name, extensions=['fits'])
    def reader(*args, **kwargs):
        """Doesn't actually get used."""
        return

    for datatype in [Spectrum1D, SpectrumList]:
        fmts = registry.identify_format('read', datatype, good_fname, None, [],
                                        {})
        assert format_name in fmts

        fmts = registry.identify_format('read', datatype, bad_fname, None, [],
                                        {})
        assert format_name not in fmts

        # Clean up after ourselves
        registry.unregister_reader(format_name, datatype)
        registry.unregister_identifier(format_name, datatype)
Exemplo n.º 10
0
def unregister(format):
    """
    The unregistered format also stays the less preferred format even once its restored
    """
    _low_priority_loaders[format] = True
    if format not in _unregistered_loaders.keys():
        _unregistered_loaders[format] = SpectrumList
        _unregistered_identifiers[format] = registry._identifiers[(
            format, SpectrumList)]
        registry.unregister_identifier(format, SpectrumList)
Exemplo n.º 11
0
    def setup_readwrite(self):
        """Setup & teardown for read/write tests."""
        # register
        io_registry.register_reader("json", Cosmology, read_json)
        io_registry.register_writer("json", Cosmology, write_json)
        io_registry.register_identifier("json", Cosmology, json_identify)

        yield  # run all tests in class

        # unregister
        io_registry.unregister_reader("json", Cosmology)
        io_registry.unregister_writer("json", Cosmology)
        io_registry.unregister_identifier("json", Cosmology)
Exemplo n.º 12
0
def teardown():
    """Clean up module after tests."""

    yield  # to let all tests within the scope run

    if ASTROPY_GE_5:
        from astropy.cosmology import Cosmology
        from astropy.io import registry as io_registry

        io_registry.unregister_reader("myformat", Cosmology)
        io_registry.unregister_writer("myformat", Cosmology)
        io_registry.unregister_identifier("myformat", Cosmology)

        io_registry.unregister_reader("mypackage", Cosmology)
        io_registry.unregister_writer("mypackage", Cosmology)
        io_registry.unregister_identifier("mypackage", Cosmology)
Exemplo n.º 13
0
def test_default_identifier(tmpdir):

    fname = str(tmpdir.join('empty.txt'))
    with open(fname, 'w') as ff:
        ff.write('\n')

    format_name = 'default_identifier_test'

    @data_loader(format_name)
    def reader(*args, **kwargs):
        """Doesn't actually get used."""
        return

    for datatype in [Spectrum1D, SpectrumList]:
        fmts = registry.identify_format('read', datatype, fname, None, [], {})
        assert format_name in fmts

        # Clean up after ourselves
        registry.unregister_reader(format_name, datatype)
        registry.unregister_identifier(format_name, datatype)
Exemplo n.º 14
0
def test_default_identifier(tmpdir):

    fname = str(tmpdir.join('empty.txt'))
    with open(fname, 'w') as ff:
        ff.write('\n')

    format_name = 'default_identifier_test'

    @data_loader(format_name)
    def reader(*args, **kwargs):
        """Doesn't actually get used."""
        return

    for datatype in [Spectrum1D, SpectrumList]:
        fmts = registry.identify_format('read', datatype, fname, None, [], {})
        assert format_name in fmts

        # Clean up after ourselves
        registry.unregister_reader(format_name, datatype)
        registry.unregister_identifier(format_name, datatype)
Exemplo n.º 15
0
def test_loader_uses_priority(tmpdir):
    counter = Counter()
    fname = str(tmpdir.join('good.txt'))

    with open(fname, 'w') as ff:
        ff.write('\n')

    def identifier(origin, *args, **kwargs):
        fname = args[0]
        return 'good' in fname

    @data_loader("test_counting_loader1", identifier=identifier, priority=1)
    def counting_loader1(*args, **kwargs):
        counter["test1"] += 1
        wave = np.arange(1, 1.1, 0.01) * u.AA
        return Spectrum1D(
            spectral_axis=wave,
            flux=np.ones(len(wave)) * 1.e-14 * u.Jy,
        )

    @data_loader("test_counting_loader2", identifier=identifier, priority=2)
    def counting_loader2(*args, **kwargs):
        counter["test2"] += 1
        wave = np.arange(1, 1.1, 0.01) * u.AA
        return Spectrum1D(
            spectral_axis=wave,
            flux=np.ones(len(wave)) * 1.e-14 * u.Jy,
        )

    Spectrum1D.read(fname)
    assert counter["test2"] == 1
    assert counter["test1"] == 0

    for datatype in [Spectrum1D, SpectrumList]:
        registry.unregister_reader("test_counting_loader1", datatype)
        registry.unregister_identifier("test_counting_loader1", datatype)
        registry.unregister_reader("test_counting_loader2", datatype)
        registry.unregister_identifier("test_counting_loader2", datatype)
Exemplo n.º 16
0
def unregister(format):
    if format not in unregistered_loaders:
        unregistered_loaders[format] = SpectrumList
        registry.unregister_identifier(format, SpectrumList)
Exemplo n.º 17
0
def test_unregister_identifier_invalid():
    with pytest.raises(io_registry.IORegistryError) as exc:
        io_registry.unregister_identifier('test', TestData)
    assert str(exc.value) == "No identifier defined for format 'test' and class 'TestData'"
Exemplo n.º 18
0
def teardown_module(module):
    """clean up module after tests."""
    io_registry.unregister_reader("json", Cosmology)
    io_registry.unregister_writer("json", Cosmology)
    io_registry.unregister_identifier("json", Cosmology)
Exemplo n.º 19
0
def test_unregister_identifier_invalid():
    with pytest.raises(io_registry.IORegistryError) as exc:
        io_registry.unregister_identifier('test', TestData)
    assert str(
        exc.value
    ) == "No identifier defined for format 'test' and class 'TestData'"
Exemplo n.º 20
0
def teardown_module(module):
    """clean up module after tests."""
    with pytest.warns(FutureWarning):  # idk
        io_registry.unregister_reader("json", Cosmology)
        io_registry.unregister_writer("json", Cosmology)
        io_registry.unregister_identifier("json", Cosmology)