From a15583ec9e09fd1efa90f3f39d199c4a8f96747a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 23:02:21 +0000 Subject: [PATCH 1/5] [CHORE](deps)(deps): bump the python-dependencies group with 2 updates Bumps the python-dependencies group with 2 updates: [ruff](https://github.com/astral-sh/ruff) and [click](https://github.com/pallets/click). Updates `ruff` from 0.16.3 to 0.16.4 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.16.3...0.16.4) Updates `click` from 8.4.2 to 8.5.0 - [Release notes](https://github.com/pallets/click/releases) - [Changelog](https://github.com/pallets/click/blob/main/CHANGES.md) - [Commits](https://github.com/pallets/click/compare/8.4.2...8.5.0) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.16.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: python-dependencies - dependency-name: click dependency-version: 8.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: python-dependencies ... Signed-off-by: dependabot[bot] --- uv.lock | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/uv.lock b/uv.lock index 8709ae822..c457a883d 100644 --- a/uv.lock +++ b/uv.lock @@ -201,14 +201,11 @@ wheels = [ [[package]] name = "click" -version = "8.4.2" +version = "8.5.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000, upload-time = "2026-06-24T17:45:15.148Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/0e/7fa0ef50764b67090eca4114772a2abf8b6148198475e54c660b97caeee6/click-8.5.0.tar.gz", hash = "sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34", size = 382235, upload-time = "2026-08-26T13:33:14.56Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 119243, upload-time = "2026-06-24T17:45:13.73Z" }, + { url = "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl", hash = "sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360", size = 125251, upload-time = "2026-08-26T13:33:12.928Z" }, ] [[package]] @@ -363,7 +360,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -1611,27 +1608,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.16.3" +version = "0.16.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/b3/3213589383f8f1b3938781bd1278713f6d18621a14992b3e81fefb8a5ef9/ruff-0.16.3.tar.gz", hash = "sha256:e76d33a347661a84b5be6d043d0347fdc745dfdcf825a8f4fed64b5e26eebdf2", size = 4891904, upload-time = "2026-08-13T15:17:13.381Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/8f/d8074b1f25e003164087a8bfe79a0f1a3945135764dbb6aaab04103dcaf9/ruff-0.16.4.tar.gz", hash = "sha256:13171aa9d9af2240ee3504e639de73122c67e74036de5ba2e1d01422cd17e3dc", size = 4899731, upload-time = "2026-08-20T17:43:59.196Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/96/493770daebd68c0a67f1549fdf519f53be51fc435186c0585bcc272fd76c/ruff-0.16.3-py3-none-linux_armv6l.whl", hash = "sha256:0c5710e247a58a4521e66e124ba9a74655b414f61ba3a2e9e3811e11098f48f7", size = 10902799, upload-time = "2026-08-13T15:16:27.382Z" }, - { url = "https://files.pythonhosted.org/packages/5e/e6/2becf3942fddc29a29b8df47691d456fb1085391a694f74d84513251418c/ruff-0.16.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:fe155130631a2471fd2e14a7a664a4dfbd7194b8229c3d7b2a40b21178639081", size = 11135539, upload-time = "2026-08-13T15:16:30.87Z" }, - { url = "https://files.pythonhosted.org/packages/3e/1e/4b8b72f0d006dbf19326aa99f9ca0ee2ff374187c4d301cf529a51aa06fe/ruff-0.16.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e2ed719e14aa64d895c2ee922594a90a43c861a93f0575a95ff8c47cdbd13eb9", size = 10475095, upload-time = "2026-08-13T15:16:33.259Z" }, - { url = "https://files.pythonhosted.org/packages/92/32/2201fa49ba1f6c101ee321e83f051ac7a4b8d07b0ef6b4d3f2772b302275/ruff-0.16.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e0b1da805eb043654645d74d5de1e5ce2edc686e40790d2b86f56d71cc06a84", size = 10668771, upload-time = "2026-08-13T15:16:35.65Z" }, - { url = "https://files.pythonhosted.org/packages/c3/66/4afc5c8363bd04d45effce1b7c8713ca037d7a6740b7451a2403a6e3a972/ruff-0.16.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a37bdea0bbe21780f590bf437d6412c8c4e1b6cd010f91a65c2c40c5e5f5f870", size = 10699568, upload-time = "2026-08-13T15:16:38.195Z" }, - { url = "https://files.pythonhosted.org/packages/53/fd/c67d246bf36bf1698551c56de39e95cd07f70e64433e0098e6267d77061b/ruff-0.16.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09571e6d1288ed9be475207a3ac04ada404f1cd898104be0f6ab8d7df438575b", size = 11499365, upload-time = "2026-08-13T15:16:40.623Z" }, - { url = "https://files.pythonhosted.org/packages/67/0b/00ecbceb99a263af7b12f6f05ac3c92bc47b905e91adc3f207a836e3bc01/ruff-0.16.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c18c5a101eb540010638cc1ff3c84944d3adb3df62b8d98ca8f22ba484d3413", size = 12311728, upload-time = "2026-08-13T15:16:43.564Z" }, - { url = "https://files.pythonhosted.org/packages/54/b2/b7b3bb54f4d3f7db504e476ad4ab8de530dceebe2c061384b2757ee419e8/ruff-0.16.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8457c44f15033c85ddbb77b15d451df9e24e4bd03b628396dd3610cedc3b8f82", size = 11699896, upload-time = "2026-08-13T15:16:46.209Z" }, - { url = "https://files.pythonhosted.org/packages/c7/30/4c468429ac195addc5ee1b717b6ab1b66632786737ca3b2ed3443fb0c26a/ruff-0.16.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:294b95c4ae0cda9388525c2047778aa758d6b8d4bb876fd4e9eaa3ebc92343eb", size = 11058736, upload-time = "2026-08-13T15:16:48.823Z" }, - { url = "https://files.pythonhosted.org/packages/43/67/7a113cdaddf24b64d7f75b1242a99d04c82fcef4f6921fdbb832beaffb5f/ruff-0.16.3-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:3d0c7c40c87c2a820509c31ba007968da6e1306468c067b2d82fbfdbcd0e8474", size = 11586911, upload-time = "2026-08-13T15:16:51.913Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c1/2e66f24c0f3ead25a5e660111778685e505e5da353c82802bf49f0cbe7b9/ruff-0.16.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:9f738c0fdfa8eed0b2ce7fb27ee7258208a92a68d7949e62aa15164bc7b389da", size = 10954265, upload-time = "2026-08-13T15:16:54.763Z" }, - { url = "https://files.pythonhosted.org/packages/c2/ba/4cee23bf52cba9a058d3726de623624daf50ef9638868edd86f4126157f6/ruff-0.16.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fb785f0be25abe69d320415cd4f833b59e17ba7613d9ba6a958023b6bceb0a50", size = 10709886, upload-time = "2026-08-13T15:16:57.339Z" }, - { url = "https://files.pythonhosted.org/packages/82/df/7da7194fa5d9dc0a285f7e6fa5a4722e7c63faac0b45b614ded9314363a1/ruff-0.16.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c5536e3acfbf9563085aa2be7b13c629c3077e902afc5b941ac44024dbb9f506", size = 11210392, upload-time = "2026-08-13T15:17:00.171Z" }, - { url = "https://files.pythonhosted.org/packages/35/85/7795f6e817af050e7517bf3e7aa9b061cce70ef33d280aad902c956c1ecf/ruff-0.16.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a2d85c02f9b8e165d85e6779184d38c4132de12603dab59c51c28e22584f9e4d", size = 11626910, upload-time = "2026-08-13T15:17:03.299Z" }, - { url = "https://files.pythonhosted.org/packages/78/9b/475b927cf27a5cbbda3c7bafb69ed6ff77e1d7923d5d85f17c2749d7ae32/ruff-0.16.3-py3-none-win32.whl", hash = "sha256:388cdf2166642bd9b13d52b5932d3170f34f8abed7e8d9a855f1d84b83645a0a", size = 10931415, upload-time = "2026-08-13T15:17:05.726Z" }, - { url = "https://files.pythonhosted.org/packages/b2/99/e2a2bfc4fbf0a1e8a916bc9ebe6fe6c58cc34c28e0ffc6ce281d572d1c2e/ruff-0.16.3-py3-none-win_amd64.whl", hash = "sha256:e80a7d69ca2a6d1c4d352ec91458cdca6e56c83cdbcabd93e4abe1e53591d948", size = 11445993, upload-time = "2026-08-13T15:17:08.353Z" }, - { url = "https://files.pythonhosted.org/packages/69/3e/4132e539aed78c148854d4997a2685b0ed4dc4e87110b59ce528564e184e/ruff-0.16.3-py3-none-win_arm64.whl", hash = "sha256:b8ca152da82c1acc1fa8d5874b15951935f0eef46f10e6954c83859011b6178a", size = 11399302, upload-time = "2026-08-13T15:17:10.908Z" }, + { url = "https://files.pythonhosted.org/packages/ff/80/779895ef584e089d22f2c6df0d0e99a65ec2df0805f1fffd439415b8c1f0/ruff-0.16.4-py3-none-linux_armv6l.whl", hash = "sha256:df4075f71ddac40b9934af60c3ec8a53047dd5a5fdc43224e6e4e8e9a27cb6f7", size = 10006909, upload-time = "2026-08-20T17:43:16.888Z" }, + { url = "https://files.pythonhosted.org/packages/a9/e6/f553199b5e8927a05cb5c422d921fd0656b29ab976e91c44802107c6b0da/ruff-0.16.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0c95538517af68004306b0fb3214ff2f2af67a65092aee77cd9eb86db6656604", size = 10240201, upload-time = "2026-08-20T17:43:19.337Z" }, + { url = "https://files.pythonhosted.org/packages/1c/70/4a6dc4bb34da4dee35e30f09bbd1bfbdd26f33b62fb9b8df31f08a199cd2/ruff-0.16.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:963f83df8e69e575b64d67dd447ebbc917db41a14bf38d4593a4183e7aaa8255", size = 9835122, upload-time = "2026-08-20T17:43:21.708Z" }, + { url = "https://files.pythonhosted.org/packages/24/12/c6e22d686372c15bcb7af99831f1a1be96df696491babf4f24e4f942c527/ruff-0.16.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32a5057c7ff3f6e6480a48fccfb3a412a690f48a3d03ac5cf08177d6c2da3ade", size = 9977162, upload-time = "2026-08-20T17:43:24.236Z" }, + { url = "https://files.pythonhosted.org/packages/46/49/72b10ec912f5ab5854992eaf7aa7cd36729b6937d9dc4e0fb41b3bf428ec/ruff-0.16.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3dce8d9b0c57c265b91885a66a567d8ea1372e8eb4e250fa8e5e3f579e99cff", size = 9829789, upload-time = "2026-08-20T17:43:26.966Z" }, + { url = "https://files.pythonhosted.org/packages/fa/80/0f30e32e7f6ee26edc39075502db9d368d788a44a79b55f763eb4ab03796/ruff-0.16.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7dc651db49283c69f8e72c834eec4fe5573e4c646856aebece0ce385dceb2a80", size = 10527949, upload-time = "2026-08-20T17:43:29.384Z" }, + { url = "https://files.pythonhosted.org/packages/52/3d/86e8ad3542169e56cac3859a343afdb9df2ad54d35a59ce1e67baee83421/ruff-0.16.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3817b87dbcabc92f13b05019257c5b89b5b4d51b5fb20f56fb5235ceb723cd07", size = 11333695, upload-time = "2026-08-20T17:43:31.872Z" }, + { url = "https://files.pythonhosted.org/packages/d0/16/481c29b380c20a0054a8261066665e1b3488e23636c49d0a43e75975b9bb/ruff-0.16.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9fce1499134b2c8c68e5166f95705a5812062bb93aacc5f9873bb1a27084bc7", size = 10727741, upload-time = "2026-08-20T17:43:34.596Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b6/56bc0b8cf45b54b28b3a5e6381c8945d51b5b18adf659454c32295209a31/ruff-0.16.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d812e482f5a7e02eee26cd73d2a37ebbdf47d795ea63ba1b89110ae93e9fb3", size = 10286522, upload-time = "2026-08-20T17:43:37.288Z" }, + { url = "https://files.pythonhosted.org/packages/e8/8b/b345b4fb110f2fbe2bd31eabd271e5e8b3b7e4ee6c0e02f2dc6be78db000/ruff-0.16.4-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6baaf984aa7976edf93d3b627fe2d1d22ee94bbca05fa6f90fc76d73924e3454", size = 10584182, upload-time = "2026-08-20T17:43:39.984Z" }, + { url = "https://files.pythonhosted.org/packages/29/e5/827b34041c35f58774a9681a4213994c164fc987800f4dddabcf451da0bf/ruff-0.16.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:bdfcf0b28662eb890372d50f92c283bb94e67e7635ed93c7fd533970acff7b2b", size = 10134195, upload-time = "2026-08-20T17:43:42.351Z" }, + { url = "https://files.pythonhosted.org/packages/0f/10/d0bffcdd6729b87afc82ba0ef377173356a7dc8e972f5179968cf2fdf98c/ruff-0.16.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b66b02cb9b04f537643cadf5768e5f98dc461890d530cb67113d71c8c76e605d", size = 9825821, upload-time = "2026-08-20T17:43:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/f5/32/0db2a863b796ca62d83e92a07a3ccf00921b14db02059347576a2fda3d4b/ruff-0.16.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:8528bf9a4b291a60bf02ea453511e8ce6215bd2b982ee80405b66b008b6c30a0", size = 10267658, upload-time = "2026-08-20T17:43:46.989Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a0/fbdeb59e48c6261f523e56c8f12e9c08fbe693786595cc7e3959207a9232/ruff-0.16.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:fbd85d2875fdd67e833213a651f613bbf25303abf6aa822a5121f4531195678d", size = 10697071, upload-time = "2026-08-20T17:43:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/aa/28/0c6dd865859c6d17bc8ccc34cb72b0e02d6c7eb25e8a1e22b5bea681e2c0/ruff-0.16.4-py3-none-win32.whl", hash = "sha256:312769988007aaeb8e189b443ccdd03c0e6374489e053467be6d96518ebff76e", size = 10021687, upload-time = "2026-08-20T17:43:52.281Z" }, + { url = "https://files.pythonhosted.org/packages/a3/03/e724450f621698117f9aa6dd241c94d0274ae96781378dc86745ae29f0e7/ruff-0.16.4-py3-none-win_amd64.whl", hash = "sha256:05d9d27a18c4bcbefada602480ec9e01e0bc949d432e0ced5df77edac195919c", size = 10567657, upload-time = "2026-08-20T17:43:54.78Z" }, + { url = "https://files.pythonhosted.org/packages/0e/fe/da8b9e1347696bb22120b77280ec5ce25d500ca5cb39d5ad6e5c18de19c1/ruff-0.16.4-py3-none-win_arm64.whl", hash = "sha256:a3a61621c9b6f6a89573e938a080e648f1695baa3f58570a3a707bc51ff65a21", size = 10451579, upload-time = "2026-08-20T17:43:57.135Z" }, ] [[package]] From 14a0686675406096e693db4207112e84f5176d51 Mon Sep 17 00:00:00 2001 From: Seth Fitzsimmons Date: Fri, 4 Sep 2026 10:05:25 -0700 Subject: [PATCH 2/5] test(cli): replace deprecated Click isolated_filesystem with tmp_path Click 8.5 deprecates CliRunner.isolated_filesystem, and the suite runs under -W error, so every CLI test errored at fixture setup. The cli_runner fixture now chdirs into pytest's tmp_path instead. Signed-off-by: Seth Fitzsimmons --- packages/overture-schema-cli/tests/conftest.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/overture-schema-cli/tests/conftest.py b/packages/overture-schema-cli/tests/conftest.py index 6702574c2..2967e39c7 100644 --- a/packages/overture-schema-cli/tests/conftest.py +++ b/packages/overture-schema-cli/tests/conftest.py @@ -2,6 +2,7 @@ from collections.abc import Generator from io import StringIO +from pathlib import Path from typing import Any from unittest.mock import patch @@ -11,11 +12,10 @@ @pytest.fixture -def cli_runner() -> Generator[CliRunner, None, None]: - """Provide a CliRunner within an isolated filesystem.""" - runner = CliRunner() - with runner.isolated_filesystem(): - yield runner +def cli_runner(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> CliRunner: + """Provide a CliRunner running in an empty working directory.""" + monkeypatch.chdir(tmp_path) + return CliRunner() @pytest.fixture From 2e2ba30efd122cd5873443152897fda79ecf4565 Mon Sep 17 00:00:00 2001 From: Seth Fitzsimmons Date: Fri, 4 Sep 2026 10:16:11 -0700 Subject: [PATCH 3/5] test(cli): annotate cli_runner fixture as CliRunner The load_input tests annotated the cli_runner fixture as pytest.FixtureRequest, which is the type of pytest's 'request' fixture, not this one. Nothing connects a test parameter's annotation to the fixture supplying it -- pytest matches by name at runtime, so mypy has no call site to check the annotation against. These tests request cli_runner only for its chdir side effect and never touch the object, which leaves body usage, the one remaining check, with nothing to constrain. Signed-off-by: Seth Fitzsimmons --- .../tests/test_cli_functions.py | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/overture-schema-cli/tests/test_cli_functions.py b/packages/overture-schema-cli/tests/test_cli_functions.py index 59ab95d24..ff84ae741 100644 --- a/packages/overture-schema-cli/tests/test_cli_functions.py +++ b/packages/overture-schema-cli/tests/test_cli_functions.py @@ -8,6 +8,7 @@ import pytest import yaml from click.exceptions import UsageError +from click.testing import CliRunner from conftest import build_feature from pydantic import BaseModel, ValidationError @@ -38,9 +39,7 @@ def test_load_input_file_not_found(self) -> None: assert "is not a file" in str(exc_info.value) - def test_load_input_path_is_directory( - self, cli_runner: pytest.FixtureRequest - ) -> None: + def test_load_input_path_is_directory(self, cli_runner: CliRunner) -> None: """Test that load_input raises UsageError when path is a directory. Note: cli_runner provides isolated filesystem for test file creation. @@ -54,7 +53,7 @@ def test_load_input_path_is_directory( assert "is not a file" in str(exc_info.value) - def test_load_input_invalid_yaml(self, cli_runner: pytest.FixtureRequest) -> None: + def test_load_input_invalid_yaml(self, cli_runner: CliRunner) -> None: """Test that load_input raises YAMLError for invalid YAML. Note: cli_runner provides isolated filesystem for test file creation. @@ -66,7 +65,7 @@ def test_load_input_invalid_yaml(self, cli_runner: pytest.FixtureRequest) -> Non with pytest.raises(yaml.YAMLError): load_input(Path(invalid_yaml)) - def test_load_input_handles_json(self, cli_runner: pytest.FixtureRequest) -> None: + def test_load_input_handles_json(self, cli_runner: CliRunner) -> None: """Test that load_input can parse JSON files. Note: cli_runner provides isolated filesystem for test file creation. @@ -82,7 +81,7 @@ def test_load_input_handles_json(self, cli_runner: pytest.FixtureRequest) -> Non assert data["id"] == "test" assert source_name == json_file - def test_load_input_handles_list(self, cli_runner: pytest.FixtureRequest) -> None: + def test_load_input_handles_list(self, cli_runner: CliRunner) -> None: """Test that load_input can parse YAML lists. Note: cli_runner provides isolated filesystem for test file creation. @@ -105,7 +104,7 @@ def test_load_input_handles_list(self, cli_runner: pytest.FixtureRequest) -> Non ) def test_load_input_warns_unexpected_extension( self, - cli_runner: pytest.FixtureRequest, + cli_runner: CliRunner, capsys: pytest.CaptureFixture, extension: str, ) -> None: @@ -131,7 +130,7 @@ def test_load_input_warns_unexpected_extension( ) def test_load_input_no_warning_expected_extension( self, - cli_runner: pytest.FixtureRequest, + cli_runner: CliRunner, capsys: pytest.CaptureFixture, extension: str, ) -> None: @@ -149,7 +148,7 @@ def test_load_input_no_warning_expected_extension( captured = capsys.readouterr() assert captured.err == "" - def test_load_input_binary_file(self, cli_runner: pytest.FixtureRequest) -> None: + def test_load_input_binary_file(self, cli_runner: CliRunner) -> None: """Test graceful failure on binary files. Note: cli_runner provides isolated filesystem for test file creation. @@ -161,9 +160,7 @@ def test_load_input_binary_file(self, cli_runner: pytest.FixtureRequest) -> None with pytest.raises((yaml.YAMLError, UnicodeDecodeError)): load_input(Path(binary_file)) - def test_load_input_unicode_filenames( - self, cli_runner: pytest.FixtureRequest - ) -> None: + def test_load_input_unicode_filenames(self, cli_runner: CliRunner) -> None: """Test files with unicode names. Note: cli_runner provides isolated filesystem for test file creation. @@ -180,7 +177,7 @@ def test_load_input_unicode_filenames( assert source_name == unicode_filename def test_load_input_jsonl_from_stdin( - self, cli_runner: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch + self, cli_runner: CliRunner, monkeypatch: pytest.MonkeyPatch ) -> None: """Test that load_input handles newline-delimited JSON (JSONL) from stdin. From f510fa82d256ec1147858d5b1e7801154fe6f1c2 Mon Sep 17 00:00:00 2001 From: John McCall Date: Wed, 9 Sep 2026 12:13:26 -0400 Subject: [PATCH 4/5] fix: use $/ self-repository syntax for local action references zizmor flags ./... action refs as ambiguous with external repo syntax. Switch to $/... per https://docs.zizmor.sh/audits/#self-repository. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: John McCall --- .github/actions/detect-affected-packages/action.yml | 2 +- .github/actions/detect-version-bumps/action.yml | 2 +- .github/workflows/main-publish.yaml | 6 +++--- .github/workflows/release-trigger.yaml | 4 ++-- .../workflows/reusable-check-python-package-versions.yaml | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/actions/detect-affected-packages/action.yml b/.github/actions/detect-affected-packages/action.yml index 3ca5e8399..60f1517a4 100644 --- a/.github/actions/detect-affected-packages/action.yml +++ b/.github/actions/detect-affected-packages/action.yml @@ -46,7 +46,7 @@ runs: # after it only so both feed the final filter step back to back. - name: Diff package versions id: diff - uses: ./.github/actions/diff-package-versions + uses: $/.github/actions/diff-package-versions with: before: ${{ inputs.before }} after: ${{ inputs.after }} diff --git a/.github/actions/detect-version-bumps/action.yml b/.github/actions/detect-version-bumps/action.yml index eed3460cc..5911dd0b4 100644 --- a/.github/actions/detect-version-bumps/action.yml +++ b/.github/actions/detect-version-bumps/action.yml @@ -31,7 +31,7 @@ runs: steps: - name: Diff package versions id: diff - uses: ./.github/actions/diff-package-versions + uses: $/.github/actions/diff-package-versions with: before: ${{ inputs.before }} diff --git a/.github/workflows/main-publish.yaml b/.github/workflows/main-publish.yaml index dba706ae2..075192b63 100644 --- a/.github/workflows/main-publish.yaml +++ b/.github/workflows/main-publish.yaml @@ -66,7 +66,7 @@ jobs: - name: Detect affected packages id: detect if: github.event_name != 'pull_request' - uses: ./.github/actions/detect-affected-packages + uses: $/.github/actions/detect-affected-packages with: before: ${{ github.event.before }} @@ -109,13 +109,13 @@ jobs: - name: Get CodeArtifact credentials id: ca - uses: ./.github/actions/code-artifact + uses: $/.github/actions/code-artifact # Delegates to the same composite action the PR smoke test exercises, so # the version formula only has one implementation to keep correct. - name: Compute version id: compute - uses: ./.github/actions/compute-version + uses: $/.github/actions/compute-version with: package: ${{ matrix.package }} context: main diff --git a/.github/workflows/release-trigger.yaml b/.github/workflows/release-trigger.yaml index 4e7534909..1c9175760 100644 --- a/.github/workflows/release-trigger.yaml +++ b/.github/workflows/release-trigger.yaml @@ -56,7 +56,7 @@ jobs: - name: Detect version bumps id: detect - uses: ./.github/actions/detect-version-bumps + uses: $/.github/actions/detect-version-bumps with: before: ${{ github.event.before }} @@ -117,7 +117,7 @@ jobs: uv run overture-schema json-schema --tag overture > overture-schema.json - name: Create release - uses: ./.github/actions/create-package-release + uses: $/.github/actions/create-package-release with: package: ${{ matrix.package }} version: ${{ matrix.version }} diff --git a/.github/workflows/reusable-check-python-package-versions.yaml b/.github/workflows/reusable-check-python-package-versions.yaml index 9a1be66aa..af003ef2b 100644 --- a/.github/workflows/reusable-check-python-package-versions.yaml +++ b/.github/workflows/reusable-check-python-package-versions.yaml @@ -79,7 +79,7 @@ jobs: - name: Diff package versions id: diff - uses: ./.github/actions/diff-package-versions + uses: $/.github/actions/diff-package-versions with: before: ${{ inputs.before_commit }} after: ${{ inputs.after_commit }} @@ -106,7 +106,7 @@ jobs: - name: Get CodeArtifact index URL id: get-code-artifact-index-url if: steps.save-changes.outputs.num_changed_packages > 0 - uses: ./.github/actions/code-artifact + uses: $/.github/actions/code-artifact with: aws_account_id: ${{ inputs.aws_account_id }} aws_region: ${{ inputs.aws_region }} @@ -140,4 +140,4 @@ jobs: else echo "Package ${package} version ${after} is new, as expected. Continuing." fi - done \ No newline at end of file + done From b2abe35af0673a4119ea099af92aab7511b01ef8 Mon Sep 17 00:00:00 2001 From: John McCall Date: Wed, 9 Sep 2026 12:15:50 -0400 Subject: [PATCH 5/5] fix: use $/ self-repository syntax for reusable workflow reference Missed one earlier: check-python-package-versions.yaml calling the reusable workflow. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: John McCall --- .github/workflows/check-python-package-versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-python-package-versions.yaml b/.github/workflows/check-python-package-versions.yaml index 0da6bcce4..e6e72900a 100644 --- a/.github/workflows/check-python-package-versions.yaml +++ b/.github/workflows/check-python-package-versions.yaml @@ -14,7 +14,7 @@ concurrency: jobs: check: - uses: ./.github/workflows/reusable-check-python-package-versions.yaml + uses: $/.github/workflows/reusable-check-python-package-versions.yaml permissions: id-token: write # Required for AWS CodeArtifact OIDC authentication contents: read