Skip to content

Commit f46ccff

Browse files
Added 'partitioned' parameter to set_cookie method. (#10371)
1 parent 5bb6e95 commit f46ccff

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/helpers.py

+4
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,7 @@ def set_cookie(
940940
secure: Optional[bool] = None,
941941
httponly: Optional[bool] = None,
942942
samesite: Optional[str] = None,
943+
partitioned: Optional[bool] = None,
943944
) -> None:
944945
"""Set or update response cookie.
945946
@@ -974,6 +975,9 @@ def set_cookie(
974975
if samesite is not None:
975976
c["samesite"] = samesite
976977

978+
if partitioned is not None:
979+
c["partitioned"] = partitioned
980+
977981
if DEBUG:
978982
cookie_length = len(c.output(header="")[1:])
979983
if cookie_length > COOKIE_MAX_LENGTH:

docs/web_reference.rst

+7-1
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,8 @@ and :ref:`aiohttp-web-signals` handlers::
705705

706706
.. method:: set_cookie(name, value, *, path='/', expires=None, \
707707
domain=None, max_age=None, \
708-
secure=None, httponly=None, samesite=None)
708+
secure=None, httponly=None, samesite=None, \
709+
partitioned=None)
709710

710711
Convenient way for setting :attr:`cookies`, allows to specify
711712
some additional properties like *max_age* in a single call.
@@ -753,6 +754,11 @@ and :ref:`aiohttp-web-signals` handlers::
753754

754755
.. versionadded:: 3.7
755756

757+
:param bool partitioned: ``True`` to set a partitioned cookie.
758+
Available in Python 3.14+. (optional)
759+
760+
.. versionadded:: 3.12
761+
756762
.. method:: del_cookie(name, *, path='/', domain=None)
757763

758764
Deletes cookie.

tests/test_helpers.py

+13
Original file line numberDiff line numberDiff line change
@@ -976,6 +976,19 @@ def test_cookies_mixin_path() -> None:
976976
)
977977

978978

979+
@pytest.mark.skipif(sys.version_info < (3, 14), reason="No partitioned support")
980+
def test_cookies_mixin_partitioned() -> None:
981+
sut = CookieImplementation()
982+
983+
assert sut.cookies == {}
984+
985+
sut.set_cookie("name", "value", partitioned=False)
986+
assert str(sut.cookies) == "Set-Cookie: name=value; Path=/"
987+
988+
sut.set_cookie("name", "value", partitioned=True)
989+
assert str(sut.cookies) == "Set-Cookie: name=value; Partitioned; Path=/"
990+
991+
979992
def test_sutonse_cookie__issue_del_cookie() -> None:
980993
sut = CookieImplementation()
981994

0 commit comments

Comments
 (0)