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,W123,F904"
"E121,\nW123,\nF804" "E121,\nW123,\nF804"
"E121,\n\tW123,\n\tF804" " E121,\n\tW123,\n\tF804 "
" 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 "]
And converts it to a list that looks as follows 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): 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. """Parse a comma-separated list.
:param value: :param value:
String or list of strings to be parsed and normalized. String to be parsed and normalized.
:param regexp: :param regexp:
Compiled regular expression used to split the value when it is a Compiled regular expression used to split the value when it is a
string. string.
@ -46,10 +46,8 @@ def parse_comma_separated_list(value, regexp=COMMA_SEPARATED_LIST_RE):
if not value: if not value:
return [] return []
if isinstance(value, string_types): separated = regexp.split(value)
value = regexp.split(value) item_gen = (item.strip() for item in separated)
item_gen = (item.strip() for item in value)
return [item for item in item_gen if item] 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,,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): def test_parse_comma_separated_list(value, expected):
"""Verify that similar inputs produce identical outputs.""" """Verify that similar inputs produce identical outputs."""