Skip to content

Commit 39d4ea4

Browse files
Tronicahopkins
andauthored
Simplify (request.cookies.)getlist function (#2838)
* Remove the default argument to all uses of `getlist` in Sanic in case none are found. Previously it defaulted to returning `None`. Instead return an empty list which is sensible and avoids ambiguity with return types. * Keep default param * squash * format --------- Co-authored-by: L. Kärkkäinen <Tronic@users.noreply.github.com> Co-authored-by: Adam Hopkins <adam@amhopkins.com>
1 parent e3d59c1 commit 39d4ea4

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

sanic/cookies/request.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ def get(self, name: str, default: Optional[Any] = None) -> Optional[Any]:
155155
return super().get(name, default)
156156

157157
def getlist(
158-
self, name: str, default: Optional[Any] = None
159-
) -> Optional[Any]:
158+
self, name: str, default: Optional[List[Any]] = None
159+
) -> List[Any]:
160160
try:
161161
return self._get_prefixed_cookie(name)
162162
except KeyError:

sanic/request/parameters.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from typing import Any, Optional
3+
from typing import Any, List, Optional
44

55

66
class RequestParameters(dict):
@@ -19,15 +19,15 @@ def get(self, name: str, default: Optional[Any] = None) -> Optional[Any]:
1919
return super().get(name, [default])[0]
2020

2121
def getlist(
22-
self, name: str, default: Optional[Any] = None
23-
) -> Optional[Any]:
22+
self, name: str, default: Optional[List[Any]] = None
23+
) -> List[Any]:
2424
"""Return the entire list
2525
2626
Args:
2727
name (str): The name of the parameter
28-
default (Optional[Any], optional): The default value. Defaults to None.
28+
default (Optional[List[Any]], optional): The default value. Defaults to None.
2929
3030
Returns:
31-
Optional[Any]: The entire list
31+
list[Any]: The entire list of values or [] if not found
3232
""" # noqa: E501
33-
return super().get(name, default)
33+
return super().get(name, default) or []

tests/test_cookies.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ def test_request_cookies():
2424
assert c.getlist("foo") == ["one", "two"]
2525
assert c.getlist("abc") == ["xyz"]
2626
assert c.getlist("") == ["bare", "bare2"]
27-
assert (
28-
c.getlist("bare") is None
29-
) # [] might be sensible but we got None for now
27+
assert c.getlist("bare") == []
3028

3129

3230
# ------------------------------------------------------------ #
@@ -461,10 +459,11 @@ async def handler(request: Request):
461459
"four": request.cookies.get("four", "fallback"),
462460
},
463461
"getlist": {
464-
"one": request.cookies.getlist("one", ["fallback"]),
465-
"two": request.cookies.getlist("two", ["fallback"]),
466-
"three": request.cookies.getlist("three", ["fallback"]),
467-
"four": request.cookies.getlist("four", ["fallback"]),
462+
"one": request.cookies.getlist("one"),
463+
"two": request.cookies.getlist("two"),
464+
"three": request.cookies.getlist("three"),
465+
"four": request.cookies.getlist("four"),
466+
"five": request.cookies.getlist("five", ["fallback"]),
468467
},
469468
"getattr": {
470469
"one": request.cookies.one,
@@ -500,7 +499,8 @@ async def handler(request: Request):
500499
"one": ["1"],
501500
"two": ["2"],
502501
"three": ["3"],
503-
"four": ["fallback"],
502+
"four": [],
503+
"five": ["fallback"],
504504
},
505505
"getattr": {
506506
"one": "1",

0 commit comments

Comments
 (0)