From 6201f6020dad25af6ff8b210dab0c5a50ad15d6d Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Thu, 11 Jul 2024 12:48:22 +0200 Subject: [PATCH 1/7] gh-358: Add mypy CI and config Estalish a minimal mypy config that ensures annotations are compatible with Python 3.8 (the oldest supported Python version). Add a forgiving CI job that does not affect the status of the GitHub workflow run. --- .github/workflows/pythonpackage.yml | 15 +++++++++++++++ pyproject.toml | 8 ++++++++ requirements-dev.txt | 1 + 3 files changed, 24 insertions(+) create mode 100644 requirements-dev.txt diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 427ad9c7..76cc9e8d 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -53,3 +53,18 @@ jobs: run: python3 -m pip install -r doc/requirements.txt -e . - name: Build docs run: make -C doc html + + mypy: + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.8" + cache: pip + cache-dependency-path: | + 'pyproject.toml' + 'requirements-dev.txt' + - run: pip install -r requirements-dev.txt + - run: mypy --config-file pyproject.toml . diff --git a/pyproject.toml b/pyproject.toml index a87ba589..e9c85993 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,3 +48,11 @@ testpaths = [ filterwarnings = [ "ignore::DeprecationWarning", ] + +[tool.mypy] +python_version = "3.8" +exclude = [ + "^examples*", + "^test*", + "^setup.py*", +] diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 00000000..ede5a914 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1 @@ +mypy~=1.10 From 88d176580348a887a1a90048b5a631960ca3d29b Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Thu, 11 Jul 2024 13:21:53 +0200 Subject: [PATCH 2/7] Also install project --- .github/workflows/pythonpackage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 76cc9e8d..2d3ad968 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -66,5 +66,5 @@ jobs: cache-dependency-path: | 'pyproject.toml' 'requirements-dev.txt' - - run: pip install -r requirements-dev.txt + - run: pip install -r requirements-dev.txt -e . - run: mypy --config-file pyproject.toml . From 4efb9d9992271f34f5b2cdc4ca430f84940f4d04 Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Thu, 11 Jul 2024 13:23:24 +0200 Subject: [PATCH 3/7] Don't have to run mypy on 3.8 in order to enforce 3.8 annotations --- .github/workflows/pythonpackage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 2d3ad968..25fa9dc3 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -61,7 +61,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: 3.12 cache: pip cache-dependency-path: | 'pyproject.toml' From 5b8d3e99ba55a1e76e32b4551128900aff59893f Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Tue, 15 Oct 2024 23:44:11 +0200 Subject: [PATCH 4/7] Add newline at EOF --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 0dd90105..23f3a7aa 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,3 +1,3 @@ mypy~=1.10 pytest~=8.3 -pytest-cov~=5.0 \ No newline at end of file +pytest-cov~=5.0 From b84ba2d22586edd4fe287d30b848376b2683e8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Colomb?= Date: Mon, 28 Apr 2025 23:33:11 +0200 Subject: [PATCH 5/7] Reorder to have continue-on-error honored correctly. Add a name to the job while we're at it. --- .github/workflows/pythonpackage.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 6f0a31a1..79e47c27 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -63,8 +63,9 @@ jobs: run: make -C doc html mypy: - continue-on-error: true + name: Run mypy static type checker (optional) runs-on: ubuntu-latest + continue-on-error: true steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 From 35f04a2be2d508eac203219f40ef053818e71112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Colomb?= Date: Mon, 28 Apr 2025 23:42:56 +0200 Subject: [PATCH 6/7] Try with returning true, avoiding commit to be marked with red X. --- .github/workflows/pythonpackage.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 79e47c27..5706873e 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -76,4 +76,5 @@ jobs: 'pyproject.toml' 'requirements-dev.txt' - run: pip install -r requirements-dev.txt -e . - - run: mypy --config-file pyproject.toml . + - name: Run mypy and report but do not fail + run: mypy --config-file pyproject.toml . || true From cc4dc96b20cd981f08986f8a94a6f34b772f99f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Colomb?= Date: Mon, 9 Jun 2025 11:11:22 +0200 Subject: [PATCH 7/7] Move mypy linter to a separate workflow, only for PRs. --- .github/workflows/pr-linters.yaml | 28 ++++++++++++++++++++++++++++ .github/workflows/pythonpackage.yml | 17 ----------------- 2 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/pr-linters.yaml diff --git a/.github/workflows/pr-linters.yaml b/.github/workflows/pr-linters.yaml new file mode 100644 index 00000000..62abef4f --- /dev/null +++ b/.github/workflows/pr-linters.yaml @@ -0,0 +1,28 @@ +name: Run PR linters + +on: + pull_request: + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + + mypy: + name: Run mypy static type checker (optional) + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.12 + cache: pip + cache-dependency-path: | + 'pyproject.toml' + 'requirements-dev.txt' + - run: pip install -r requirements-dev.txt -e . + - name: Run mypy and report + run: mypy --config-file pyproject.toml . diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 5706873e..71c11242 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -61,20 +61,3 @@ jobs: run: python3 -m pip install -r doc/requirements.txt -e . - name: Build docs run: make -C doc html - - mypy: - name: Run mypy static type checker (optional) - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.12 - cache: pip - cache-dependency-path: | - 'pyproject.toml' - 'requirements-dev.txt' - - run: pip install -r requirements-dev.txt -e . - - name: Run mypy and report but do not fail - run: mypy --config-file pyproject.toml . || true