Skip to content

Commit

Permalink
Resolve deprecated warnings (#3)
Browse files Browse the repository at this point in the history
Partially re-applies pyodide/pyodide#4807
  • Loading branch information
ryanking13 authored Jun 17, 2024
1 parent 2243e60 commit 4a3accd
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 19 deletions.
4 changes: 2 additions & 2 deletions pyodide_build/buildall.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
"""

import dataclasses
import datetime
import shutil
import subprocess
import sys
from collections import defaultdict
from collections.abc import Iterable, Iterator
from contextlib import contextmanager
from datetime import datetime
from functools import total_ordering
from graphlib import TopologicalSorter
from pathlib import Path
Expand Down Expand Up @@ -188,7 +188,7 @@ def __init__(
self.finished = False

def finish(self, success: bool, elapsed_time: float) -> None:
time = datetime.utcfromtimestamp(elapsed_time)
time = datetime.datetime.fromtimestamp(elapsed_time, tz=datetime.UTC)
if time.minute == 0:
minutes = ""
else:
Expand Down
8 changes: 7 additions & 1 deletion pyodide_build/buildpkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import shutil
import subprocess
import sys
import warnings
from collections.abc import Iterator
from datetime import datetime
from pathlib import Path
Expand Down Expand Up @@ -348,7 +349,12 @@ def _download_and_extract(self) -> None:
shutil.copy(tarballpath, self.src_dist_dir)
return

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

extract_dir_name = self.source_metadata.extract_dir
if extract_dir_name is None:
Expand Down
6 changes: 2 additions & 4 deletions pyodide_build/tests/test_bash_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,5 @@ def test_subprocess_with_shared_env_logging(capfd, tmp_path):
"Running test2 script in",
str(dir),
]
assert [l.strip() for l in cap.err.splitlines()] == [
"ERROR: test2 script failed",
"exit 7",
]

assert "ERROR: test2 script failed" in cap.err
5 changes: 0 additions & 5 deletions pyodide_build/tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,6 @@
skeleton,
)

only_node = pytest.mark.xfail_browsers(
chrome="node only", firefox="node only", safari="node only"
)


runner = CliRunner()


Expand Down
13 changes: 6 additions & 7 deletions pyodide_build/xbuildenv_releases.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import os
from functools import cache

import pydantic
from packaging.version import Version
from pydantic import BaseModel, ConfigDict

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

@property
def python_version_tuple(self) -> tuple[int, int, int]:
Expand Down Expand Up @@ -95,7 +92,7 @@ class CrossBuildEnvMetaSpec(BaseModel):

releases: dict[str, CrossBuildEnvReleaseSpec]
model_config = ConfigDict(
extra=pydantic.Extra.forbid,
extra="forbid",
title="CrossBuildEnvMetaSpec",
)

Expand Down Expand Up @@ -224,6 +221,8 @@ def load_cross_build_env_metadata(url_or_filename: str) -> CrossBuildEnvMetaSpec
response = requests.get(url_or_filename)
response.raise_for_status()
data = response.json()
return CrossBuildEnvMetaSpec.parse_obj(data)
return CrossBuildEnvMetaSpec.model_validate(data)

return CrossBuildEnvMetaSpec.parse_file(url_or_filename)
with open(url_or_filename) as f:
data = f.read()
return CrossBuildEnvMetaSpec.model_validate_json(data)

0 comments on commit 4a3accd

Please sign in to comment.