diff --git a/debian/changelog b/debian/changelog
index 577acc8eec4520dcdf46a8dd78b538c7fa25a4a9..89e912501884bb38363eec0fd2e6961bbe966056 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+apertis-dev-tools (0.2026.1) apertis; urgency=medium
+
+  * import-debian-package: stop using a PosixPath object as context manager.
+    This is no longer supported since Python 3.13 and triggers an error.
+
+ -- Dylan Aïssi <dylan.aissi@collabora.com>  Tue, 25 Feb 2025 09:47:11 +0100
+
 apertis-dev-tools (0.2026.0) apertis; urgency=medium
 
   * apertis-pkg-merge-upstream-to-downstreams:
diff --git a/tools/import-debian-package b/tools/import-debian-package
index bad0725787bb109b4397fca89c93b80f978bd4ec..eda6a4762a0215a905ecc15858bc67f7b33907f2 100755
--- a/tools/import-debian-package
+++ b/tools/import-debian-package
@@ -19,7 +19,7 @@ import sys
 from functools import lru_cache
 from gettext import gettext as _
 from pathlib import Path
-from tempfile import TemporaryDirectory
+from tempfile import TemporaryDirectory, mkdtemp
 from typing import Mapping, Optional
 from urllib.error import HTTPError, URLError
 from urllib.parse import quote
@@ -393,32 +393,36 @@ def do_import(args):
     if parse_ref(apertis_tag):
         raise Abort(f"Apertis tag {apertis_tag} already exists, cannot continue")
 
-    with ensure_dir_or_none(args.cache_dir) or TemporaryDirectory() as downloaddir:
-        if args.import_local_dsc:
-            logging.info(f"Overlaying Apertis package version {version}")
-            downloaded = args.import_local_dsc.name
-        else:
-            logging.info("Fetching the package information")
+    downloaddir = (
+        ensure_dir_or_none(args.cache_dir)
+        if ensure_dir_or_none(args.cache_dir) is not None
+        else mkdtemp()
+    )
+    if args.import_local_dsc:
+        logging.info(f"Overlaying Apertis package version {version}")
+        downloaded = args.import_local_dsc.name
+    else:
+        logging.info("Fetching the package information")
 
-            cached_dsc = get_cached_dsc(package, version, args.cache_dir)
+        cached_dsc = get_cached_dsc(package, version, args.cache_dir)
 
-            try:
-                url = args.mirror.rstrip("/") + get_debian_dsc_path(package, version)
-            except KeyboardInterrupt:
-                raise
-            except (KeyError, HTTPError, URLError):
-                if not cached_dsc:
-                    raise Abort(
-                        f"Unable to download source package {package} version {version}"
-                    )
-                else:
-                    logging.warning(
-                        f"Unable to download source package {package} version {version}, but found cached .dsc"
-                    )
-                    url = cached_dsc
-
-            downloaded = fetch(package, version, url, downloaddir, cached_dsc)
-        import_debian_dsc(args, downloaded, upstream, downstream, version)
+        try:
+            url = args.mirror.rstrip("/") + get_debian_dsc_path(package, version)
+        except KeyboardInterrupt:
+            raise
+        except (KeyError, HTTPError, URLError):
+            if not cached_dsc:
+                raise Abort(
+                    f"Unable to download source package {package} version {version}"
+                )
+            else:
+                logging.warning(
+                    f"Unable to download source package {package} version {version}, but found cached .dsc"
+                )
+                url = cached_dsc
+
+        downloaded = fetch(package, version, url, downloaddir, cached_dsc)
+    import_debian_dsc(args, downloaded, upstream, downstream, version)
 
     if args.dsc:
         d = deb822.Dsc(args.dsc)