From 70025c372346288675437fc0bd273db84cc0b3d5 Mon Sep 17 00:00:00 2001 From: Avasam Date: Wed, 4 Jan 2023 14:32:23 -0500 Subject: [PATCH] Support third-party stub external dependencies in pytype (#9449) Co-authored-by: Alex Waygood --- .github/workflows/tests.yml | 10 +++++++++- CONTRIBUTING.md | 4 +++- tests/README.md | 28 ++++++++++++++-------------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4f61b92e5..c36b24386 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -69,6 +69,14 @@ jobs: cache: pip cache-dependency-path: requirements-tests.txt - run: pip install -r requirements-tests.txt + - name: Install external dependencies for 3rd-party stubs + run: | + DEPENDENCIES=$(python tests/get_external_stub_requirements.py) + if [ -n "$DEPENDENCIES" ]; then + echo "Installing packages: $DEPENDENCIES" + pip install $DEPENDENCIES + fi + - run: pip freeze --all - run: ./tests/pytype_test.py --print-stderr mypy: @@ -117,7 +125,7 @@ jobs: python-version: "3.10" cache: pip cache-dependency-path: requirements-tests.txt - - name: Install 3rd-party dependencies for stubs packages + - name: Install external dependencies for 3rd-party stubs run: | pip install -r requirements-tests.txt DEPENDENCIES=$(python tests/get_external_stub_requirements.py) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 102199c8a..dfbcc30b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,9 +46,11 @@ virtual environment. If you're not familiar with what it is and how it works, please refer to this [documentation](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/). +Note that some tests require extra setup steps to install the required dependencies. + ### Linux/Mac OS -On Linux and Mac OS, you will be able to run the full test suite on Python 3.8, +On Linux and Mac OS, you will be able to run the full test suite on Python 3.9 or 3.10. To install the necessary requirements, run the following commands from a terminal window: diff --git a/tests/README.md b/tests/README.md index 43a4ce2f8..eb696b846 100644 --- a/tests/README.md +++ b/tests/README.md @@ -17,7 +17,20 @@ objects at runtime. in the `tests` and `scripts` directories. To run the tests, follow the [setup instructions](../CONTRIBUTING.md#preparing-the-environment) -in the `CONTRIBUTING.md` document. In particular, we recommend running with Python 3.9+. +in the `CONTRIBUTING.md` document. In particular, you have to run with Python 3.9+. + +In order for `pytype_test` and `pyright_test` to work correctly, some third-party stubs +may require extra dependencies external to typeshed to be installed in your virtual environment +prior to running the test. +You can list or install all of a stubs package's external dependencies using the following script: +```bash +(.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for +(.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for and +(.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for all third-party stubs in typeshed +# Install external dependencies for all third-party stubs in typeshed +(.venv3)$ DEPENDENCIES=$(python tests/get_external_stub_requirements.py) +(.venv3)$ if [ -n "$DEPENDENCIES" ]; then pip install $DEPENDENCIES; fi +``` ## Run all tests for a specific stub @@ -78,19 +91,6 @@ checks that would typically fail on incomplete stubs (such as `Unknown` checks). In typeshed's CI, pyright is run with these configuration settings on a subset of the stubs in typeshed (including the standard library). -In order for `pyright_test` to work correctly, some third-party stubs may require -dependencies external to typeshed to be installed in your virtual environment -prior to running the test. -You can list or install all of a stubs package's external dependencies using the following script: -```bash -(.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for -(.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for and -(.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for all third-party stubs in typeshed -# Install external dependencies for all third-party stubs in typeshed -(.venv3)$ DEPENDENCIES=$(python tests/get_external_stub_requirements.py) -(.venv3)$ if [ -n "$DEPENDENCIES" ]; then pip install $DEPENDENCIES; fi -``` - ## regr\_test.py This test runs mypy against the test cases for typeshed's stdlib and third-party