Skip to content

Commit 4a3accd

Browse files
authored
Resolve deprecated warnings (#3)
Partially re-applies pyodide/pyodide#4807
1 parent 2243e60 commit 4a3accd

File tree

5 files changed

+17
-19
lines changed

5 files changed

+17
-19
lines changed

pyodide_build/buildall.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
"""
66

77
import dataclasses
8+
import datetime
89
import shutil
910
import subprocess
1011
import sys
1112
from collections import defaultdict
1213
from collections.abc import Iterable, Iterator
1314
from contextlib import contextmanager
14-
from datetime import datetime
1515
from functools import total_ordering
1616
from graphlib import TopologicalSorter
1717
from pathlib import Path
@@ -188,7 +188,7 @@ def __init__(
188188
self.finished = False
189189

190190
def finish(self, success: bool, elapsed_time: float) -> None:
191-
time = datetime.utcfromtimestamp(elapsed_time)
191+
time = datetime.datetime.fromtimestamp(elapsed_time, tz=datetime.UTC)
192192
if time.minute == 0:
193193
minutes = ""
194194
else:

pyodide_build/buildpkg.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import shutil
1212
import subprocess
1313
import sys
14+
import warnings
1415
from collections.abc import Iterator
1516
from datetime import datetime
1617
from pathlib import Path
@@ -348,7 +349,12 @@ def _download_and_extract(self) -> None:
348349
shutil.copy(tarballpath, self.src_dist_dir)
349350
return
350351

351-
shutil.unpack_archive(tarballpath, self.build_dir)
352+
with warnings.catch_warnings():
353+
# Python 3.12-3.13 emits a DeprecationWarning when using shutil.unpack_archive without a filter,
354+
# but filter doesn't work well for zip files, so we suppress the warning until we find a better solution.
355+
# https://github.com/python/cpython/issues/112760
356+
warnings.simplefilter("ignore")
357+
shutil.unpack_archive(tarballpath, self.build_dir)
352358

353359
extract_dir_name = self.source_metadata.extract_dir
354360
if extract_dir_name is None:

pyodide_build/tests/test_bash_runner.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,5 @@ def test_subprocess_with_shared_env_logging(capfd, tmp_path):
7070
"Running test2 script in",
7171
str(dir),
7272
]
73-
assert [l.strip() for l in cap.err.splitlines()] == [
74-
"ERROR: test2 script failed",
75-
"exit 7",
76-
]
73+
74+
assert "ERROR: test2 script failed" in cap.err

pyodide_build/tests/test_cli.py

-5
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@
1818
skeleton,
1919
)
2020

21-
only_node = pytest.mark.xfail_browsers(
22-
chrome="node only", firefox="node only", safari="node only"
23-
)
24-
25-
2621
runner = CliRunner()
2722

2823

pyodide_build/xbuildenv_releases.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import os
22
from functools import cache
33

4-
import pydantic
54
from packaging.version import Version
65
from pydantic import BaseModel, ConfigDict
76

@@ -23,9 +22,7 @@ class CrossBuildEnvReleaseSpec(BaseModel):
2322
# Minimum and maximum pyodide-build versions that is compatible with this release
2423
min_pyodide_build_version: str | None = None
2524
max_pyodide_build_version: str | None = None
26-
model_config = ConfigDict(
27-
extra=pydantic.Extra.forbid, title="CrossBuildEnvReleasesSpec"
28-
)
25+
model_config = ConfigDict(extra="forbid", title="CrossBuildEnvReleasesSpec")
2926

3027
@property
3128
def python_version_tuple(self) -> tuple[int, int, int]:
@@ -95,7 +92,7 @@ class CrossBuildEnvMetaSpec(BaseModel):
9592

9693
releases: dict[str, CrossBuildEnvReleaseSpec]
9794
model_config = ConfigDict(
98-
extra=pydantic.Extra.forbid,
95+
extra="forbid",
9996
title="CrossBuildEnvMetaSpec",
10097
)
10198

@@ -224,6 +221,8 @@ def load_cross_build_env_metadata(url_or_filename: str) -> CrossBuildEnvMetaSpec
224221
response = requests.get(url_or_filename)
225222
response.raise_for_status()
226223
data = response.json()
227-
return CrossBuildEnvMetaSpec.parse_obj(data)
224+
return CrossBuildEnvMetaSpec.model_validate(data)
228225

229-
return CrossBuildEnvMetaSpec.parse_file(url_or_filename)
226+
with open(url_or_filename) as f:
227+
data = f.read()
228+
return CrossBuildEnvMetaSpec.model_validate_json(data)

0 commit comments

Comments
 (0)