def test_configitem_options(tmpdir): from astropy.config.configuration import ConfigNamespace, ConfigItem, get_config cio = ConfigItem(['op1', 'op2', 'op3']) class Conf(ConfigNamespace): tstnmo = cio conf = Conf() sec = get_config(cio.module) assert isinstance(cio(), str) assert cio() == 'op1' assert sec['tstnmo'] == 'op1' cio.set('op2') with pytest.raises(TypeError): cio.set('op5') assert sec['tstnmo'] == 'op2' # now try saving apycfg = sec while apycfg.parent is not apycfg: apycfg = apycfg.parent f = tmpdir.join('astropy.cfg') with open(f.strpath, 'wb') as fd: apycfg.write(fd) with open(f.strpath, 'r', encoding='utf-8') as fd: lns = [x.strip() for x in f.readlines()] assert 'tstnmo = op2' in lns
def test_configitem(): from astropy.config.configuration import ConfigNamespace, ConfigItem, get_config ci = ConfigItem(34, 'this is a Description') class Conf(ConfigNamespace): tstnm = ci conf = Conf() assert ci.module == 'astropy.config.tests.test_configs' assert ci() == 34 assert ci.description == 'this is a Description' assert conf.tstnm == 34 sec = get_config(ci.module) assert sec['tstnm'] == 34 ci.description = 'updated Descr' ci.set(32) assert ci() == 32 # It's useful to go back to the default to allow other test functions to # call this one and still be in the default configuration. ci.description = 'this is a Description' ci.set(34) assert ci() == 34
def test_configitem_types(): from astropy.config.configuration import ConfigNamespace, ConfigItem cio = ConfigItem(['op1', 'op2', 'op3']) class Conf(ConfigNamespace): tstnm1 = ConfigItem(34) tstnm2 = ConfigItem(34.3) tstnm3 = ConfigItem(True) tstnm4 = ConfigItem('astring') conf = Conf() assert isinstance(conf.tstnm1, int) assert isinstance(conf.tstnm2, float) assert isinstance(conf.tstnm3, bool) assert isinstance(conf.tstnm4, str) with pytest.raises(TypeError): conf.tstnm1 = 34.3 conf.tstnm2 = 12 # this would should succeed as up-casting with pytest.raises(TypeError): conf.tstnm3 = 'fasd' with pytest.raises(TypeError): conf.tstnm4 = 546.245
def test_configitem_types(): from astropy.config.configuration import ConfigNamespace, ConfigItem ci1 = ConfigItem(34) ci2 = ConfigItem(34.3) ci3 = ConfigItem(True) ci4 = ConfigItem('astring') class Conf(ConfigNamespace): tstnm1 = ci1 tstnm2 = ci2 tstnm3 = ci3 tstnm4 = ci4 conf = Conf() assert isinstance(conf.tstnm1, int) assert isinstance(conf.tstnm2, float) assert isinstance(conf.tstnm3, bool) assert isinstance(conf.tstnm4, str) with pytest.raises(TypeError): conf.tstnm1 = 34.3 conf.tstnm2 = 12 # this would should succeed as up-casting with pytest.raises(TypeError): conf.tstnm3 = 'fasd' with pytest.raises(TypeError): conf.tstnm4 = 546.245 # Test iterator for multi-item namespace. Assume ordered by insertion order. item_names = [x for x in conf] assert item_names == ['tstnm1', 'tstnm2', 'tstnm3', 'tstnm4'] result = [x for x in conf.keys()] assert result == item_names result = [x for x in conf.values()] assert result == [ci1, ci2, ci3, ci4] result = [x for x in conf.items()] assert result == [('tstnm1', ci1), ('tstnm2', ci2), ('tstnm3', ci3), ('tstnm4', ci4)]
def test_configitem_unicode(tmpdir): from astropy.config.configuration import ConfigNamespace, ConfigItem, get_config cio = ConfigItem('ასტრონომიის') class Conf(ConfigNamespace): tstunicode = cio conf = Conf() sec = get_config(cio.module) assert isinstance(cio(), str) assert cio() == 'ასტრონომიის' assert sec['tstunicode'] == 'ასტრონომიის'
def test_configitem(): from astropy.config.configuration import ConfigNamespace, ConfigItem, get_config ci = ConfigItem(34, 'this is a Description') class Conf(ConfigNamespace): tstnm = ci conf = Conf() assert ci.module == 'astropy.config.tests.test_configs' assert ci() == 34 assert ci.description == 'this is a Description' assert conf.tstnm == 34 sec = get_config(ci.module) assert sec['tstnm'] == 34 ci.description = 'updated Descr' ci.set(32) assert ci() == 32 # It's useful to go back to the default to allow other test functions to # call this one and still be in the default configuration. ci.description = 'this is a Description' ci.set(34) assert ci() == 34 # Test iterator for one-item namespace result = [x for x in conf] assert result == ['tstnm'] result = [x for x in conf.keys()] assert result == ['tstnm'] result = [x for x in conf.values()] assert result == [ci] result = [x for x in conf.items()] assert result == [('tstnm', ci)]
class Conf(ConfigNamespace): tstnm12 = ConfigItem(42, 'this is another Description')
class Conf(ConfigNamespace): tstnm1 = ConfigItem(34) tstnm2 = ConfigItem(34.3) tstnm3 = ConfigItem(True) tstnm4 = ConfigItem('astring')