utils: Change parse_comma_separated_list() contract

This is the initial incision point to only accept `str` (or `None`) for
parsing out comma/whitespace/regexp separated values.
This commit is contained in:
Eric N. Vander Weele 2019-07-28 10:39:27 -04:00
parent 9fbaf2d2ea
commit 9283f2f03f
3 changed files with 6 additions and 18 deletions

View file

@ -25,13 +25,8 @@
"E121,W123,F904"
"E121,\nW123,\nF804"
"E121,\n\tW123,\n\tF804"
Or it will take a list of strings (potentially with whitespace) such as
.. code-block:: python
[" E121\n", "\t\nW123 ", "\n\tF904\n "]
" E121,\n\tW123,\n\tF804 "
" E121\n\tW123 \n\tF804"
And converts it to a list that looks as follows

View file

@ -24,11 +24,11 @@ string_types = (str, type(u""))
def parse_comma_separated_list(value, regexp=COMMA_SEPARATED_LIST_RE):
# type: (Union[Sequence[str], str], Pattern[str]) -> List[str]
# type: (Optional[str], Pattern[str]) -> List[str]
"""Parse a comma-separated list.
:param value:
String or list of strings to be parsed and normalized.
String to be parsed and normalized.
:param regexp:
Compiled regular expression used to split the value when it is a
string.
@ -46,10 +46,8 @@ def parse_comma_separated_list(value, regexp=COMMA_SEPARATED_LIST_RE):
if not value:
return []
if isinstance(value, string_types):
value = regexp.split(value)
item_gen = (item.strip() for item in value)
separated = regexp.split(value)
item_gen = (item.strip() for item in separated)
return [item for item in item_gen if item]

View file

@ -22,11 +22,6 @@ RELATIVE_PATHS = ["flake8", "pep8", "pyflakes", "mccabe"]
("E123,W234,,E206,,", ["E123", "W234", "E206"]),
("E123, W234,, E206,,", ["E123", "W234", "E206"]),
("E123,,W234,,E206,,", ["E123", "W234", "E206"]),
(["E123", "W234", "E206"], ["E123", "W234", "E206"]),
(["E123", "\n\tW234", "\n E206"], ["E123", "W234", "E206"]),
(["E123", "\n\tW234", "\n E206", "\n"], ["E123", "W234", "E206"]),
(["E123", "\n\tW234", "", "\n E206", "\n"], ["E123", "W234", "E206"]),
(["E123", "\n\tW234", "", "\n E206", ""], ["E123", "W234", "E206"]),
])
def test_parse_comma_separated_list(value, expected):
"""Verify that similar inputs produce identical outputs."""