See https://github.com/PyCQA/pylint/issues/1698
This commit is contained in:
Florian Bruhin 2017-10-11 08:09:55 +02:00
parent 59a1609dd8
commit bdc82bc633
4 changed files with 18 additions and 11 deletions

View File

@ -36,7 +36,11 @@ disable=no-self-use,
too-many-return-statements, too-many-return-statements,
duplicate-code, duplicate-code,
wrong-import-position, wrong-import-position,
no-else-return no-else-return,
# https://github.com/PyCQA/pylint/issues/1698
unsupported-membership-test,
unsupported-assignment-operation,
unsubscriptable-object
[BASIC] [BASIC]
function-rgx=[a-z_][a-z0-9_]{2,50}$ function-rgx=[a-z_][a-z0-9_]{2,50}$

View File

@ -162,16 +162,22 @@ class YamlConfig(QObject):
"'global' object is not a dict") "'global' object is not a dict")
raise configexc.ConfigFileErrors('autoconfig.yml', [desc]) raise configexc.ConfigFileErrors('autoconfig.yml', [desc])
# Handle unknown/renamed keys self._values = global_obj
for name in list(global_obj): self._dirty = False
self._handle_migrations()
def _handle_migrations(self):
"""Handle unknown/renamed keys."""
for name in list(self._values):
if name in configdata.MIGRATIONS.renamed: if name in configdata.MIGRATIONS.renamed:
new_name = configdata.MIGRATIONS.renamed[name] new_name = configdata.MIGRATIONS.renamed[name]
log.config.debug("Renaming {} to {}".format(name, new_name)) log.config.debug("Renaming {} to {}".format(name, new_name))
global_obj[new_name] = global_obj[name] self._values[new_name] = self._values[name]
del global_obj[name] del self._values[name]
elif name in configdata.MIGRATIONS.deleted: elif name in configdata.MIGRATIONS.deleted:
log.config.debug("Removing {}".format(name)) log.config.debug("Removing {}".format(name))
del global_obj[name] del self._values[name]
elif name in configdata.DATA: elif name in configdata.DATA:
pass pass
else: else:
@ -180,9 +186,6 @@ class YamlConfig(QObject):
"Unknown option {}".format(name)) "Unknown option {}".format(name))
raise configexc.ConfigFileErrors('autoconfig.yml', [desc]) raise configexc.ConfigFileErrors('autoconfig.yml', [desc])
self._values = global_obj
self._dirty = False
def unset(self, name): def unset(self, name):
"""Remove the given option name if it's configured.""" """Remove the given option name if it's configured."""
try: try:

View File

@ -45,7 +45,7 @@ def test_no_option_error(deleted, renamed, expected):
def test_no_option_error_clash(): def test_no_option_error_clash():
with pytest.raises(AssertionError): with pytest.raises(AssertionError):
e = configexc.NoOptionError('opt', deleted=True, renamed='foo') configexc.NoOptionError('opt', deleted=True, renamed='foo')
def test_backend_error(): def test_backend_error():

View File

@ -103,7 +103,7 @@ class TestEarlyInit:
else: else:
assert config.instance._values == {} assert config.instance._values == {}
@pytest.mark.parametrize('load_autoconfig', [True, False]) @pytest.mark.parametrize('load_autoconfig', [True, False]) # noqa
@pytest.mark.parametrize('config_py', [True, 'error', False]) @pytest.mark.parametrize('config_py', [True, 'error', False])
@pytest.mark.parametrize('invalid_yaml', ['42', 'unknown', 'wrong-type', @pytest.mark.parametrize('invalid_yaml', ['42', 'unknown', 'wrong-type',
False]) False])