Skip to content

Commit d9aae01

Browse files
committed
Make or_list function more readable
Replicates graphql/graphql-js@7a27ef1
1 parent 218ff57 commit d9aae01

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

graphql/pyutils/or_list.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@
99
def or_list(items: Sequence[str]) -> Optional[str]:
1010
"""Given [A, B, C] return 'A, B, or C'."""
1111
if not items:
12-
raise TypeError("List must not be empty")
12+
raise ValueError
13+
1314
if len(items) == 1:
1415
return items[0]
15-
selected = items[:MAX_LENGTH]
16-
return ", ".join(selected[:-1]) + " or " + selected[-1]
16+
if len(items) == 2:
17+
return items[0] + " or " + items[1]
18+
19+
*selected, last_item = items[:MAX_LENGTH]
20+
return ", ".join(selected) + " or " + last_item

tests/pyutils/test_or_list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
def describe_or_list():
77
def returns_none_for_empty_list():
8-
with raises(TypeError):
8+
with raises(ValueError):
99
or_list([])
1010

1111
def prints_list_with_one_item():

tests/pyutils/test_quoted_or_list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
def describe_quoted_or_list():
77
def does_not_accept_an_empty_list():
8-
with raises(TypeError):
8+
with raises(ValueError):
99
quoted_or_list([])
1010

1111
def returns_single_quoted_item():

0 commit comments

Comments
 (0)