Skip to content

Commit

Permalink
Allow stubs to depend on numpy (#9499)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexWaygood authored Jan 12, 2023
1 parent b9eab63 commit 0b90344
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.10"
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: requirements-tests.txt
- run: pip install -r requirements-tests.txt
- run: pip install $(grep mypy== requirements-tests.txt) packaging pathspec termcolor tomli typing-extensions
- run: python ./tests/mypy_test.py --platform=${{ matrix.platform }} --python-version=${{ matrix.python-version }}

regression-tests:
Expand Down
22 changes: 19 additions & 3 deletions tests/mypy_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@
import tempfile
import time
from collections import defaultdict
from collections.abc import Sequence
from dataclasses import dataclass
from itertools import product
from pathlib import Path
from threading import Lock
from typing import TYPE_CHECKING, Any, NamedTuple
from typing import TYPE_CHECKING, Any, NamedTuple, Tuple

if TYPE_CHECKING:
from _typeshed import StrPath
Expand Down Expand Up @@ -53,7 +54,7 @@

ReturnCode: TypeAlias = int
VersionString: TypeAlias = Annotated[str, "Must be one of the entries in SUPPORTED_VERSIONS"]
VersionTuple: TypeAlias = tuple[int, int]
VersionTuple: TypeAlias = Tuple[int, int]
Platform: TypeAlias = Annotated[str, "Must be one of the entries in SUPPORTED_PLATFORMS"]


Expand All @@ -78,6 +79,21 @@ def valid_path(cmd_arg: str) -> Path:
parser = argparse.ArgumentParser(
description="Typecheck typeshed's stubs with mypy. Patterns are unanchored regexps on the full path."
)
if sys.version_info < (3, 8):

class ExtendAction(argparse.Action):
def __call__(
self,
parser: argparse.ArgumentParser,
namespace: argparse.Namespace,
values: Sequence[str],
option_string: object = None,
) -> None:
items = getattr(namespace, self.dest) or []
items.extend(values)
setattr(namespace, self.dest, items)

parser.register("action", "extend", ExtendAction)
parser.add_argument(
"filter",
type=valid_path,
Expand Down Expand Up @@ -324,7 +340,7 @@ def test_third_party_distribution(

mypypath = os.pathsep.join(str(Path("stubs", dist)) for dist in seen_dists)
if args.verbose:
print(colored(f"\n{mypypath=}", "blue"))
print(colored(f"\nMYPYPATH={mypypath}", "blue"))
code = run_mypy(
args,
configurations,
Expand Down
6 changes: 5 additions & 1 deletion tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import sys
import venv
from collections.abc import Iterable, Mapping
from functools import cache
from functools import lru_cache
from pathlib import Path
from typing import NamedTuple
from typing_extensions import Annotated
Expand All @@ -25,6 +25,10 @@ def colored(text: str, color: str | None = None, on_color: str | None = None, at
return text


# A backport of functools.cache for Python <3.9
# This module is imported by mypy_test.py, which needs to run on 3.7 in CI
cache = lru_cache(None)

# Used to install system-wide packages for different OS types:
METADATA_MAPPING = {"linux": "apt_dependencies", "darwin": "brew_dependencies", "win32": "choco_dependencies"}

Expand Down

0 comments on commit 0b90344

Please sign in to comment.