diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51220f18a..3ca654d12 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,13 +22,15 @@ repos: - id: isort - repo: https://github.com/asottile/pyupgrade - rev: "v2.34.0" + rev: "v2.37.1" hooks: - id: pyupgrade + name: pyupgrade args: ["--py310-plus"] + exclude: docs - repo: https://github.com/hadialqattan/pycln - rev: "v1.3.5" + rev: "v2.0.4" hooks: - id: pycln args: [--config=pyproject.toml] diff --git a/packages/micropip/src/micropip/package.py b/packages/micropip/src/micropip/package.py index 31008540c..d69e34af8 100644 --- a/packages/micropip/src/micropip/package.py +++ b/packages/micropip/src/micropip/package.py @@ -1,6 +1,7 @@ from collections import UserDict +from collections.abc import Iterable from dataclasses import astuple, dataclass -from typing import Any, Iterable +from typing import Any from packaging.utils import canonicalize_name diff --git a/packages/scikit-image/test_skimage.py b/packages/scikit-image/test_skimage.py index 714c6d59b..05c60b002 100644 --- a/packages/scikit-image/test_skimage.py +++ b/packages/scikit-image/test_skimage.py @@ -1,5 +1,6 @@ import os -from typing import Any, Callable +from collections.abc import Callable +from typing import Any import pytest from pyodide_test_runner import run_in_pyodide diff --git a/pyodide-build/pyodide_build/_f2c_fixes.py b/pyodide-build/pyodide_build/_f2c_fixes.py index d06782729..9553ad806 100644 --- a/pyodide-build/pyodide_build/_f2c_fixes.py +++ b/pyodide-build/pyodide_build/_f2c_fixes.py @@ -1,7 +1,7 @@ import re +from collections.abc import Iterable, Iterator from pathlib import Path from textwrap import dedent # for doctests -from typing import Iterable, Iterator def prepare_doctest(x: str) -> list[str]: diff --git a/pyodide-build/pyodide_build/buildall.py b/pyodide-build/pyodide_build/buildall.py index 60583af19..3cdb610c8 100755 --- a/pyodide-build/pyodide_build/buildall.py +++ b/pyodide-build/pyodide_build/buildall.py @@ -12,13 +12,14 @@ import os import shutil import subprocess import sys +from collections.abc import Iterable from functools import total_ordering from graphlib import TopologicalSorter from pathlib import Path from queue import PriorityQueue, Queue from threading import Lock, Thread from time import perf_counter, sleep -from typing import Any, Iterable +from typing import Any from . import common from .buildpkg import needs_rebuild diff --git a/pyodide-build/pyodide_build/buildpkg.py b/pyodide-build/pyodide_build/buildpkg.py index 9540477f9..504fb5eb2 100755 --- a/pyodide-build/pyodide_build/buildpkg.py +++ b/pyodide-build/pyodide_build/buildpkg.py @@ -15,12 +15,13 @@ import subprocess import sys import sysconfig import textwrap +from collections.abc import Generator, Iterator from contextlib import contextmanager from datetime import datetime from pathlib import Path from textwrap import dedent from types import TracebackType -from typing import Any, Generator, Iterator, NoReturn, TextIO +from typing import Any, NoReturn, TextIO from urllib import request from . import pywasmcross diff --git a/pyodide-build/pyodide_build/common.py b/pyodide-build/pyodide_build/common.py index 776bfe362..9ad476f24 100644 --- a/pyodide-build/pyodide_build/common.py +++ b/pyodide-build/pyodide_build/common.py @@ -3,8 +3,8 @@ import functools import os import subprocess import sys +from collections.abc import Generator, Iterable, Iterator, Mapping from pathlib import Path -from typing import Generator, Iterable, Iterator, Mapping import tomli from packaging.tags import Tag, compatible_tags, cpython_tags diff --git a/pyodide-build/pyodide_build/io.py b/pyodide-build/pyodide_build/io.py index 58549a8ab..fcf0e3ef3 100644 --- a/pyodide-build/pyodide_build/io.py +++ b/pyodide-build/pyodide_build/io.py @@ -1,5 +1,6 @@ +from collections.abc import Iterator from pathlib import Path -from typing import Any, Iterator +from typing import Any # TODO: support more complex types for validation diff --git a/pyodide-build/pyodide_build/pypabuild.py b/pyodide-build/pyodide_build/pypabuild.py index 542882d8a..98a0f75a5 100644 --- a/pyodide-build/pyodide_build/pypabuild.py +++ b/pyodide-build/pyodide_build/pypabuild.py @@ -2,9 +2,9 @@ import os import shutil import sys import traceback +from collections.abc import Mapping from itertools import chain from pathlib import Path -from typing import Mapping from build import BuildBackendException, ConfigSettingsType, ProjectBuilder from build.__main__ import ( diff --git a/pyodide-build/pyodide_build/pywasmcross.py b/pyodide-build/pyodide_build/pywasmcross.py index fd93c6a8d..92331c5b2 100755 --- a/pyodide-build/pyodide_build/pywasmcross.py +++ b/pyodide-build/pyodide_build/pywasmcross.py @@ -43,9 +43,10 @@ import re import shutil import subprocess from collections import namedtuple +from collections.abc import Iterable, Iterator, MutableMapping from contextlib import contextmanager from tempfile import TemporaryDirectory -from typing import Any, Iterable, Iterator, Literal, MutableMapping, NoReturn +from typing import Any, Literal, NoReturn from pyodide_build import common from pyodide_build._f2c_fixes import fix_f2c_input, fix_f2c_output, scipy_fixes diff --git a/pyodide-test-runner/pyodide_test_runner/decorator.py b/pyodide-test-runner/pyodide_test_runner/decorator.py index edfc441c3..fab18f4c1 100644 --- a/pyodide-test-runner/pyodide_test_runner/decorator.py +++ b/pyodide-test-runner/pyodide_test_runner/decorator.py @@ -2,8 +2,9 @@ import ast import pickle import sys from base64 import b64decode, b64encode +from collections.abc import Callable, Collection from copy import deepcopy -from typing import Any, Callable, Collection +from typing import Any import pytest diff --git a/src/py/_pyodide/_base.py b/src/py/_pyodide/_base.py index 88f148675..5178d2cd4 100644 --- a/src/py/_pyodide/_base.py +++ b/src/py/_pyodide/_base.py @@ -7,11 +7,12 @@ A library of helper utilities for connecting Python to the browser environment. import ast import builtins import tokenize +from collections.abc import Generator from copy import deepcopy from io import StringIO from textwrap import dedent from types import CodeType -from typing import Any, Generator, Literal +from typing import Any, Literal def should_quiet(source: str) -> bool: diff --git a/src/py/_pyodide/_core_docs.py b/src/py/_pyodide/_core_docs.py index f856ab6c3..041da4483 100644 --- a/src/py/_pyodide/_core_docs.py +++ b/src/py/_pyodide/_core_docs.py @@ -1,5 +1,6 @@ +from collections.abc import Callable, Iterable from io import IOBase -from typing import Any, Callable, Iterable +from typing import Any # All docstrings for public `core` APIs should be extracted from here. We use # the utilities in `docstring.py` and `docstring.c` to format them diff --git a/src/py/_pyodide/_importhook.py b/src/py/_pyodide/_importhook.py index b59d2223e..ad5ae4a4b 100644 --- a/src/py/_pyodide/_importhook.py +++ b/src/py/_pyodide/_importhook.py @@ -1,9 +1,10 @@ import sys +from collections.abc import Sequence from importlib.abc import Loader, MetaPathFinder from importlib.machinery import ModuleSpec from importlib.util import spec_from_loader from types import ModuleType -from typing import Any, Sequence +from typing import Any class JsFinder(MetaPathFinder): diff --git a/src/py/pyodide/_package_loader.py b/src/py/pyodide/_package_loader.py index e994f9b68..3811c71fa 100644 --- a/src/py/pyodide/_package_loader.py +++ b/src/py/pyodide/_package_loader.py @@ -4,11 +4,12 @@ import re import shutil import sysconfig import tarfile +from collections.abc import Iterable from importlib.machinery import EXTENSION_SUFFIXES from pathlib import Path from site import getsitepackages from tempfile import NamedTemporaryFile -from typing import IO, Any, Iterable, Literal +from typing import IO, Any, Literal from zipfile import ZipFile from ._core import IN_BROWSER, JsProxy, to_js diff --git a/src/py/pyodide/console.py b/src/py/pyodide/console.py index 3989299c1..2d33424f5 100644 --- a/src/py/pyodide/console.py +++ b/src/py/pyodide/console.py @@ -5,6 +5,7 @@ import sys import traceback from asyncio import Future, ensure_future from codeop import CommandCompiler, Compile, _features # type: ignore[attr-defined] +from collections.abc import Callable, Generator from contextlib import ( ExitStack, _RedirectStream, @@ -15,7 +16,7 @@ from contextlib import ( from platform import python_build, python_version from tokenize import TokenError from types import TracebackType -from typing import Any, Callable, Generator, Literal +from typing import Any, Literal from _pyodide._base import CodeRunner, ReturnMode, should_quiet diff --git a/src/py/pyodide/ffi/wrappers.py b/src/py/pyodide/ffi/wrappers.py index 82d5563c1..5732650c1 100644 --- a/src/py/pyodide/ffi/wrappers.py +++ b/src/py/pyodide/ffi/wrappers.py @@ -1,4 +1,5 @@ -from typing import Any, Callable +from collections.abc import Callable +from typing import Any from .._core import IN_BROWSER, JsProxy, create_once_callable, create_proxy diff --git a/src/py/pyodide/webloop.py b/src/py/pyodide/webloop.py index a20c588a9..26be50a76 100644 --- a/src/py/pyodide/webloop.py +++ b/src/py/pyodide/webloop.py @@ -3,7 +3,8 @@ import contextvars import sys import time import traceback -from typing import Any, Callable +from collections.abc import Callable +from typing import Any from ._core import IN_BROWSER, create_once_callable diff --git a/src/tests/test_pyodide.py b/src/tests/test_pyodide.py index 4c97d9586..ef0268065 100644 --- a/src/tests/test_pyodide.py +++ b/src/tests/test_pyodide.py @@ -1,6 +1,7 @@ import re +from collections.abc import Sequence from textwrap import dedent -from typing import Any, Sequence +from typing import Any import pytest from pyodide_test_runner import run_in_pyodide diff --git a/tools/bump_version.py b/tools/bump_version.py index a5531dc02..31ffd1cf0 100755 --- a/tools/bump_version.py +++ b/tools/bump_version.py @@ -8,7 +8,7 @@ import pathlib import re from ast import Str from collections import namedtuple -from typing import Callable +from collections.abc import Callable CORE_VERSION_REGEX = r"(?P\d+)\.(?P\d+)\.(?P\d+)"