aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-03-12 14:54:24 +0800
committer苏向夜 <fu050409@163.com>2024-03-12 14:54:24 +0800
commit4446b5d888bbf8fc64c480668aa7d4cab0cfdb7b (patch)
treeb6e792d2201a31aa1fa61cc494386debb35d8ea1
parentd5f4bf23d07a6a06d3614c23b7ca9e85ed9f8285 (diff)
downloadipm-4446b5d888bbf8fc64c480668aa7d4cab0cfdb7b.tar.gz
ipm-4446b5d888bbf8fc64c480668aa7d4cab0cfdb7b.zip
fix(freeze): add support for old version of python
-rw-r--r--src/ipm/utils/_freeze.py28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/ipm/utils/_freeze.py b/src/ipm/utils/_freeze.py
index 8bd0982..c6eefef 100644
--- a/src/ipm/utils/_freeze.py
+++ b/src/ipm/utils/_freeze.py
@@ -1,9 +1,10 @@
from pathlib import Path
+from ipm.models.ipk import InfiniProject
+from ipm.typing import StrPath
+
+import sys
import tarfile
import shutil
-import os.path as path
-
-from ipm.models.ipk import InfiniProject
def create_tar_gz(source_folder: str, output_filepath: str) -> None:
@@ -16,26 +17,27 @@ def create_tar_gz(source_folder: str, output_filepath: str) -> None:
def extract_tar_gz(input_filename: str, output_folder: str) -> None:
with tarfile.open(input_filename, "r:gz") as tar:
- tar.extractall(output_folder, filter=tarfile.fully_trusted_filter)
+ if sys.version_info >= (3, 12):
+ tar.extractall(output_folder, filter=tarfile.fully_trusted_filter)
+ else:
+ tar.extractall(output_folder)
-def create_xml_file(meta_data: InfiniProject, output_folder: str | Path) -> None:
+def create_xml_file(meta_data: InfiniProject, output_folder: StrPath) -> None:
from collections import defaultdict
meta_data_dict = defaultdict(
lambda: "", meta_data._data.get("project") # type: ignore
)
- with open(
- path.join(output_folder, f"{meta_data.name}.xml"), mode="w", encoding="utf8"
- ) as xml_file:
- xml_file.write(
- """<package id="{name}"
+ Path(output_folder).joinpath(f"{meta_data.name}.xml").write_text(
+ """<package id="{name}"
name="{name}: {description}"
webpage="{webpage}"
author="{authors[0][name]}"
license="{license}"
unzip="{unzip}"/>""".format(
- **meta_data_dict
- )
- )
+ **meta_data_dict
+ ),
+ encoding="utf-8",
+ )