config: Change ConfigFileFinder._read_config() to accept variadic args

This simplifies `._read_config()` by removing a conditional branch in
the situation where it is called with one file to process.  Now the
contract accepts any number of arguments of the same type.

Where callers invoke `._read_config()` with a `Sequence`, the call site
has been changed to unpack arguments (i.e., `*`).

The tests in `test_merged_config_parser.py` needed to return a string
for the user configuration path instead of an empty list since
`ConfigFileFinder.user_config_file()` returns a string.
This commit is contained in:
Eric N. Vander Weele 2020-01-01 23:38:51 -05:00
parent 20906d4304
commit 1a4060cd5f
3 changed files with 9 additions and 9 deletions

View file

@ -4,7 +4,7 @@ import configparser
import logging
import os.path
import sys
from typing import Dict, List, Sequence, Tuple, Union
from typing import Dict, List, Tuple
from flake8 import utils
@ -55,11 +55,9 @@ class ConfigFileFinder(object):
# fmt: on
@staticmethod
def _read_config(files):
# type: (Union[Sequence[str], str]) -> Tuple[configparser.RawConfigParser, List[str]] # noqa: E501
def _read_config(*files):
# type: (*str) -> Tuple[configparser.RawConfigParser, List[str]]
config = configparser.RawConfigParser()
if isinstance(files, (str, type(u""))):
files = [files]
found_files = []
for filename in files:
@ -129,7 +127,9 @@ class ConfigFileFinder(object):
Return (config, found_config_files) tuple.
"""
if self._local_configs is None:
config, found_files = self._read_config(self.local_config_files())
config, found_files = self._read_config(
*self.local_config_files()
)
if found_files:
LOG.debug("Found local configuration files: %s", found_files)
self._local_configs = config

View file

@ -113,7 +113,7 @@ def test_local_configs_double_read():
])
def test_read_config_catches_broken_config_files(files):
"""Verify that we do not allow the exception to bubble up."""
_, parsed = config.ConfigFileFinder._read_config(files)
_, parsed = config.ConfigFileFinder._read_config(*files)
assert BROKEN_CONFIG_PATH not in parsed

View file

@ -183,7 +183,7 @@ def test_parsed_configs_are_equivalent(
localcfs.return_value = [config_fixture_path]
with mock.patch.object(config_finder,
'user_config_file') as usercf:
usercf.return_value = []
usercf.return_value = ''
parsed_config = parser.merge_user_and_local_config()
assert parsed_config['ignore'] == ['E123', 'W234', 'E111']
@ -215,7 +215,7 @@ def test_parsed_hyphenated_and_underscored_names(
localcfs.return_value = [config_file]
with mock.patch.object(config_finder,
'user_config_file') as usercf:
usercf.return_value = []
usercf.return_value = ''
parsed_config = parser.merge_user_and_local_config()
assert parsed_config['max_line_length'] == 110