user [email protected]
usertags 1143335 python3.15
tags 1143335 patch
thanks

Hi!

While rebuilding the python related packages against the Python 3.15rc2
version I ran into this FTBFS [1].

This can be solved by adding the upstream patch 86f1afa feat: Officially
support Python 3.14 (#4649) [2].

I've applied this fix in the sandbox [3] to verify that it builds
successfully, it should be applied in Debian to get the package back to
a healthy state.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4651652/
[2]: 
https://github.com/litestar-org/litestar/commit/86f1afad8c521bece11bb37393962054d465ee28
[3]: https://debusine.debian.net/debian/r-python-python3.15/

--
"Can you imagine what I would do if I could do all I can?" -- Sun Tzu
Saludos /\/\ /\ >< `/
From: Janek Nouvertné <[email protected]>
Date: Thu, 26 Mar 2026 17:59:18 +0100
Subject: feat: Officially support Python 3.14 (#4649)

Origin: upstream, https://github.com/litestar-org/litestar/commit/86f1afad8c521bece11bb37393962054d465ee28
---
Index: litestar/tests/conftest.py
===================================================================
--- litestar.orig/tests/conftest.py	2026-09-20 18:13:16.695079211 +0200
+++ litestar/tests/conftest.py	2026-09-20 18:50:09.666765039 +0200
@@ -17,7 +17,7 @@
 from pytest_lazy_fixtures import lf
 from redis.asyncio import Redis as AsyncRedis
 from redis.client import Redis
-from time_machine import Coordinates, travel
+from time_machine import travel
 #from valkey.asyncio import Valkey as AsyncValkey
 #from valkey.client import Valkey
 
@@ -39,7 +39,7 @@
     from types import ModuleType
 
     from pytest import FixtureRequest, MonkeyPatch
-    from time_machine import Coordinates
+    from time_machine import Traveller
 
     from litestar import Litestar
     from litestar.types import (
@@ -275,7 +275,7 @@
 
 
 @pytest.fixture()
-def frozen_datetime() -> Generator[Coordinates, None, None]:
+def frozen_datetime() -> Generator[Traveller, None, None]:
     with travel(datetime.utcnow, tick=False) as frozen:
         yield frozen
 
Index: litestar/tests/e2e/test_response_caching.py
===================================================================
--- litestar.orig/tests/e2e/test_response_caching.py	2026-09-20 18:13:06.000000000 +0200
+++ litestar/tests/e2e/test_response_caching.py	2026-09-20 18:50:16.666906738 +0200
@@ -21,7 +21,7 @@
 from litestar.types import HTTPScope
 
 if TYPE_CHECKING:
-    from time_machine import Coordinates
+    from time_machine import Traveller
 
 T = TypeVar("T")
 
@@ -60,7 +60,7 @@
         assert mock.call_count == 1
 
 
-def test_handler_expiration(mock: MagicMock, frozen_datetime: "Coordinates") -> None:
+def test_handler_expiration(mock: MagicMock, frozen_datetime: "Traveller") -> None:
     @get("/cached-local", cache=10)
     async def handler() -> str:
         return mock()  # type: ignore[no-any-return]
@@ -78,7 +78,7 @@
         assert mock.call_count == 2
 
 
-def test_default_expiration(mock: MagicMock, frozen_datetime: "Coordinates") -> None:
+def test_default_expiration(mock: MagicMock, frozen_datetime: "Traveller") -> None:
     @get("/cached-default", cache=True)
     async def handler() -> str:
         return mock()  # type: ignore[no-any-return]
Index: litestar/tests/unit/test_middleware/test_session/test_server_side_backend.py
===================================================================
--- litestar.orig/tests/unit/test_middleware/test_session/test_server_side_backend.py	2026-09-20 18:13:06.000000000 +0200
+++ litestar/tests/unit/test_middleware/test_session/test_server_side_backend.py	2026-09-20 18:50:22.435023505 +0200
@@ -11,7 +11,7 @@
 from litestar.testing import TestClient
 
 if TYPE_CHECKING:
-    from time_machine import Coordinates
+    from time_machine import Traveller
 
     from litestar.middleware.session.server_side import ServerSideSessionBackend
 
@@ -70,7 +70,7 @@
     server_side_session_backend: "ServerSideSessionBackend",
     session_data: bytes,
     memory_store: MemoryStore,
-    frozen_datetime: "Coordinates",
+    frozen_datetime: "Traveller",
 ) -> None:
     server_side_session_backend.config.max_age = 1
     server_side_session_backend.config.renew_on_access = True
@@ -121,7 +121,7 @@
     server_side_session_backend: "ServerSideSessionBackend",
     session_data: bytes,
     memory_store: MemoryStore,
-    frozen_datetime: "Coordinates",
+    frozen_datetime: "Traveller",
 ) -> None:
     server_side_session_backend.config.max_age = 1
     await server_side_session_backend.set("foo", session_data, memory_store)
Index: litestar/tests/unit/test_stores.py
===================================================================
--- litestar.orig/tests/unit/test_stores.py	2026-09-20 18:13:06.000000000 +0200
+++ litestar/tests/unit/test_stores.py	2026-09-20 18:50:32.243222076 +0200
@@ -12,7 +12,7 @@
 import pytest
 from _pytest.fixtures import FixtureRequest
 from pytest_mock import MockerFixture
-from time_machine import Coordinates
+from time_machine import Traveller
 
 from litestar.exceptions import ImproperlyConfiguredException
 from litestar.stores.file import FileStore
@@ -69,7 +69,7 @@
     assert await store.get(key) == value
 
 
-async def test_expires(store: Store, frozen_datetime: Coordinates) -> None:
+async def test_expires(store: Store, frozen_datetime: Traveller) -> None:
     await store.set("foo", b"bar", expires_in=1)
 
     frozen_datetime.shift(2)
@@ -87,7 +87,7 @@
 
 @pytest.mark.flaky(reruns=5)
 @pytest.mark.parametrize("renew_for", [10, timedelta(seconds=10)])
-async def test_get_and_renew(store: Store, renew_for: int | timedelta, frozen_datetime: Coordinates) -> None:
+async def test_get_and_renew(store: Store, renew_for: int | timedelta, frozen_datetime: Traveller) -> None:
     if isinstance(store, (RedisStore, ValkeyStore)):
         pytest.skip()
 
@@ -176,7 +176,7 @@
         assert await store.get(key) is None
 
 
-async def test_expires_in(store: Store, frozen_datetime: Coordinates) -> None:
+async def test_expires_in(store: Store, frozen_datetime: Traveller) -> None:
     if not isinstance(store, (RedisStore, ValkeyStore)):
         pytest.xfail("bug in FileStore and MemoryStore")
 
@@ -460,7 +460,7 @@
 
 
 @pytest.mark.parametrize("store_fixture", ["memory_store", "file_store"])
-async def test_memory_delete_expired(store_fixture: str, request: FixtureRequest, frozen_datetime: Coordinates) -> None:
+async def test_memory_delete_expired(store_fixture: str, request: FixtureRequest, frozen_datetime: Traveller) -> None:
     store = request.getfixturevalue(store_fixture)
 
     expect_expired: list[str] = []

Reply via email to