mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 13:04:46 +08:00
Install pyright from PyPI (#11575)
This commit is contained in:
13
.github/renovate.json
vendored
13
.github/renovate.json
vendored
@@ -7,17 +7,6 @@
|
||||
"pre-commit": {
|
||||
"enabled": true
|
||||
},
|
||||
"customManagers": [
|
||||
{
|
||||
"customType": "regex",
|
||||
"fileMatch": ["^pyproject.toml$"],
|
||||
"matchStrings": [
|
||||
"\\n\\[tool\\.typeshed\\]\\npyright_version\\s*=\\s*(\"|')(?<currentValue>[\\d.]*?)(\"|')\\s*?\\n"
|
||||
],
|
||||
"depNameTemplate": "pyright",
|
||||
"datasourceTemplate": "npm"
|
||||
}
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"groupName": "GitHub Actions",
|
||||
@@ -36,7 +25,7 @@
|
||||
},
|
||||
{
|
||||
"groupName": "pytype and pyright",
|
||||
"matchManagers": ["pip_requirements", "regex"],
|
||||
"matchManagers": ["pip_requirements"],
|
||||
"matchPackageNames": ["pytype", "pyright"],
|
||||
"description": "Daily update of pyright and pytype",
|
||||
"separateMajorMinor": "false",
|
||||
|
||||
10
.github/workflows/meta_tests.yml
vendored
10
.github/workflows/meta_tests.yml
vendored
@@ -57,15 +57,15 @@ jobs:
|
||||
- run: curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
- run: uv pip install -r requirements-tests.txt --system
|
||||
- name: Get pyright version
|
||||
uses: SebRollen/toml-action@v1.0.2
|
||||
id: pyright_version
|
||||
with:
|
||||
file: "pyproject.toml"
|
||||
field: "tool.typeshed.pyright_version"
|
||||
run: |
|
||||
PYRIGHT_VERSION=$(grep pyright== requirements-tests.txt | cut -d "#" -f 1 | cut -d \; -f 1 | cut -d = -f 3)
|
||||
echo pyright version: "${PYRIGHT_VERSION}"
|
||||
echo PYRIGHT_VERSION="${PYRIGHT_VERSION}" >> "${GITHUB_OUTPUT}"
|
||||
- name: Run pyright on typeshed
|
||||
uses: jakebailey/pyright-action@v2
|
||||
with:
|
||||
version: ${{ steps.pyright_version.outputs.value }}
|
||||
version: ${{ steps.pyright_version.outputs.PYRIGHT_VERSION }}
|
||||
python-platform: ${{ matrix.python-platform }}
|
||||
python-version: "3.9" # The Python version to test against.
|
||||
project: ./pyrightconfig.scripts_and_tests.json
|
||||
|
||||
14
.github/workflows/tests.yml
vendored
14
.github/workflows/tests.yml
vendored
@@ -130,22 +130,22 @@ jobs:
|
||||
- name: List 3rd-party stub dependencies installed
|
||||
run: uv pip freeze
|
||||
- name: Get pyright version
|
||||
uses: SebRollen/toml-action@v1.0.2
|
||||
id: pyright_version
|
||||
with:
|
||||
file: "pyproject.toml"
|
||||
field: "tool.typeshed.pyright_version"
|
||||
run: |
|
||||
PYRIGHT_VERSION=$(grep pyright== requirements-tests.txt | cut -d "#" -f 1 | cut -d \; -f 1 | cut -d = -f 3)
|
||||
echo pyright version: "${PYRIGHT_VERSION}"
|
||||
echo PYRIGHT_VERSION="${PYRIGHT_VERSION}" >> "${GITHUB_OUTPUT}"
|
||||
- name: Run pyright with basic settings on all the stubs
|
||||
uses: jakebailey/pyright-action@v2
|
||||
with:
|
||||
version: ${{ steps.pyright_version.outputs.value }}
|
||||
version: ${{ steps.pyright_version.outputs.PYRIGHT_VERSION }}
|
||||
python-platform: ${{ matrix.python-platform }}
|
||||
python-version: ${{ matrix.python-version }}
|
||||
annotate: ${{ matrix.python-version == '3.11' && matrix.python-platform == 'Linux' }} # Having each job create the same comment is too noisy.
|
||||
- name: Run pyright with stricter settings on some of the stubs
|
||||
uses: jakebailey/pyright-action@v2
|
||||
with:
|
||||
version: ${{ steps.pyright_version.outputs.value }}
|
||||
version: ${{ steps.pyright_version.outputs.PYRIGHT_VERSION }}
|
||||
python-platform: ${{ matrix.python-platform }}
|
||||
python-version: ${{ matrix.python-version }}
|
||||
annotate: ${{ matrix.python-version == '3.11' && matrix.python-platform == 'Linux' }} # Having each job create the same comment is too noisy.
|
||||
@@ -153,7 +153,7 @@ jobs:
|
||||
- name: Run pyright on the test cases
|
||||
uses: jakebailey/pyright-action@v2
|
||||
with:
|
||||
version: ${{ steps.pyright_version.outputs.value }}
|
||||
version: ${{ steps.pyright_version.outputs.PYRIGHT_VERSION }}
|
||||
python-platform: ${{ matrix.python-platform }}
|
||||
python-version: ${{ matrix.python-version }}
|
||||
annotate: ${{ matrix.python-version == '3.11' && matrix.python-platform == 'Linux' }} # Having each job create the same comment is too noisy.
|
||||
|
||||
@@ -149,5 +149,7 @@ extra-standard-library = [
|
||||
known-first-party = ["parse_metadata", "utils"]
|
||||
|
||||
[tool.typeshed]
|
||||
# TODO: Remove once stub_uploader uses requirements.txt to determine
|
||||
# the version of pyright.
|
||||
pyright_version = "1.1.354"
|
||||
oldest_supported_python = "3.8"
|
||||
|
||||
@@ -7,6 +7,7 @@ flake8-noqa==1.4.0 # must match .pre-commit-config.yaml
|
||||
flake8-pyi==24.3.0 # must match .pre-commit-config.yaml
|
||||
mypy==1.9.0
|
||||
pre-commit-hooks==4.5.0 # must match .pre-commit-config.yaml
|
||||
pyright==1.1.354
|
||||
pytype==2024.3.11; platform_system != "Windows" and python_version < "3.12"
|
||||
ruff==0.3.0 # must match .pre-commit-config.yaml
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ extension_descriptions = {".pyi": "stub", ".py": ".py"}
|
||||
|
||||
# These type checkers and linters must have exact versions in the requirements file to ensure
|
||||
# consistent CI runs.
|
||||
linters = {"black", "flake8", "flake8-noqa", "flake8-pyi", "ruff", "mypy", "pytype"}
|
||||
linters = {"black", "flake8", "flake8-noqa", "flake8-pyi", "mypy", "pyright", "pytype", "ruff"}
|
||||
|
||||
|
||||
def assert_consistent_filetypes(
|
||||
|
||||
@@ -6,7 +6,7 @@ import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import tomli
|
||||
from utils import parse_requirements, print_command
|
||||
|
||||
_WELL_KNOWN_FILE = Path("tests", "pyright_test.py")
|
||||
|
||||
@@ -29,12 +29,16 @@ def main() -> None:
|
||||
print("error running npx; is Node.js installed?", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
with open("pyproject.toml", "rb") as config:
|
||||
pyright_version: str = tomli.load(config)["tool"]["typeshed"]["pyright_version"]
|
||||
req = parse_requirements()["pyright"]
|
||||
spec = str(req.specifier)
|
||||
pyright_version = spec[2:]
|
||||
|
||||
# TODO: We're currently using npx to run pyright, instead of calling the
|
||||
# version installed into the virtual environment, due to failures on some
|
||||
# platforms. https://github.com/python/typeshed/issues/11614
|
||||
os.environ["PYRIGHT_PYTHON_FORCE_VERSION"] = pyright_version
|
||||
command = [npx, f"pyright@{pyright_version}"] + sys.argv[1:]
|
||||
print("Running:", " ".join(command))
|
||||
print_command(command)
|
||||
|
||||
ret = subprocess.run(command).returncode
|
||||
sys.exit(ret)
|
||||
|
||||
@@ -5,7 +5,7 @@ from __future__ import annotations
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from collections.abc import Mapping
|
||||
from collections.abc import Iterable, Mapping
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from typing import Any, Final, NamedTuple
|
||||
@@ -38,6 +38,12 @@ def strip_comments(text: str) -> str:
|
||||
# ====================================================================
|
||||
|
||||
|
||||
def print_command(cmd: str | Iterable[str]) -> None:
|
||||
if not isinstance(cmd, str):
|
||||
cmd = " ".join(cmd)
|
||||
print(colored(f"Running: {cmd}", "blue"))
|
||||
|
||||
|
||||
def print_error(error: str, end: str = "\n", fix_path: tuple[str, str] = ("", "")) -> None:
|
||||
error_split = error.split("\n")
|
||||
old, new = fix_path
|
||||
|
||||
Reference in New Issue
Block a user