Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install pyright from PyPI #11575

Merged
merged 21 commits into from
Mar 16, 2024
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/meta_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]
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
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,30 +128,30 @@ jobs:
- name: List 3rd-party stub dependencies installed
run: uv pip freeze
- name: Get pyright version
uses: SebRollen/[email protected]
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.
project: ./pyrightconfig.stricter.json
- 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.
Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
1 change: 1 addition & 0 deletions requirements-tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
11 changes: 7 additions & 4 deletions tests/pyright_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import sys
from pathlib import Path

import tomli
from utils import parse_requirements, print_command

_WELL_KNOWN_FILE = Path("tests", "pyright_test.py")

Expand All @@ -29,12 +29,15 @@ 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"]
assert len(req.specifier) == 1
spec = str(req.specifier)
assert spec.startswith("=="), f"pyright version must be pinned in requirements-tests.txt: {req}"
AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
pyright_version = spec[2:]

os.environ["PYRIGHT_PYTHON_FORCE_VERSION"] = pyright_version
Avasam marked this conversation as resolved.
Show resolved Hide resolved
command = [npx, f"pyright@{pyright_version}"] + sys.argv[1:]
print("Running:", " ".join(command))
print_command(command)

ret = subprocess.run(command).returncode
sys.exit(ret)
Expand Down
8 changes: 7 additions & 1 deletion tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
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
Expand Down Expand Up @@ -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
Expand Down
Loading