Skip to content

Commit 6709f53

Browse files
[PR #10371/f46ccff backport][3.12] 'partitioned' parameter for set_cookie method. (#10378)
1 parent 822c504 commit 6709f53

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
lines changed

CHANGES/9870.misc.rst

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added support for the ``partitioned`` attribute in the ``set_cookie`` method.

aiohttp/web_response.py

+4
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ def set_cookie(
233233
httponly: Optional[bool] = None,
234234
version: Optional[str] = None,
235235
samesite: Optional[str] = None,
236+
partitioned: Optional[bool] = None,
236237
) -> None:
237238
"""Set or update response cookie.
238239
@@ -269,6 +270,9 @@ def set_cookie(
269270
if samesite is not None:
270271
c["samesite"] = samesite
271272

273+
if partitioned is not None:
274+
c["partitioned"] = partitioned
275+
272276
def del_cookie(
273277
self,
274278
name: str,

docs/web_reference.rst

+6-1
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ and :ref:`aiohttp-web-signals` handlers::
726726
.. method:: set_cookie(name, value, *, path='/', expires=None, \
727727
domain=None, max_age=None, \
728728
secure=None, httponly=None, version=None, \
729-
samesite=None)
729+
samesite=None, partitioned=None)
730730

731731
Convenient way for setting :attr:`cookies`, allows to specify
732732
some additional properties like *max_age* in a single call.
@@ -779,6 +779,11 @@ and :ref:`aiohttp-web-signals` handlers::
779779

780780
.. versionadded:: 3.7
781781

782+
:param bool partitioned: ``True`` to set a partitioned cookie.
783+
Available in Python 3.14+. (optional)
784+
785+
.. versionadded:: 3.12
786+
782787
.. warning::
783788

784789
In HTTP version 1.1, ``expires`` was deprecated and replaced with

tests/test_web_response.py

+14
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import gzip
44
import io
55
import json
6+
import sys
67
import zlib
78
from concurrent.futures import ThreadPoolExecutor
89
from typing import AsyncIterator, Optional
@@ -900,6 +901,19 @@ def test_response_cookies() -> None:
900901
assert str(resp.cookies) == expected
901902

902903

904+
@pytest.mark.skipif(sys.version_info < (3, 14), reason="No partitioned support")
905+
def test_response_cookie_partitioned() -> None:
906+
resp = StreamResponse()
907+
908+
assert resp.cookies == {}
909+
910+
resp.set_cookie("name", "value", partitioned=False)
911+
assert str(resp.cookies) == "Set-Cookie: name=value; Path=/"
912+
913+
resp.set_cookie("name", "value", partitioned=True)
914+
assert str(resp.cookies) == "Set-Cookie: name=value; Partitioned; Path=/"
915+
916+
903917
def test_response_cookie_path() -> None:
904918
resp = StreamResponse()
905919

0 commit comments

Comments
 (0)