From 282ed1ab627aa233460c64ca8de34c940648f3fe Mon Sep 17 00:00:00 2001 From: Tim Paine <3105306+timkpaine@users.noreply.github.com> Date: Thu, 8 Oct 2026 11:27:01 -0400 Subject: [PATCH 1/2] Run the type check in checks, lint docs/src with add_docs, omit integration tests by glob checks now runs check-types alongside check-dist in every python variant. With add_docs, lint-docs and fix-docs cover docs/src/ (the source directory the gitignore already assumes with docs/src/_build/). The coverage omit entry is a glob: a bare directory path matches no file, so the integration tests were never omitted. Signed-off-by: Tim Paine <3105306+timkpaine@users.noreply.github.com> --- actions-ext | 1 + automerge | 1 + copier-update | 1 + example-instances/python-template | 1 + example-instances/python-template-cpp | 1 + example-instances/python-template-cppjswasm | 1 + example-instances/python-template-js | 1 + example-instances/python-template-jupyter | 1 + example-instances/python-template-rust | 1 + example-instances/python-template-rustjswasm | 1 + github | 1 + infra | 1 + other/github | 1 + other/github-actions-ext | 1 + python/cpp/pyproject.toml.jinja | 3 ++- python/cppjswasm/pyproject.toml.jinja | 3 ++- python/cython/Makefile.jinja | 2 +- python/cython/pyproject.toml.jinja | 3 ++- python/js/pyproject.toml.jinja | 3 ++- python/jupyter/pyproject.toml.jinja | 3 ++- python/pure/pyproject.toml.jinja | 3 ++- python/rust/pyproject.toml.jinja | 3 ++- python/rustjswasm/pyproject.toml.jinja | 3 ++- 23 files changed, 31 insertions(+), 9 deletions(-) create mode 120000 actions-ext create mode 120000 automerge create mode 120000 copier-update create mode 120000 example-instances/python-template create mode 120000 example-instances/python-template-cpp create mode 120000 example-instances/python-template-cppjswasm create mode 120000 example-instances/python-template-js create mode 120000 example-instances/python-template-jupyter create mode 120000 example-instances/python-template-rust create mode 120000 example-instances/python-template-rustjswasm create mode 120000 github create mode 120000 infra create mode 120000 other/github create mode 120000 other/github-actions-ext diff --git a/actions-ext b/actions-ext new file mode 120000 index 0000000..1236c5b --- /dev/null +++ b/actions-ext @@ -0,0 +1 @@ +../../actions-ext \ No newline at end of file diff --git a/automerge b/automerge new file mode 120000 index 0000000..3341511 --- /dev/null +++ b/automerge @@ -0,0 +1 @@ +../../actions-ext/automerge \ No newline at end of file diff --git a/copier-update b/copier-update new file mode 120000 index 0000000..8f8b78c --- /dev/null +++ b/copier-update @@ -0,0 +1 @@ +../../actions-ext/copier-update/ \ No newline at end of file diff --git a/example-instances/python-template b/example-instances/python-template new file mode 120000 index 0000000..ab21140 --- /dev/null +++ b/example-instances/python-template @@ -0,0 +1 @@ +../../python-template \ No newline at end of file diff --git a/example-instances/python-template-cpp b/example-instances/python-template-cpp new file mode 120000 index 0000000..ab8ea29 --- /dev/null +++ b/example-instances/python-template-cpp @@ -0,0 +1 @@ +../../python-template-cpp \ No newline at end of file diff --git a/example-instances/python-template-cppjswasm b/example-instances/python-template-cppjswasm new file mode 120000 index 0000000..cb2ae01 --- /dev/null +++ b/example-instances/python-template-cppjswasm @@ -0,0 +1 @@ +../../python-template-cppjswasm \ No newline at end of file diff --git a/example-instances/python-template-js b/example-instances/python-template-js new file mode 120000 index 0000000..176ad8a --- /dev/null +++ b/example-instances/python-template-js @@ -0,0 +1 @@ +../../python-template-js \ No newline at end of file diff --git a/example-instances/python-template-jupyter b/example-instances/python-template-jupyter new file mode 120000 index 0000000..b56b26e --- /dev/null +++ b/example-instances/python-template-jupyter @@ -0,0 +1 @@ +../../python-template-jupyter \ No newline at end of file diff --git a/example-instances/python-template-rust b/example-instances/python-template-rust new file mode 120000 index 0000000..627b125 --- /dev/null +++ b/example-instances/python-template-rust @@ -0,0 +1 @@ +../../python-template-rust \ No newline at end of file diff --git a/example-instances/python-template-rustjswasm b/example-instances/python-template-rustjswasm new file mode 120000 index 0000000..fb0c216 --- /dev/null +++ b/example-instances/python-template-rustjswasm @@ -0,0 +1 @@ +../../python-template-rustjswasm \ No newline at end of file diff --git a/github b/github new file mode 120000 index 0000000..fe6b981 --- /dev/null +++ b/github @@ -0,0 +1 @@ +../github \ No newline at end of file diff --git a/infra b/infra new file mode 120000 index 0000000..093c817 --- /dev/null +++ b/infra @@ -0,0 +1 @@ +../../slop/infra \ No newline at end of file diff --git a/other/github b/other/github new file mode 120000 index 0000000..922dd40 --- /dev/null +++ b/other/github @@ -0,0 +1 @@ +../../github \ No newline at end of file diff --git a/other/github-actions-ext b/other/github-actions-ext new file mode 120000 index 0000000..b8b08ee --- /dev/null +++ b/other/github-actions-ext @@ -0,0 +1 @@ +../../../actions-ext/github/ \ No newline at end of file diff --git a/python/cpp/pyproject.toml.jinja b/python/cpp/pyproject.toml.jinja index 3826a53..6353914 100644 --- a/python/cpp/pyproject.toml.jinja +++ b/python/cpp/pyproject.toml.jinja @@ -110,7 +110,8 @@ test-requires = ["pytest"] [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] diff --git a/python/cppjswasm/pyproject.toml.jinja b/python/cppjswasm/pyproject.toml.jinja index 6425332..9f1a178 100644 --- a/python/cppjswasm/pyproject.toml.jinja +++ b/python/cppjswasm/pyproject.toml.jinja @@ -122,7 +122,8 @@ test-requires = ["pytest"] [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] diff --git a/python/cython/Makefile.jinja b/python/cython/Makefile.jinja index 1842e9e..c1b271a 100644 --- a/python/cython/Makefile.jinja +++ b/python/cython/Makefile.jinja @@ -40,7 +40,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check Python types (advisory) ty check {{ module }} -checks: check-dist ## run distribution checks +checks: check-dist check-types ## run distribution checks check: checks test: ## run Python tests diff --git a/python/cython/pyproject.toml.jinja b/python/cython/pyproject.toml.jinja index 9d6043a..efa48cc 100644 --- a/python/cython/pyproject.toml.jinja +++ b/python/cython/pyproject.toml.jinja @@ -87,7 +87,8 @@ replace = 'version = "{new_version}"' [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", "{{ module }}/_compiled.py", ] diff --git a/python/js/pyproject.toml.jinja b/python/js/pyproject.toml.jinja index c187e98..18da460 100644 --- a/python/js/pyproject.toml.jinja +++ b/python/js/pyproject.toml.jinja @@ -92,7 +92,8 @@ replace = '"version": "{new_version}"' [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] diff --git a/python/jupyter/pyproject.toml.jinja b/python/jupyter/pyproject.toml.jinja index 2545f30..5f83ec4 100644 --- a/python/jupyter/pyproject.toml.jinja +++ b/python/jupyter/pyproject.toml.jinja @@ -100,7 +100,8 @@ replace = '"version": "{new_version}"' [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] diff --git a/python/pure/pyproject.toml.jinja b/python/pure/pyproject.toml.jinja index 9c992d5..34e5b74 100644 --- a/python/pure/pyproject.toml.jinja +++ b/python/pure/pyproject.toml.jinja @@ -81,7 +81,8 @@ replace = 'version = "{new_version}"' [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] diff --git a/python/rust/pyproject.toml.jinja b/python/rust/pyproject.toml.jinja index 5a83144..5330edb 100644 --- a/python/rust/pyproject.toml.jinja +++ b/python/rust/pyproject.toml.jinja @@ -131,7 +131,8 @@ xbuild-tools = ["cargo", "rustc", "rustup"] [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] diff --git a/python/rustjswasm/pyproject.toml.jinja b/python/rustjswasm/pyproject.toml.jinja index 5413f5f..29dbe93 100644 --- a/python/rustjswasm/pyproject.toml.jinja +++ b/python/rustjswasm/pyproject.toml.jinja @@ -143,7 +143,8 @@ xbuild-tools = ["cargo", "rustc", "rustup"] [tool.coverage.run] branch = true omit = [ - "{{ module }}/tests/integration/", + # a glob: a bare directory path matches no file + "{{ module }}/tests/integration/*", ] [tool.coverage.report] From 3a706da1273779c2edee60c1565ddb8b56887126 Mon Sep 17 00:00:00 2001 From: Tim Paine <3105306+timkpaine@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:44:56 -0400 Subject: [PATCH 2/2] Run the type check in every variant and stub the compiled modules Signed-off-by: Tim Paine <3105306+timkpaine@users.noreply.github.com> --- python/cpp/Makefile.jinja | 2 +- python/cpp/{{module}}/extension.pyi | 1 + python/cppjswasm/Makefile.jinja | 2 +- python/cppjswasm/{{module}}/extension_cpp.pyi | 1 + python/cython/{{module}}/_native.pyi | 1 + python/js/Makefile.jinja | 2 +- python/jupyter/Makefile.jinja | 2 +- python/pure/Makefile.jinja | 2 +- python/rust/Makefile.jinja | 2 +- python/rustjswasm/Makefile.jinja | 2 +- 10 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 python/cpp/{{module}}/extension.pyi create mode 100644 python/cppjswasm/{{module}}/extension_cpp.pyi create mode 100644 python/cython/{{module}}/_native.pyi diff --git a/python/cpp/Makefile.jinja b/python/cpp/Makefile.jinja index b515de3..42df121 100644 --- a/python/cpp/Makefile.jinja +++ b/python/cpp/Makefile.jinja @@ -66,7 +66,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # alias check: checks diff --git a/python/cpp/{{module}}/extension.pyi b/python/cpp/{{module}}/extension.pyi new file mode 100644 index 0000000..bfb558d --- /dev/null +++ b/python/cpp/{{module}}/extension.pyi @@ -0,0 +1 @@ +def add(i: int, j: int) -> int: ... diff --git a/python/cppjswasm/Makefile.jinja b/python/cppjswasm/Makefile.jinja index e243c04..957d88c 100644 --- a/python/cppjswasm/Makefile.jinja +++ b/python/cppjswasm/Makefile.jinja @@ -97,7 +97,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # alias check: checks diff --git a/python/cppjswasm/{{module}}/extension_cpp.pyi b/python/cppjswasm/{{module}}/extension_cpp.pyi new file mode 100644 index 0000000..bfb558d --- /dev/null +++ b/python/cppjswasm/{{module}}/extension_cpp.pyi @@ -0,0 +1 @@ +def add(i: int, j: int) -> int: ... diff --git a/python/cython/{{module}}/_native.pyi b/python/cython/{{module}}/_native.pyi new file mode 100644 index 0000000..44df0f3 --- /dev/null +++ b/python/cython/{{module}}/_native.pyi @@ -0,0 +1 @@ +def add(left: int, right: int) -> int: ... diff --git a/python/js/Makefile.jinja b/python/js/Makefile.jinja index b478d93..0061891 100644 --- a/python/js/Makefile.jinja +++ b/python/js/Makefile.jinja @@ -79,7 +79,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # alias check: checks diff --git a/python/jupyter/Makefile.jinja b/python/jupyter/Makefile.jinja index ef081c7..6710fc9 100644 --- a/python/jupyter/Makefile.jinja +++ b/python/jupyter/Makefile.jinja @@ -81,7 +81,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # alias check: checks diff --git a/python/pure/Makefile.jinja b/python/pure/Makefile.jinja index 1708a80..8840883 100644 --- a/python/pure/Makefile.jinja +++ b/python/pure/Makefile.jinja @@ -52,7 +52,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # Alias check: checks diff --git a/python/rust/Makefile.jinja b/python/rust/Makefile.jinja index c791320..addd238 100644 --- a/python/rust/Makefile.jinja +++ b/python/rust/Makefile.jinja @@ -80,7 +80,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # alias check: checks diff --git a/python/rustjswasm/Makefile.jinja b/python/rustjswasm/Makefile.jinja index 88d51f3..11dd019 100644 --- a/python/rustjswasm/Makefile.jinja +++ b/python/rustjswasm/Makefile.jinja @@ -94,7 +94,7 @@ check-dist: ## check python sdist and wheel with check-dist check-types: ## check python types with ty ty check --python $$(which python) -checks: check-dist +checks: check-dist check-types # alias check: checks