From 40a3884e74dadb011f345fed7dcde2e5ddc64d43 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:36:01 -0400 Subject: [PATCH 01/76] Add support for Python 3.14 --- .../actions/build-conda-packages/action.yaml | 2 +- .../actions/build-java-runtime/action.yaml | 3 +- .github/workflows/deployment.yaml | 2 +- .github/workflows/test.yaml | 2 +- conda.recipe/conda_build_config.yaml | 1 + conda.recipe/meta.yaml | 4 +- hatch_build.py | 2 +- pyproject.toml | 35 +-- src/jdk4py/version.json | 2 +- uv.lock | 248 +++++++++--------- 10 files changed, 147 insertions(+), 154 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 962009a3..5e8f752d 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "24.7.1" + conda-build-version: "25.9.0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 4a34ac5f..94b8bd43 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -9,9 +9,8 @@ runs: steps: - uses: astral-sh/setup-uv@v5 with: - enable-cache: true python-version: ${{ inputs.python-version }} - version: "0.5.16" # Keep synced with same field in `deployment.yaml`. + version-file: pyproject.toml - id: get-java-version run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index f9b6ad99..5b1f03d8 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -50,7 +50,7 @@ jobs: steps: - uses: astral-sh/setup-uv@v5 with: - version: "0.5.16" # Keep synced with same field in `build-java-runtime/action.yaml`. + version-file: pyproject.toml - uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5e938f6d..3b354fd1 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -44,7 +44,7 @@ jobs: # No need to test each platform and Python version. - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - run: uv run mypy + run: uv run ty check - run: uv run pytest diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 13912bdb..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -3,3 +3,4 @@ python: - "3.11" - "3.12" - "3.13" + - "3.14" diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index d811f847..61f3ee97 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -1,5 +1,5 @@ {% set pyproject = load_file_data("pyproject.toml") %} -{% set dev_dependencies = pyproject["tool"]["uv"]["dev-dependencies"] %} +{% set dev_dependencies = pyproject["dependency-groups"]["dev"] %} {% set version = load_file_data("src/jdk4py/version.json") %} package: @@ -17,7 +17,7 @@ build: requirements: build: - python {{ python }} - - pip ==24.2 + - pip ==25.2 {% for dependency in dev_dependencies if dependency.startswith("hatchling ") %} - {{ dependency }} {% endfor %} diff --git a/hatch_build.py b/hatch_build.py index 2bdf83a2..971ccd2a 100644 --- a/hatch_build.py +++ b/hatch_build.py @@ -23,7 +23,7 @@ def _get_architecture(machine: str) -> _Architecture: raise ValueError(f"Unsupported machine: `{machine}`.") -def _get_platform_tag(system: str, architecture: _Architecture) -> str: +def _get_platform_tag(system: str, architecture: _Architecture) -> str: # ty: ignore[invalid-return-type] incorrect `Function can implicitly return None`. # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. match system.lower(): case "darwin": diff --git a/pyproject.toml b/pyproject.toml index 41f94ce7..fc8c1f9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,16 @@ requires = [ "hatchling ==1.27.0", ] +[dependency-groups] +dev = [ + # Keep in sync with version in `build-system.requires`. + "hatchling ==1.27.0", + # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on anaconda). + "pytest ==8.4.2", + "ruff", + "ty", +] + [project] authors = [{ email = "dev@atoti.io", name = "ActiveViam" }] classifiers = [ @@ -34,14 +44,6 @@ Repository = "https://github.com/activeviam/jdk4py" [tool.hatch.build.targets.wheel] artifacts = ["java-runtime"] -[tool.mypy] -# Remove once https://github.com/python/mypy/issues/10428 is fixed. -files = "build_java_runtime.py,hatch_build.py,src,tests" -strict = true -warn_redundant_casts = true -warn_unused_configs = true -warn_unused_ignores = true - [tool.pytest.ini_options] filterwarnings = ["error"] @@ -63,14 +65,13 @@ ignore = [ ] select = ["ALL"] +[tool.ty.rules] +unused-ignore-comment = "warn" + +[tool.ty.terminal] +error-on-warning = true + [tool.uv] -dev-dependencies = [ - # Keep in sync with version in `build-system.requires`. - "hatchling ==1.27.0", - "mypy", - # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). - "pytest ==7.4.4", - "ruff", -] -required-version = ">=0.5.16,<0.6" +# Keep pinned to ensure same version is used on CI. +required-version = "==0.8.24" trusted-publishing = "always" diff --git a/src/jdk4py/version.json b/src/jdk4py/version.json index 8264f478..2dd4fd5d 100644 --- a/src/jdk4py/version.json +++ b/src/jdk4py/version.json @@ -1 +1 @@ -"21.0.4.2" +"21.0.8.0" diff --git a/uv.lock b/uv.lock index 0708d469..c8c4ede6 100644 --- a/uv.lock +++ b/uv.lock @@ -1,22 +1,26 @@ version = 1 +revision = 3 requires-python = ">=3.10" [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "exceptiongroup" -version = "1.2.2" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, ] [[package]] @@ -30,31 +34,30 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "trove-classifiers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8f/8a/cc1debe3514da292094f1c3a700e4ca25442489731ef7c0814358816bb03/hatchling-1.27.0.tar.gz", hash = "sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6", size = 54983 } +sdist = { url = "https://files.pythonhosted.org/packages/8f/8a/cc1debe3514da292094f1c3a700e4ca25442489731ef7c0814358816bb03/hatchling-1.27.0.tar.gz", hash = "sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6", size = 54983, upload-time = "2024-12-15T17:08:11.894Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl", hash = "sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b", size = 75794 }, + { url = "https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl", hash = "sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b", size = 75794, upload-time = "2024-12-15T17:08:10.364Z" }, ] [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] name = "jdk4py" -version = "21.0.4.2" source = { editable = "." } [package.dev-dependencies] dev = [ { name = "hatchling" }, - { name = "mypy" }, { name = "pytest" }, { name = "ruff" }, + { name = "ty" }, ] [package.metadata] @@ -62,88 +65,50 @@ dev = [ [package.metadata.requires-dev] dev = [ { name = "hatchling", specifier = "==1.27.0" }, - { name = "mypy" }, - { name = "pytest", specifier = "==7.4.4" }, + { name = "pytest", specifier = "==8.4.2" }, { name = "ruff" }, + { name = "ty" }, ] [[package]] -name = "mypy" -version = "1.14.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/eb/2c92d8ea1e684440f54fa49ac5d9a5f19967b7b472a281f419e69a8d228e/mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6", size = 3216051 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/7a/87ae2adb31d68402da6da1e5f30c07ea6063e9f09b5e7cfc9dfa44075e74/mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb", size = 11211002 }, - { url = "https://files.pythonhosted.org/packages/e1/23/eada4c38608b444618a132be0d199b280049ded278b24cbb9d3fc59658e4/mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0", size = 10358400 }, - { url = "https://files.pythonhosted.org/packages/43/c9/d6785c6f66241c62fd2992b05057f404237deaad1566545e9f144ced07f5/mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d", size = 12095172 }, - { url = "https://files.pythonhosted.org/packages/c3/62/daa7e787770c83c52ce2aaf1a111eae5893de9e004743f51bfcad9e487ec/mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b", size = 12828732 }, - { url = "https://files.pythonhosted.org/packages/1b/a2/5fb18318a3637f29f16f4e41340b795da14f4751ef4f51c99ff39ab62e52/mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427", size = 13012197 }, - { url = "https://files.pythonhosted.org/packages/28/99/e153ce39105d164b5f02c06c35c7ba958aaff50a2babba7d080988b03fe7/mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f", size = 9780836 }, - { url = "https://files.pythonhosted.org/packages/da/11/a9422850fd506edbcdc7f6090682ecceaf1f87b9dd847f9df79942da8506/mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c", size = 11120432 }, - { url = "https://files.pythonhosted.org/packages/b6/9e/47e450fd39078d9c02d620545b2cb37993a8a8bdf7db3652ace2f80521ca/mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1", size = 10279515 }, - { url = "https://files.pythonhosted.org/packages/01/b5/6c8d33bd0f851a7692a8bfe4ee75eb82b6983a3cf39e5e32a5d2a723f0c1/mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8", size = 12025791 }, - { url = "https://files.pythonhosted.org/packages/f0/4c/e10e2c46ea37cab5c471d0ddaaa9a434dc1d28650078ac1b56c2d7b9b2e4/mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f", size = 12749203 }, - { url = "https://files.pythonhosted.org/packages/88/55/beacb0c69beab2153a0f57671ec07861d27d735a0faff135a494cd4f5020/mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1", size = 12885900 }, - { url = "https://files.pythonhosted.org/packages/a2/75/8c93ff7f315c4d086a2dfcde02f713004357d70a163eddb6c56a6a5eff40/mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae", size = 9777869 }, - { url = "https://files.pythonhosted.org/packages/43/1b/b38c079609bb4627905b74fc6a49849835acf68547ac33d8ceb707de5f52/mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14", size = 11266668 }, - { url = "https://files.pythonhosted.org/packages/6b/75/2ed0d2964c1ffc9971c729f7a544e9cd34b2cdabbe2d11afd148d7838aa2/mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9", size = 10254060 }, - { url = "https://files.pythonhosted.org/packages/a1/5f/7b8051552d4da3c51bbe8fcafffd76a6823779101a2b198d80886cd8f08e/mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11", size = 11933167 }, - { url = "https://files.pythonhosted.org/packages/04/90/f53971d3ac39d8b68bbaab9a4c6c58c8caa4d5fd3d587d16f5927eeeabe1/mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e", size = 12864341 }, - { url = "https://files.pythonhosted.org/packages/03/d2/8bc0aeaaf2e88c977db41583559319f1821c069e943ada2701e86d0430b7/mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89", size = 12972991 }, - { url = "https://files.pythonhosted.org/packages/6f/17/07815114b903b49b0f2cf7499f1c130e5aa459411596668267535fe9243c/mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b", size = 9879016 }, - { url = "https://files.pythonhosted.org/packages/9e/15/bb6a686901f59222275ab228453de741185f9d54fecbaacec041679496c6/mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255", size = 11252097 }, - { url = "https://files.pythonhosted.org/packages/f8/b3/8b0f74dfd072c802b7fa368829defdf3ee1566ba74c32a2cb2403f68024c/mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34", size = 10239728 }, - { url = "https://files.pythonhosted.org/packages/c5/9b/4fd95ab20c52bb5b8c03cc49169be5905d931de17edfe4d9d2986800b52e/mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a", size = 11924965 }, - { url = "https://files.pythonhosted.org/packages/56/9d/4a236b9c57f5d8f08ed346914b3f091a62dd7e19336b2b2a0d85485f82ff/mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9", size = 12867660 }, - { url = "https://files.pythonhosted.org/packages/40/88/a61a5497e2f68d9027de2bb139c7bb9abaeb1be1584649fa9d807f80a338/mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd", size = 12969198 }, - { url = "https://files.pythonhosted.org/packages/54/da/3d6fc5d92d324701b0c23fb413c853892bfe0e1dbe06c9138037d459756b/mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107", size = 9885276 }, - { url = "https://files.pythonhosted.org/packages/a0/b5/32dd67b69a16d088e533962e5044e51004176a9952419de0370cdaead0f8/mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1", size = 2752905 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" +name = "packaging" +version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] [[package]] -name = "packaging" -version = "24.2" +name = "pathspec" +version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, ] [[package]] -name = "pathspec" -version = "0.12.1" +name = "pluggy" +version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] -name = "pluggy" -version = "1.5.0" +name = "pygments" +version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pytest" -version = "7.4.4" +version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -151,91 +116,118 @@ dependencies = [ { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287 }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, ] [[package]] name = "ruff" -version = "0.9.0" +version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/75/48/385f276f41e89623a5ea8e4eb9c619a44fdfc2a64849916b3584eca6cb9f/ruff-0.9.0.tar.gz", hash = "sha256:143f68fa5560ecf10fc49878b73cee3eab98b777fcf43b0e62d43d42f5ef9d8b", size = 3489167 } +sdist = { url = "https://files.pythonhosted.org/packages/c7/8e/f9f9ca747fea8e3ac954e3690d4698c9737c23b51731d02df999c150b1c9/ruff-0.13.3.tar.gz", hash = "sha256:5b0ba0db740eefdfbcce4299f49e9eaefc643d4d007749d77d047c2bab19908e", size = 5438533, upload-time = "2025-10-02T19:29:31.582Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/01/e0885e5519212efc7ab9d868bc39cb9781931c4c6f9b17becafa81193ec4/ruff-0.9.0-py3-none-linux_armv6l.whl", hash = "sha256:949b3513f931741e006cf267bf89611edff04e1f012013424022add3ce78f319", size = 10647069 }, - { url = "https://files.pythonhosted.org/packages/dd/69/510a9a5781dcf84c2ad513c2003936fefc802f39c745d5f2355d77fa45fd/ruff-0.9.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:99fbcb8c7fe94ae1e462ab2a1ef17cb20b25fb6438b9f198b1bcf5207a0a7916", size = 10401936 }, - { url = "https://files.pythonhosted.org/packages/07/9f/37fb86bfdf28c4cbfe94cbcc01fb9ab0cb8128548f243f34d5298b212562/ruff-0.9.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:0b022afd8eb0fcfce1e0adec84322abf4d6ce3cd285b3b99c4f17aae7decf749", size = 10010347 }, - { url = "https://files.pythonhosted.org/packages/30/0d/b95121f53c7f7bfb7ba427a35d25f983ed3b476620c5cd69f45caa5b294e/ruff-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:336567ce92c9ca8ec62780d07b5fa11fbc881dc7bb40958f93a7d621e7ab4589", size = 10882152 }, - { url = "https://files.pythonhosted.org/packages/d4/0b/a955cb6b19eb900c4c594707ab72132ce2d5cd8b5565137fb8fed21b8f08/ruff-0.9.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d338336c44bda602dc8e8766836ac0441e5b0dfeac3af1bd311a97ebaf087a75", size = 10405502 }, - { url = "https://files.pythonhosted.org/packages/1e/fa/9a6c70af74f20edd2519b89eb3322f4bfa399315cf306383443700f2d6b6/ruff-0.9.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9b3ececf523d733e90b540e7afcc0494189e8999847f8855747acd5a9a8c45f", size = 11465069 }, - { url = "https://files.pythonhosted.org/packages/ee/8b/7effac8915470da496be009fe861060baff2692f92801976b2c01cdc8c54/ruff-0.9.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a11c0872a31232e473e2e0e2107f3d294dbadd2f83fb281c3eb1c22a24866924", size = 12176850 }, - { url = "https://files.pythonhosted.org/packages/bd/ed/626179786889eca47b1e821c1582622ac0c1c8f01d60ac974f8b96867a57/ruff-0.9.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5fd06220c17a9cc0dc7fc6552f2ac4db74e8e8bff9c401d160ac59d00566f54", size = 11700963 }, - { url = "https://files.pythonhosted.org/packages/75/79/094c34ddec47fd3c61a0bc5e83ca164344c592949cff91f05961fd40922e/ruff-0.9.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0457e775c74bf3976243f910805242b7dcd389e1d440deccbd1194ca17a5728c", size = 13096560 }, - { url = "https://files.pythonhosted.org/packages/e7/23/ec85dca0dcb329835197401734501bfa1d39e72343df64628c67b72bcbf5/ruff-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05415599bbcb318f730ea1b46a39e4fbf71f6a63fdbfa1dda92efb55f19d7ecf", size = 11278658 }, - { url = "https://files.pythonhosted.org/packages/6c/17/1b3ea5f06578ea1daa08ac35f9de099d1827eea6e116a8cabbf11235c925/ruff-0.9.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:fbf9864b009e43cfc1c8bed1a6a4c529156913105780af4141ca4342148517f5", size = 10879847 }, - { url = "https://files.pythonhosted.org/packages/a6/e5/00bc97d6f419da03c0d898e95cca77311494e7274dc7cc17d94976e32e52/ruff-0.9.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:37b3da222b12e2bb2ce628e02586ab4846b1ed7f31f42a5a0683b213453b2d49", size = 10494220 }, - { url = "https://files.pythonhosted.org/packages/cc/70/d0a23d94f3e40b7ffac0e5506f33bb504672569173781a6c7cab0db6a4ba/ruff-0.9.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:733c0fcf2eb0c90055100b4ed1af9c9d87305b901a8feb6a0451fa53ed88199d", size = 11004182 }, - { url = "https://files.pythonhosted.org/packages/20/8e/367cf8e401890f823d0e4eb33635d0113719d5660b6522b7295376dd95fd/ruff-0.9.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8221a454bfe5ccdf8017512fd6bb60e6ec30f9ea252b8a80e5b73619f6c3cefd", size = 11345761 }, - { url = "https://files.pythonhosted.org/packages/fe/08/4b54e02da73060ebc29368ab15868613f7d2496bde3b01d284d5423646bc/ruff-0.9.0-py3-none-win32.whl", hash = "sha256:d345f2178afd192c7991ddee59155c58145e12ad81310b509bd2e25c5b0247b3", size = 8807005 }, - { url = "https://files.pythonhosted.org/packages/a1/a7/0b422971e897c51bf805f998d75bcfe5d4d858f5002203832875fc91b733/ruff-0.9.0-py3-none-win_amd64.whl", hash = "sha256:0cbc0905d94d21305872f7f8224e30f4bbcd532bc21b2225b2446d8fc7220d19", size = 9689974 }, - { url = "https://files.pythonhosted.org/packages/73/0e/c00f66731e514be3299801b1d9d54efae0abfe8f00a5c14155f2ab9e2920/ruff-0.9.0-py3-none-win_arm64.whl", hash = "sha256:7b1148771c6ca88f820d761350a053a5794bc58e0867739ea93eb5e41ad978cd", size = 9147729 }, + { url = "https://files.pythonhosted.org/packages/d2/33/8f7163553481466a92656d35dea9331095122bb84cf98210bef597dd2ecd/ruff-0.13.3-py3-none-linux_armv6l.whl", hash = "sha256:311860a4c5e19189c89d035638f500c1e191d283d0cc2f1600c8c80d6dcd430c", size = 12484040, upload-time = "2025-10-02T19:28:49.199Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b5/4a21a4922e5dd6845e91896b0d9ef493574cbe061ef7d00a73c61db531af/ruff-0.13.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2bdad6512fb666b40fcadb65e33add2b040fc18a24997d2e47fee7d66f7fcae2", size = 13122975, upload-time = "2025-10-02T19:28:52.446Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/15649af836d88c9f154e5be87e64ae7d2b1baa5a3ef317cb0c8fafcd882d/ruff-0.13.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fc6fa4637284708d6ed4e5e970d52fc3b76a557d7b4e85a53013d9d201d93286", size = 12346621, upload-time = "2025-10-02T19:28:54.712Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/bcbccb8141305f9a6d3f72549dd82d1134299177cc7eaf832599700f95a7/ruff-0.13.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c9e6469864f94a98f412f20ea143d547e4c652f45e44f369d7b74ee78185838", size = 12574408, upload-time = "2025-10-02T19:28:56.679Z" }, + { url = "https://files.pythonhosted.org/packages/ce/19/0f3681c941cdcfa2d110ce4515624c07a964dc315d3100d889fcad3bfc9e/ruff-0.13.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bf62b705f319476c78891e0e97e965b21db468b3c999086de8ffb0d40fd2822", size = 12285330, upload-time = "2025-10-02T19:28:58.79Z" }, + { url = "https://files.pythonhosted.org/packages/10/f8/387976bf00d126b907bbd7725219257feea58650e6b055b29b224d8cb731/ruff-0.13.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cc1abed87ce40cb07ee0667ce99dbc766c9f519eabfd948ed87295d8737c60", size = 13980815, upload-time = "2025-10-02T19:29:01.577Z" }, + { url = "https://files.pythonhosted.org/packages/0c/a6/7c8ec09d62d5a406e2b17d159e4817b63c945a8b9188a771193b7e1cc0b5/ruff-0.13.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4fb75e7c402d504f7a9a259e0442b96403fa4a7310ffe3588d11d7e170d2b1e3", size = 14987733, upload-time = "2025-10-02T19:29:04.036Z" }, + { url = "https://files.pythonhosted.org/packages/97/e5/f403a60a12258e0fd0c2195341cfa170726f254c788673495d86ab5a9a9d/ruff-0.13.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17b951f9d9afb39330b2bdd2dd144ce1c1335881c277837ac1b50bfd99985ed3", size = 14439848, upload-time = "2025-10-02T19:29:06.684Z" }, + { url = "https://files.pythonhosted.org/packages/39/49/3de381343e89364c2334c9f3268b0349dc734fc18b2d99a302d0935c8345/ruff-0.13.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6052f8088728898e0a449f0dde8fafc7ed47e4d878168b211977e3e7e854f662", size = 13421890, upload-time = "2025-10-02T19:29:08.767Z" }, + { url = "https://files.pythonhosted.org/packages/ab/b5/c0feca27d45ae74185a6bacc399f5d8920ab82df2d732a17213fb86a2c4c/ruff-0.13.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc742c50f4ba72ce2a3be362bd359aef7d0d302bf7637a6f942eaa763bd292af", size = 13444870, upload-time = "2025-10-02T19:29:11.234Z" }, + { url = "https://files.pythonhosted.org/packages/50/a1/b655298a1f3fda4fdc7340c3f671a4b260b009068fbeb3e4e151e9e3e1bf/ruff-0.13.3-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:8e5640349493b378431637019366bbd73c927e515c9c1babfea3e932f5e68e1d", size = 13691599, upload-time = "2025-10-02T19:29:13.353Z" }, + { url = "https://files.pythonhosted.org/packages/32/b0/a8705065b2dafae007bcae21354e6e2e832e03eb077bb6c8e523c2becb92/ruff-0.13.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6b139f638a80eae7073c691a5dd8d581e0ba319540be97c343d60fb12949c8d0", size = 12421893, upload-time = "2025-10-02T19:29:15.668Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/cbe7082588d025cddbb2f23e6dfef08b1a2ef6d6f8328584ad3015b5cebd/ruff-0.13.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6b547def0a40054825de7cfa341039ebdfa51f3d4bfa6a0772940ed351d2746c", size = 12267220, upload-time = "2025-10-02T19:29:17.583Z" }, + { url = "https://files.pythonhosted.org/packages/a5/99/4086f9c43f85e0755996d09bdcb334b6fee9b1eabdf34e7d8b877fadf964/ruff-0.13.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9cc48a3564423915c93573f1981d57d101e617839bef38504f85f3677b3a0a3e", size = 13177818, upload-time = "2025-10-02T19:29:19.943Z" }, + { url = "https://files.pythonhosted.org/packages/9b/de/7b5db7e39947d9dc1c5f9f17b838ad6e680527d45288eeb568e860467010/ruff-0.13.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1a993b17ec03719c502881cb2d5f91771e8742f2ca6de740034433a97c561989", size = 13618715, upload-time = "2025-10-02T19:29:22.527Z" }, + { url = "https://files.pythonhosted.org/packages/28/d3/bb25ee567ce2f61ac52430cf99f446b0e6d49bdfa4188699ad005fdd16aa/ruff-0.13.3-py3-none-win32.whl", hash = "sha256:f14e0d1fe6460f07814d03c6e32e815bff411505178a1f539a38f6097d3e8ee3", size = 12334488, upload-time = "2025-10-02T19:29:24.782Z" }, + { url = "https://files.pythonhosted.org/packages/cf/49/12f5955818a1139eed288753479ba9d996f6ea0b101784bb1fe6977ec128/ruff-0.13.3-py3-none-win_amd64.whl", hash = "sha256:621e2e5812b691d4f244638d693e640f188bacbb9bc793ddd46837cea0503dd2", size = 13455262, upload-time = "2025-10-02T19:29:26.882Z" }, + { url = "https://files.pythonhosted.org/packages/fe/72/7b83242b26627a00e3af70d0394d68f8f02750d642567af12983031777fc/ruff-0.13.3-py3-none-win_arm64.whl", hash = "sha256:9e9e9d699841eaf4c2c798fa783df2fabc680b72059a02ca0ed81c460bc58330", size = 12538484, upload-time = "2025-10-02T19:29:28.951Z" }, ] [[package]] name = "tomli" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, ] [[package]] name = "trove-classifiers" -version = "2025.1.7.14" +version = "2025.9.11.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/9a/778622bc06632529817c3c524c82749a112603ae2bbcf72ee3eb33a2c4f1/trove_classifiers-2025.9.11.17.tar.gz", hash = "sha256:931ca9841a5e9c9408bc2ae67b50d28acf85bef56219b56860876dd1f2d024dd", size = 16975, upload-time = "2025-09-11T17:07:50.97Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/85/a4ff8758c66f1fc32aa5e9a145908394bf9cf1c79ffd1113cfdeb77e74e4/trove_classifiers-2025.9.11.17-py3-none-any.whl", hash = "sha256:5d392f2d244deb1866556457d6f3516792124a23d1c3a463a2e8668a5d1c15dd", size = 14158, upload-time = "2025-09-11T17:07:49.886Z" }, +] + +[[package]] +name = "ty" +version = "0.0.1a21" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/14/53bf5a0b2ae13a7d3c9405797d00e286aa3d08e5acb853b262a0097b0c17/trove_classifiers-2025.1.7.14.tar.gz", hash = "sha256:0fd08ab2b517ee22f2a539dcdab772ccee4e744eff61ba819846a5fac913d285", size = 16130 } +sdist = { url = "https://files.pythonhosted.org/packages/b7/0f/65606ccee2da5a05a3c3362f5233f058e9d29d3c5521697c7ae79545d246/ty-0.0.1a21.tar.gz", hash = "sha256:e941e9a9d1e54b03eeaf9c3197c26a19cf76009fd5e41e16e5657c1c827bd6d3", size = 4263980, upload-time = "2025-09-19T06:54:06.412Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/e4/5bd91cb201c80bbccd8514f6e63f51b15f46b9f692723519aab155b32836/trove_classifiers-2025.1.7.14-py3-none-any.whl", hash = "sha256:969b4ea1ef4e5e91b0398b60ae3a5e94027a50a65d5410badc920b2fc3de7ebb", size = 13536 }, + { url = "https://files.pythonhosted.org/packages/d3/7a/c87a42d0a45cfa2d5c06c8d66aa1b243db16dc31b25e545fb0263308523b/ty-0.0.1a21-py3-none-linux_armv6l.whl", hash = "sha256:1f276ceab23a1410aec09508248c76ae0989c67fb7a0c287e0d4564994295531", size = 8421116, upload-time = "2025-09-19T06:53:35.029Z" }, + { url = "https://files.pythonhosted.org/packages/99/c2/721bf4fa21c84d4cdae0e57a06a88e7e64fc2dca38820232bd6cbeef644f/ty-0.0.1a21-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3c3bc66fcae41eff133cfe326dd65d82567a2fb5d4efe2128773b10ec2766819", size = 8512556, upload-time = "2025-09-19T06:53:37.455Z" }, + { url = "https://files.pythonhosted.org/packages/6c/58/b0585d9d61673e864a87e95760dfa2a90ac15702e7612ab064d354f6752a/ty-0.0.1a21-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cc0880ec344fbdf736b05d8d0da01f0caaaa02409bd9a24b68d18d0127a79b0e", size = 8109188, upload-time = "2025-09-19T06:53:39.469Z" }, + { url = "https://files.pythonhosted.org/packages/ea/08/edf7b59ba24bb1a1af341207fc5a0106eb1fe4264c1d7fb672c171dd2daf/ty-0.0.1a21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:334d2a212ebf42a0e55d57561926af7679fe1e878175e11dcb81ad8df892844e", size = 8279000, upload-time = "2025-09-19T06:53:41.309Z" }, + { url = "https://files.pythonhosted.org/packages/05/8e/4b5e562623e0aa24a3972510287b4bc5d98251afb353388d14008ea99954/ty-0.0.1a21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a8c769987d00fbc33054ff7e342633f475ea10dc43bc60fb9fb056159d48cb90", size = 8243261, upload-time = "2025-09-19T06:53:42.736Z" }, + { url = "https://files.pythonhosted.org/packages/c3/09/6476fa21f9962d5b9c8e8053fd0442ed8e3ceb7502e39700ab1935555199/ty-0.0.1a21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:218d53e7919e885bd98e9196d9cb952d82178b299aa36da6f7f39333eb7400ed", size = 9150228, upload-time = "2025-09-19T06:53:44.242Z" }, + { url = "https://files.pythonhosted.org/packages/d2/96/49c158b6255fc1e22a5701c38f7d4c1b7f8be17a476ce9226fcae82a7b36/ty-0.0.1a21-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:84243455f295ed850bd53f7089819321807d4e6ee3b1cbff6086137ae0259466", size = 9628323, upload-time = "2025-09-19T06:53:45.998Z" }, + { url = "https://files.pythonhosted.org/packages/f4/65/37a8a5cb7b3254365c54b5e10f069e311c4252ed160b86fabd1203fbca5c/ty-0.0.1a21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87a200c21e02962e8a27374d9d152582331d57d709672431be58f4f898bf6cad", size = 9251233, upload-time = "2025-09-19T06:53:48.042Z" }, + { url = "https://files.pythonhosted.org/packages/a3/30/5b06120747da4a0f0bc54a4b051b42172603033dbee0bcf51bce7c21ada9/ty-0.0.1a21-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be8f457d7841b7ead2a3f6b65ba668abc172a1150a0f1f6c0958af3725dbb61a", size = 8996186, upload-time = "2025-09-19T06:53:49.753Z" }, + { url = "https://files.pythonhosted.org/packages/af/fc/5aa122536b1acb57389f404f6328c20342242b78513a60459fee9b7d6f27/ty-0.0.1a21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1474d883129bb63da3b2380fc7ead824cd3baf6a9551e6aa476ffefc58057af3", size = 8722848, upload-time = "2025-09-19T06:53:51.566Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c1/456dcc65a149df8410b1d75f0197a31d4beef74b7bb44cce42b03bf074e8/ty-0.0.1a21-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0efba2e52b58f536f4198ba5c4a36cac2ba67d83ec6f429ebc7704233bcda4c3", size = 8220727, upload-time = "2025-09-19T06:53:53.753Z" }, + { url = "https://files.pythonhosted.org/packages/a4/86/b37505d942cd68235be5be407e43e15afa36669aaa2db9b6e5b43c1d9f91/ty-0.0.1a21-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5dfc73299d441cc6454e36ed0a976877415024143dfca6592dc36f7701424383", size = 8279114, upload-time = "2025-09-19T06:53:55.343Z" }, + { url = "https://files.pythonhosted.org/packages/55/fe/0d9816f36d258e6b2a3d7518421be17c68954ea9a66b638de49588cc2e27/ty-0.0.1a21-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba13d03b9e095216ceb4e4d554a308517f28ab0a6e4dcd07cfe94563e4c2c489", size = 8701798, upload-time = "2025-09-19T06:53:57.17Z" }, + { url = "https://files.pythonhosted.org/packages/4e/7a/70539932e3e5a36c54bd5432ff44ed0c301c41a528365d8de5b8f79f4317/ty-0.0.1a21-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:9463cac96b8f1bb5ba740fe1d42cd6bd152b43c5b159b2f07f8fd629bcdded34", size = 8872676, upload-time = "2025-09-19T06:53:59.357Z" }, + { url = "https://files.pythonhosted.org/packages/ea/94/809d85f6982841fe28526ace3b282b0458d0a96bbc6b1a982d9269a5e481/ty-0.0.1a21-py3-none-win32.whl", hash = "sha256:ecf41706b803827b0de8717f32a434dad1e67be9f4b8caf403e12013179ea06a", size = 8003866, upload-time = "2025-09-19T06:54:01.393Z" }, + { url = "https://files.pythonhosted.org/packages/50/16/b3e914cec2a6344d2c30d3780ca6ecd39667173611f8776cecfd1294eab9/ty-0.0.1a21-py3-none-win_amd64.whl", hash = "sha256:7505aeb8bf2a62f00f12cfa496f6c965074d75c8126268776565284c8a12d5dd", size = 8675300, upload-time = "2025-09-19T06:54:02.893Z" }, + { url = "https://files.pythonhosted.org/packages/16/0b/293be6bc19f6da5e9b15e615a7100504f307dd4294d2c61cee3de91198e5/ty-0.0.1a21-py3-none-win_arm64.whl", hash = "sha256:21f708d02b6588323ffdbfdba38830dd0ecfd626db50aa6006b296b5470e52f9", size = 8193800, upload-time = "2025-09-19T06:54:04.583Z" }, ] [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] From a950e6b4150edb9b28fe2105ea0aab2102ce5b60 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:42:57 -0400 Subject: [PATCH 02/76] fixup! Add support for Python 3.14 --- .github/workflows/deployment.yaml | 4 ++-- .github/workflows/test.yaml | 2 +- hatch_build.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 5b1f03d8..06f9461a 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -37,7 +37,7 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.tar.bz2 + path: dist/*/jdk4py-*.conda publish: environment: deployment @@ -68,7 +68,7 @@ jobs: JDK4PY_CONDA_CHANNEL_USERNAME: ${{ vars.CONDA_CHANNEL_USERNAME }} run: | cd dist/ - ls */jdk4py-*.tar.bz2 | \ + ls */jdk4py-*.conda | \ while read filepath; do echo Uploading ${filepath} curl --fail --user "$JDK4PY_CONDA_CHANNEL_USERNAME":"$JDK4PY_CONDA_CHANNEL_TOKEN" --upload-file ${filepath} "$JDK4PY_CONDA_CHANNEL_URL/$(dirname $filepath)/" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 3b354fd1..55bdeecd 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -81,4 +81,4 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.tar.bz2 + path: dist/*/jdk4py-*.conda diff --git a/hatch_build.py b/hatch_build.py index 971ccd2a..98e33584 100644 --- a/hatch_build.py +++ b/hatch_build.py @@ -23,7 +23,7 @@ def _get_architecture(machine: str) -> _Architecture: raise ValueError(f"Unsupported machine: `{machine}`.") -def _get_platform_tag(system: str, architecture: _Architecture) -> str: # ty: ignore[invalid-return-type] incorrect `Function can implicitly return None`. +def _get_platform_tag(system: str, architecture: _Architecture) -> str: # ty: ignore[invalid-return-type] incorrect `Function can implicitly return None`. # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. match system.lower(): case "darwin": From a97df9eb5ede5c7a4f5a9cd76bec518c09450668 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:45:21 -0400 Subject: [PATCH 03/76] fixup! Add support for Python 3.14 --- README.md | 2 +- conda.recipe/conda_build_config.yaml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 1e7e42c7..c45312da 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ PosixPath('/Users/johndoe/dev/jdk4py/jdk4py/java-runtime') >>> JAVA PosixPath('/Users/johndoe/dev/jdk4py/jdk4py/java-runtime/bin/java') >>> JAVA_VERSION -(21, 0, 4) +(21, 0, 8) >>> from subprocess import run >>> some_java_options = ["-Xmx16G", "-Xms2G"] >>> run( diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 67948170..13912bdb 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -3,4 +3,3 @@ python: - "3.11" - "3.12" - "3.13" - - "3.14" From 490e5ac4a9e32abc15c9b312fff77f905b18b876 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:50:07 -0400 Subject: [PATCH 04/76] fixup! Add support for Python 3.14 --- .github/actions/build-conda-packages/action.yaml | 2 +- .github/actions/build-java-runtime/action.yaml | 2 +- .github/workflows/deployment.yaml | 6 +++--- .github/workflows/test.yaml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 5e8f752d..962009a3 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "25.9.0" + conda-build-version: "24.7.1" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 94b8bd43..4b8e4b43 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -7,7 +7,7 @@ inputs: runs: using: composite steps: - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ inputs.python-version }} version-file: pyproject.toml diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 06f9461a..920dd6ed 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -37,7 +37,7 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.conda + path: dist/*/jdk4py-*.tar.bz2 publish: environment: deployment @@ -48,7 +48,7 @@ jobs: # Required for trusted publishing. id-token: write steps: - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml @@ -68,7 +68,7 @@ jobs: JDK4PY_CONDA_CHANNEL_USERNAME: ${{ vars.CONDA_CHANNEL_USERNAME }} run: | cd dist/ - ls */jdk4py-*.conda | \ + ls */jdk4py-*.tar.bz2 | \ while read filepath; do echo Uploading ${filepath} curl --fail --user "$JDK4PY_CONDA_CHANNEL_USERNAME":"$JDK4PY_CONDA_CHANNEL_TOKEN" --upload-file ${filepath} "$JDK4PY_CONDA_CHANNEL_URL/$(dirname $filepath)/" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 55bdeecd..3b354fd1 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -81,4 +81,4 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.conda + path: dist/*/jdk4py-*.tar.bz2 From 348e3cda5cb03f32a96976ee3b7dd668e98173c8 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:01:06 -0400 Subject: [PATCH 05/76] fixup! Add support for Python 3.14 --- .github/actions/build-conda-packages/action.yaml | 2 +- .github/workflows/deployment.yaml | 4 ++-- .github/workflows/test.yaml | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 962009a3..5e8f752d 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "24.7.1" + conda-build-version: "25.9.0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 920dd6ed..f27f02ca 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -37,7 +37,7 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.tar.bz2 + path: dist/*/jdk4py-*.conda publish: environment: deployment @@ -68,7 +68,7 @@ jobs: JDK4PY_CONDA_CHANNEL_USERNAME: ${{ vars.CONDA_CHANNEL_USERNAME }} run: | cd dist/ - ls */jdk4py-*.tar.bz2 | \ + ls */jdk4py-*.conda | \ while read filepath; do echo Uploading ${filepath} curl --fail --user "$JDK4PY_CONDA_CHANNEL_USERNAME":"$JDK4PY_CONDA_CHANNEL_TOKEN" --upload-file ${filepath} "$JDK4PY_CONDA_CHANNEL_URL/$(dirname $filepath)/" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 3b354fd1..e4cbd3ae 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -8,6 +8,7 @@ jobs: name: Test on ${{ matrix.runner }} with Python ${{ matrix.python }} runs-on: ${{ matrix.runner }} strategy: + fail-fast: false matrix: runner: - macos-13 # x64 @@ -24,7 +25,7 @@ jobs: python: "3.12" - runner: ubuntu-24.04 python: "3.13" - fail-fast: false + steps: - uses: actions/checkout@v4 @@ -60,6 +61,7 @@ jobs: name: Test Conda packaging on ${{ matrix.runner }} runs-on: ${{ matrix.runner }} strategy: + fail-fast: false matrix: runner: - macos-13 # x64 @@ -81,4 +83,4 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.tar.bz2 + path: dist/*/jdk4py-*.conda From d59cc430b9dd80d3dcf5265d9988d4e253f971af Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:11:10 -0400 Subject: [PATCH 06/76] fixup! Add support for Python 3.14 --- .github/actions/build-conda-packages/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 5e8f752d..f7f3bca6 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "25.9.0" + conda-build-version: "25.5.0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} From c9891c6a08e51e332bfdbf668a498a57e28f8ee3 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 10:19:06 -0400 Subject: [PATCH 07/76] fixup! Add support for Python 3.14 --- .github/workflows/test.yaml | 2 ++ conda.recipe/conda_build_config.yaml | 1 + 2 files changed, 3 insertions(+) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e4cbd3ae..11629295 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,6 +25,8 @@ jobs: python: "3.12" - runner: ubuntu-24.04 python: "3.13" + - runner: ubuntu-24.04 + python: "3.14" steps: - uses: actions/checkout@v4 diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 13912bdb..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -3,3 +3,4 @@ python: - "3.11" - "3.12" - "3.13" + - "3.14" From faa1b5066928d48da9566097f1964174629069a9 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 10:21:02 -0400 Subject: [PATCH 08/76] fixup! Add support for Python 3.14 --- pyproject.toml | 2 +- uv.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fc8c1f9c..5f400e56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ dev = [ # Keep in sync with version in `build-system.requires`. "hatchling ==1.27.0", # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on anaconda). - "pytest ==8.4.2", + "pytest ==8.4.1", "ruff", "ty", ] diff --git a/uv.lock b/uv.lock index c8c4ede6..1a1ec4c3 100644 --- a/uv.lock +++ b/uv.lock @@ -65,7 +65,7 @@ dev = [ [package.metadata.requires-dev] dev = [ { name = "hatchling", specifier = "==1.27.0" }, - { name = "pytest", specifier = "==8.4.2" }, + { name = "pytest", specifier = "==8.4.1" }, { name = "ruff" }, { name = "ty" }, ] @@ -108,7 +108,7 @@ wheels = [ [[package]] name = "pytest" -version = "8.4.2" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -119,9 +119,9 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, ] [[package]] From 84bcd3b5caad338e2a8a56ad461135360aaa5b5e Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 10:33:16 -0400 Subject: [PATCH 09/76] fixup! Add support for Python 3.14 --- .github/workflows/deployment.yaml | 5 ++--- .github/workflows/test.yaml | 10 ++++------ pyproject.toml | 2 +- uv.lock | 8 ++++---- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index f27f02ca..1be3c3a9 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -11,11 +11,10 @@ jobs: strategy: matrix: runner: - - macos-13 # x64 - - macos-14 # arm64 + - macos-26 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2022 + - windows-2025 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 11629295..1e4ae7dc 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -11,11 +11,10 @@ jobs: fail-fast: false matrix: runner: - - macos-13 # x64 - - macos-14 # arm64 + - macos-26 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2022 + - windows-2025 python: - "3.10" include: @@ -66,11 +65,10 @@ jobs: fail-fast: false matrix: runner: - - macos-13 # x64 - - macos-14 # arm64 + - macos-26 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2022 + - windows-2025 steps: - uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index 5f400e56..fc8c1f9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ dev = [ # Keep in sync with version in `build-system.requires`. "hatchling ==1.27.0", # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on anaconda). - "pytest ==8.4.1", + "pytest ==8.4.2", "ruff", "ty", ] diff --git a/uv.lock b/uv.lock index 1a1ec4c3..c8c4ede6 100644 --- a/uv.lock +++ b/uv.lock @@ -65,7 +65,7 @@ dev = [ [package.metadata.requires-dev] dev = [ { name = "hatchling", specifier = "==1.27.0" }, - { name = "pytest", specifier = "==8.4.1" }, + { name = "pytest", specifier = "==8.4.2" }, { name = "ruff" }, { name = "ty" }, ] @@ -108,7 +108,7 @@ wheels = [ [[package]] name = "pytest" -version = "8.4.1" +version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -119,9 +119,9 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, ] [[package]] From 0e2865d9a702b5a365042fd0e20b06dbb8fadd03 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 11:03:32 -0400 Subject: [PATCH 10/76] Try uv_build backend --- conda.recipe/meta.yaml | 3 +- hatch_build.py | 75 ----------------------------------------- pyproject.toml | 20 ++++------- src/jdk4py/__init__.py | 5 ++- src/jdk4py/version.json | 1 - uv.lock | 65 ++++++++++++++++------------------- 6 files changed, 39 insertions(+), 130 deletions(-) delete mode 100644 hatch_build.py delete mode 100644 src/jdk4py/version.json diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 61f3ee97..92fbcaf0 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -1,10 +1,9 @@ {% set pyproject = load_file_data("pyproject.toml") %} {% set dev_dependencies = pyproject["dependency-groups"]["dev"] %} -{% set version = load_file_data("src/jdk4py/version.json") %} package: name: {{ pyproject["project"]["name"] }} - version: {{ version }} + version: {{ pyproject["project"]["version"] }} source: path: ../ diff --git a/hatch_build.py b/hatch_build.py deleted file mode 100644 index 98e33584..00000000 --- a/hatch_build.py +++ /dev/null @@ -1,75 +0,0 @@ -import json -import platform -from pathlib import Path -from typing import Literal - -from hatchling.builders.config import BuilderConfigBound -from hatchling.builders.hooks.plugin.interface import BuildHookInterface -from hatchling.metadata.plugin.interface import MetadataHookInterface - -_PROJECT_DIRECTORY = Path(__file__).parent - - -_Architecture = Literal["arm64", "x64"] - - -def _get_architecture(machine: str) -> _Architecture: - match machine.lower(): - case "amd64" | "x64" | "x86_64": - return "x64" - case "aarch64" | "arm64": - return "arm64" - case _: - raise ValueError(f"Unsupported machine: `{machine}`.") - - -def _get_platform_tag(system: str, architecture: _Architecture) -> str: # ty: ignore[invalid-return-type] incorrect `Function can implicitly return None`. - # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. - match system.lower(): - case "darwin": - match architecture: - case "arm64": - return "macosx_11_0_arm64" - case "x64": - return "macosx_10_9_x86_64" - case "linux": - match architecture: - case "arm64": - return "manylinux_2_17_aarch64" - case "x64": - return "manylinux_2_17_x86_64" - case "windows": - match architecture: - case "x64": - return "win_amd64" - case _: - raise ValueError( - f"Unsupported {system} architecture: `{architecture}`.", - ) - case _: - raise ValueError(f"Unsupported system: `{system}`.") - - -class BuildHook(BuildHookInterface[BuilderConfigBound]): - def initialize( - self, - version: str, # noqa: ARG002 - build_data: dict[str, object], - ) -> None: - python_tag = "py3" - abi_tag = "none" - - system = platform.system() - architecture = _get_architecture(platform.machine()) - platform_tag = _get_platform_tag(system, architecture) - - build_data["tag"] = f"{python_tag}-{abi_tag}-{platform_tag}" - - -class MetadataHook(MetadataHookInterface): - def update(self, metadata: dict[str, object]) -> None: - version = json.loads( - (_PROJECT_DIRECTORY / "src" / "jdk4py" / "version.json").read_bytes(), - ) - assert isinstance(version, str) - metadata["version"] = version diff --git a/pyproject.toml b/pyproject.toml index fc8c1f9c..80d5404f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,15 +1,15 @@ [build-system] -build-backend = "hatchling.build" +build-backend = "uv_build" requires = [ # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). - # Keep in sync with version in `tool.uv.dev-dependencies`. - "hatchling ==1.27.0", + # Keep in sync with `dependency-groups.dev.uv-build`. + "uv-build ==0.8.24", ] [dependency-groups] dev = [ - # Keep in sync with version in `build-system.requires`. - "hatchling ==1.27.0", + # Keep in sync with `build-system.requires.uv-build` and `tool.uv.required-version`. + "uv-build ==0.8.24", # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on anaconda). "pytest ==8.4.2", "ruff", @@ -28,22 +28,15 @@ classifiers = [ ] dependencies = [] description = "A JDK shipped in a Python package" -dynamic = ["version"] keywords = ["jdk", "java", "jvm", "jre"] name = "jdk4py" readme = "README.md" requires-python = ">=3.10" +version = "21.0.8.0" [project.urls] Repository = "https://github.com/activeviam/jdk4py" -[tool.hatch.build.hooks.custom] - -[tool.hatch.metadata.hooks.custom] - -[tool.hatch.build.targets.wheel] -artifacts = ["java-runtime"] - [tool.pytest.ini_options] filterwarnings = ["error"] @@ -73,5 +66,6 @@ error-on-warning = true [tool.uv] # Keep pinned to ensure same version is used on CI. +# Keep in sync with `dependency-groups.dev.uv-build`. required-version = "==0.8.24" trusted-publishing = "always" diff --git a/src/jdk4py/__init__.py b/src/jdk4py/__init__.py index d612f59f..5406ec3f 100644 --- a/src/jdk4py/__init__.py +++ b/src/jdk4py/__init__.py @@ -1,6 +1,6 @@ """JDK packaged for Python.""" -import json +from importlib.metadata import version as _version from pathlib import Path _PACKAGE_DIRECTORY = Path(__file__).parent @@ -8,7 +8,6 @@ JAVA_HOME = _PACKAGE_DIRECTORY / "java-runtime" JAVA = JAVA_HOME / "bin" / "java" -_VERSION = json.loads((_PACKAGE_DIRECTORY / "version.json").read_bytes()) -assert isinstance(_VERSION, str) +_VERSION = _version("jdk4py") _MAJOR, _MINOR, _PATCH = tuple(int(number) for number in _VERSION.split(".")[:3]) JAVA_VERSION = _MAJOR, _MINOR, _PATCH diff --git a/src/jdk4py/version.json b/src/jdk4py/version.json deleted file mode 100644 index 2dd4fd5d..00000000 --- a/src/jdk4py/version.json +++ /dev/null @@ -1 +0,0 @@ -"21.0.8.0" diff --git a/uv.lock b/uv.lock index c8c4ede6..0f320639 100644 --- a/uv.lock +++ b/uv.lock @@ -23,22 +23,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, ] -[[package]] -name = "hatchling" -version = "1.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "pathspec" }, - { name = "pluggy" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "trove-classifiers" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/8a/cc1debe3514da292094f1c3a700e4ca25442489731ef7c0814358816bb03/hatchling-1.27.0.tar.gz", hash = "sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6", size = 54983, upload-time = "2024-12-15T17:08:11.894Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl", hash = "sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b", size = 75794, upload-time = "2024-12-15T17:08:10.364Z" }, -] - [[package]] name = "iniconfig" version = "2.1.0" @@ -50,24 +34,25 @@ wheels = [ [[package]] name = "jdk4py" +version = "21.0.8.0" source = { editable = "." } [package.dev-dependencies] dev = [ - { name = "hatchling" }, { name = "pytest" }, { name = "ruff" }, { name = "ty" }, + { name = "uv-build" }, ] [package.metadata] [package.metadata.requires-dev] dev = [ - { name = "hatchling", specifier = "==1.27.0" }, { name = "pytest", specifier = "==8.4.2" }, { name = "ruff" }, { name = "ty" }, + { name = "uv-build", specifier = "==0.8.24" }, ] [[package]] @@ -79,15 +64,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, -] - [[package]] name = "pluggy" version = "1.6.0" @@ -189,15 +165,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, ] -[[package]] -name = "trove-classifiers" -version = "2025.9.11.17" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/9a/778622bc06632529817c3c524c82749a112603ae2bbcf72ee3eb33a2c4f1/trove_classifiers-2025.9.11.17.tar.gz", hash = "sha256:931ca9841a5e9c9408bc2ae67b50d28acf85bef56219b56860876dd1f2d024dd", size = 16975, upload-time = "2025-09-11T17:07:50.97Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/85/a4ff8758c66f1fc32aa5e9a145908394bf9cf1c79ffd1113cfdeb77e74e4/trove_classifiers-2025.9.11.17-py3-none-any.whl", hash = "sha256:5d392f2d244deb1866556457d6f3516792124a23d1c3a463a2e8668a5d1c15dd", size = 14158, upload-time = "2025-09-11T17:07:49.886Z" }, -] - [[package]] name = "ty" version = "0.0.1a21" @@ -231,3 +198,29 @@ sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac8 wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] + +[[package]] +name = "uv-build" +version = "0.8.24" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/50/60/6d96c3dd49223156b7f7b7eb4b79f94727cb529806b2c086f75d4dfb7ca6/uv_build-0.8.24.tar.gz", hash = "sha256:02e1256ac4524b06319a7fbfa30aa4959d9ef0b63076a959cce20a588448def8", size = 332743, upload-time = "2025-10-07T03:33:37.84Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/da/e2815ee817cce13adc0ee94174361942132a780eae96074ff4f1aa78af77/uv_build-0.8.24-py3-none-linux_armv6l.whl", hash = "sha256:7c5eec2e8c0a3fec23030a0c99a4e5516927651d9c12cefe155899dc317fcb3c", size = 1400629, upload-time = "2025-10-07T03:33:09.578Z" }, + { url = "https://files.pythonhosted.org/packages/81/1c/72a5b177e0ce5f7e0ea9752337d361514c8b8cddee9b430cb2b3fa4d51d8/uv_build-0.8.24-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ebe16ab8e7e4703ca3cc46054e5d77736c9ac90878113b16db1ad7cdbfa46a2f", size = 1376572, upload-time = "2025-10-07T03:33:11.587Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/205838c393a03583fad827e80db99325f95d04343db4583503e25c646ca2/uv_build-0.8.24-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8934344a7a77ae8c5fe879068acf480836be0085319249b8baa4ca410e3d60f2", size = 1252607, upload-time = "2025-10-07T03:33:13.029Z" }, + { url = "https://files.pythonhosted.org/packages/ce/fb/fd874383bf4344cff69a242ccd8fc8c653107b8630b17d4853fb08caa8c6/uv_build-0.8.24-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:2f3caa27c2a3d453e8e93126361e4d3096d58cea5fb1793e997c603bb93cbee9", size = 1452060, upload-time = "2025-10-07T03:33:14.607Z" }, + { url = "https://files.pythonhosted.org/packages/9c/27/a27126938ba0f0ad87b56780d520aa5c16b74b6397c7e41da5ff7d058113/uv_build-0.8.24-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:791e2cca4ab4ea4d3c6326c90acd4568e6b9f7442014d631326657439f125e8f", size = 1357488, upload-time = "2025-10-07T03:33:15.972Z" }, + { url = "https://files.pythonhosted.org/packages/f2/79/385bba1d35b697eeab3275d5e557f30200bd82f8c853fa333118efbd533d/uv_build-0.8.24-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcc3a4d4f1d20d77b9e2f5f7a6e06ab6998987b0bdf65f0f5f933d04596fcb82", size = 1516472, upload-time = "2025-10-07T03:33:19.872Z" }, + { url = "https://files.pythonhosted.org/packages/23/3e/42943ac4b7adf098bbf9e58dcc0541fbaa5edfd0b6dc8279cfeba900b5d2/uv_build-0.8.24-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:83d970f16cba618d05e38e7aa21119db52349cc8afc5dd65105ef203b6cf6b87", size = 1680247, upload-time = "2025-10-07T03:33:21.171Z" }, + { url = "https://files.pythonhosted.org/packages/4f/73/16d52711ea264c368b1a0d446660cd7511367e3751730f5a5da81a038acf/uv_build-0.8.24-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0014ca61e8ab87fc3470eaef5ee10b675d9bd313ba4dbae2af71d1c0ec96617", size = 1578223, upload-time = "2025-10-07T03:33:22.293Z" }, + { url = "https://files.pythonhosted.org/packages/25/7f/207f103a661c7832d124861dccb7e19b0a6d2f030877a3b68efb34bb5bb4/uv_build-0.8.24-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:893549c7df3fd136f039aa513cfd45f993428afa5b6d288289d994cea716929c", size = 1510195, upload-time = "2025-10-07T03:33:23.779Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8a/d39f196478740efaae423fe9f333c030c97ade09a946eddb026f0b8145b5/uv_build-0.8.24-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba86a9a88d02e923f927eecf26f896548bf0a890118c3f00a915a5906b05f38", size = 1492956, upload-time = "2025-10-07T03:33:24.954Z" }, + { url = "https://files.pythonhosted.org/packages/0f/53/8d53835e696c0aeb1d92ab07eeb06ee68a945a5f8ef30fa85f0bd2be00c2/uv_build-0.8.24-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:b761651d20e36369bfced14f02e9c4b2ee830897ac54fdb39b22d86bd7fe3ae7", size = 1453349, upload-time = "2025-10-07T03:33:27.996Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/d11c60861b26d0f863d4fc556e846780823415a64708f18e4b50bd1002ac/uv_build-0.8.24-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a6799918b553589e5881cbbc8896e2cddc057554dcb83c92b76dcfef80da8035", size = 1464477, upload-time = "2025-10-07T03:33:29.101Z" }, + { url = "https://files.pythonhosted.org/packages/27/ad/dd19f12d08eb8790a4db3a3eb039b21888a61b0feb6098ce9f2d2ab37956/uv_build-0.8.24-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:21371860b6ed71dd55efc2cb1f3f98cff2d6d53fca7e0fe920465274ca062230", size = 1373709, upload-time = "2025-10-07T03:33:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/8e/d5/c31ef7fa3ca29c7f192b206c2f5f158a5564370562ed8da1e9aa55a3eaa3/uv_build-0.8.24-py3-none-musllinux_1_1_i686.whl", hash = "sha256:febea2a2d2ddd6bb912cedc2c33ee72d842c7b5134b8614596c0e24d9f7e038a", size = 1472392, upload-time = "2025-10-07T03:33:31.866Z" }, + { url = "https://files.pythonhosted.org/packages/80/04/7e0de2d6596623ff2cdb39c7b5f79dffe481568f9f0af4abe2fcd21f5875/uv_build-0.8.24-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:bc132f28f76e4f047afa05b39149ea7bb63e591303150581f4ccbb7a215bda23", size = 1551547, upload-time = "2025-10-07T03:33:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f1/4032a560c8d67edf3e4c8da7ca364da31e65b22e0b8c71f52a093dbaf260/uv_build-0.8.24-py3-none-win32.whl", hash = "sha256:327af1cda22f00a9f3659c6417d68ee9d60a6c2be627e2e9e5ddd29396ae8eef", size = 1332540, upload-time = "2025-10-07T03:33:34.121Z" }, + { url = "https://files.pythonhosted.org/packages/02/5a/1488c6c9addcdbe6ba417813224a8fa2fdae09f6e7241bb27a687c4e6667/uv_build-0.8.24-py3-none-win_amd64.whl", hash = "sha256:9072ff0dacf6ebfb9fed394e181ebd26cb2a16dc95697da8316b3eab49f76cc3", size = 1414396, upload-time = "2025-10-07T03:33:35.475Z" }, + { url = "https://files.pythonhosted.org/packages/bd/88/4ce31b1eee35dc2db6b49dd0f7506fab187a4f96de29a4ed6777166eecf8/uv_build-0.8.24-py3-none-win_arm64.whl", hash = "sha256:81840c4b00a8b7261998e059610f868ee8ef2794a9435c9e264caa9e2f6623d4", size = 1322987, upload-time = "2025-10-07T03:33:36.601Z" }, +] From 9f533f04d916708b9d4e22b1ec1a611f11622aa6 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 11:21:31 -0400 Subject: [PATCH 11/76] fixup! Try uv_build backend --- conda.recipe/meta.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 92fbcaf0..8781c4e2 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -17,7 +17,7 @@ requirements: build: - python {{ python }} - pip ==25.2 - {% for dependency in dev_dependencies if dependency.startswith("hatchling ") %} + {% for dependency in dev_dependencies if dependency.startswith("uv-build ") %} - {{ dependency }} {% endfor %} run: From 1b95919d693c802fffec5dbd9392356463ddac68 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 14:38:09 -0400 Subject: [PATCH 12/76] fixup! Try uv_build backend --- .github/actions/build-wheel/action.yaml | 17 +++++++++++++++++ .github/workflows/deployment.yaml | 2 +- .github/workflows/test.yaml | 2 +- pyproject.toml | 2 ++ uv.lock | 11 +++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 .github/actions/build-wheel/action.yaml diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-wheel/action.yaml new file mode 100644 index 00000000..ef463eec --- /dev/null +++ b/.github/actions/build-wheel/action.yaml @@ -0,0 +1,17 @@ +# Remove this action and inline the first step once https://github.com/astral-sh/uv/issues/14827 is closed. +name: Build Python wheel +description: Build platform-specific Python wheel +runs: + using: composite + steps: + - run: uv build --wheel + shell: bash + + - run: echo ${{ runner.arch }} + shell: bash + + - run: uv run python -m wheel tags --platform-tag ${{ env.JDK4PY_PLATFORM_TAG }} --remove dist/*-py3-none-any.whl + env: + # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. + JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && 'manylinux_2_17_x86_64')) || '' }} + shell: bash diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 1be3c3a9..5be811f8 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -22,7 +22,7 @@ jobs: with: python-version: "3.10" - - run: uv build --wheel + - uses: ./.github/actions/build-wheel - uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 1e4ae7dc..fb69e298 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -34,7 +34,7 @@ jobs: with: python-version: ${{ matrix.python}} - - run: uv build --wheel + - uses: ./.github/actions/build-wheel # No need to test each platform and Python version. - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} diff --git a/pyproject.toml b/pyproject.toml index 80d5404f..a467e433 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,8 @@ dev = [ "pytest ==8.4.2", "ruff", "ty", + # Remove once https://github.com/astral-sh/uv/issues/14827 is closed. + "wheel", ] [project] diff --git a/uv.lock b/uv.lock index 0f320639..5c74f928 100644 --- a/uv.lock +++ b/uv.lock @@ -43,6 +43,7 @@ dev = [ { name = "ruff" }, { name = "ty" }, { name = "uv-build" }, + { name = "wheel" }, ] [package.metadata] @@ -53,6 +54,7 @@ dev = [ { name = "ruff" }, { name = "ty" }, { name = "uv-build", specifier = "==0.8.24" }, + { name = "wheel" }, ] [[package]] @@ -224,3 +226,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/02/5a/1488c6c9addcdbe6ba417813224a8fa2fdae09f6e7241bb27a687c4e6667/uv_build-0.8.24-py3-none-win_amd64.whl", hash = "sha256:9072ff0dacf6ebfb9fed394e181ebd26cb2a16dc95697da8316b3eab49f76cc3", size = 1414396, upload-time = "2025-10-07T03:33:35.475Z" }, { url = "https://files.pythonhosted.org/packages/bd/88/4ce31b1eee35dc2db6b49dd0f7506fab187a4f96de29a4ed6777166eecf8/uv_build-0.8.24-py3-none-win_arm64.whl", hash = "sha256:81840c4b00a8b7261998e059610f868ee8ef2794a9435c9e264caa9e2f6623d4", size = 1322987, upload-time = "2025-10-07T03:33:36.601Z" }, ] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, +] From 7b79230c55f925a75ef5efaf0baf9f03af33a688 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 14:39:21 -0400 Subject: [PATCH 13/76] fixup! Try uv_build backend --- .github/actions/build-wheel/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-wheel/action.yaml index ef463eec..3bbfb47f 100644 --- a/.github/actions/build-wheel/action.yaml +++ b/.github/actions/build-wheel/action.yaml @@ -13,5 +13,5 @@ runs: - run: uv run python -m wheel tags --platform-tag ${{ env.JDK4PY_PLATFORM_TAG }} --remove dist/*-py3-none-any.whl env: # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. - JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && 'manylinux_2_17_x86_64')) || '' }} + JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && 'manylinux_2_17_x86_64') || '' }} shell: bash From 92fbfc1f2a3159058aae96cb94f43abcd0aabcca Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 14:51:32 -0400 Subject: [PATCH 14/76] fixup! Try uv_build backend --- .github/actions/build-wheel/action.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-wheel/action.yaml index 3bbfb47f..13f58943 100644 --- a/.github/actions/build-wheel/action.yaml +++ b/.github/actions/build-wheel/action.yaml @@ -7,11 +7,8 @@ runs: - run: uv build --wheel shell: bash - - run: echo ${{ runner.arch }} - shell: bash - - run: uv run python -m wheel tags --platform-tag ${{ env.JDK4PY_PLATFORM_TAG }} --remove dist/*-py3-none-any.whl env: # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. - JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && 'manylinux_2_17_x86_64') || '' }} + JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && runner.arch == 'ARM64' && 'manylinux_2_17_aarch64' || (runner.os == 'Linux' && runner.arch == 'X64' && 'manylinux_2_17_x86_64') || (runner.os == 'macOS' && runner.arch == 'ARM64' && 'macosx_11_0_arm64') || (runner.os == 'Windows' && runner.arch == 'X64' && 'win_amd64') || '' }} shell: bash From 5bfbd73c3ff626e943258692c5212c847b514b77 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:03:03 -0400 Subject: [PATCH 15/76] fixup! Try uv_build backend --- .github/actions/build-wheel/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-wheel/action.yaml index 13f58943..6e275df3 100644 --- a/.github/actions/build-wheel/action.yaml +++ b/.github/actions/build-wheel/action.yaml @@ -10,5 +10,5 @@ runs: - run: uv run python -m wheel tags --platform-tag ${{ env.JDK4PY_PLATFORM_TAG }} --remove dist/*-py3-none-any.whl env: # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. - JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && runner.arch == 'ARM64' && 'manylinux_2_17_aarch64' || (runner.os == 'Linux' && runner.arch == 'X64' && 'manylinux_2_17_x86_64') || (runner.os == 'macOS' && runner.arch == 'ARM64' && 'macosx_11_0_arm64') || (runner.os == 'Windows' && runner.arch == 'X64' && 'win_amd64') || '' }} + JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && runner.arch == 'ARM64' && 'manylinux_2_17_aarch64') || (runner.os == 'Linux' && runner.arch == 'X64' && 'manylinux_2_17_x86_64') || (runner.os == 'macOS' && runner.arch == 'ARM64' && 'macosx_11_0_arm64') || (runner.os == 'Windows' && runner.arch == 'X64' && 'win_amd64') || '' }} shell: bash From 66fb47a6623a65228258c30b9a907d4bd3fefae5 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:22:56 -0400 Subject: [PATCH 16/76] fixup! Try uv_build backend --- .../actions/build-conda-packages/action.yaml | 3 +- conda.recipe/bld.bat | 2 +- conda.recipe/build.sh | 2 +- conda.recipe/meta.yaml | 2 +- pyproject.toml | 12 +- src/jdk4py/__init__.py | 10 +- uv.lock | 196 +++++++++--------- 7 files changed, 120 insertions(+), 107 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index f7f3bca6..05cbeb79 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,8 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "25.5.0" + conda-build-version: "25.9.0" + miniforge-version: "25.3.1-0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} diff --git a/conda.recipe/bld.bat b/conda.recipe/bld.bat index 8e80d845..634cc801 100644 --- a/conda.recipe/bld.bat +++ b/conda.recipe/bld.bat @@ -1,2 +1,2 @@ -python -m pip install --verbose . +uv pip install --verbose . if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh index 8de0314a..20bd0011 100644 --- a/conda.recipe/build.sh +++ b/conda.recipe/build.sh @@ -1 +1 @@ -python -m pip install --verbose . +uv pip install --verbose . diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 8781c4e2..eecb7083 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -16,7 +16,7 @@ build: requirements: build: - python {{ python }} - - pip ==25.2 + - uv {{ pyproject["tool"]["uv"]["required-version"] }} {% for dependency in dev_dependencies if dependency.startswith("uv-build ") %} - {{ dependency }} {% endfor %} diff --git a/pyproject.toml b/pyproject.toml index a467e433..5d8a427a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,16 +1,16 @@ [build-system] build-backend = "uv_build" requires = [ - # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). + # Keep pinned to ensure same version is used by `conda build` (version must be available on conda-forge). # Keep in sync with `dependency-groups.dev.uv-build`. - "uv-build ==0.8.24", + "uv-build ==0.9.1", ] [dependency-groups] dev = [ # Keep in sync with `build-system.requires.uv-build` and `tool.uv.required-version`. - "uv-build ==0.8.24", - # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on anaconda). + "uv-build ==0.9.1", + # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on conda-forge). "pytest ==8.4.2", "ruff", "ty", @@ -67,7 +67,7 @@ unused-ignore-comment = "warn" error-on-warning = true [tool.uv] -# Keep pinned to ensure same version is used on CI. +# Keep pinned to ensure same version is used on CI (version must be available on conda-forge). # Keep in sync with `dependency-groups.dev.uv-build`. -required-version = "==0.8.24" +required-version = "==0.9.1" trusted-publishing = "always" diff --git a/src/jdk4py/__init__.py b/src/jdk4py/__init__.py index 5406ec3f..2584d0e5 100644 --- a/src/jdk4py/__init__.py +++ b/src/jdk4py/__init__.py @@ -1,13 +1,15 @@ """JDK packaged for Python.""" from importlib.metadata import version as _version -from pathlib import Path +from pathlib import Path as _Path -_PACKAGE_DIRECTORY = Path(__file__).parent +_PACKAGE_DIRECTORY = _Path(__file__).parent JAVA_HOME = _PACKAGE_DIRECTORY / "java-runtime" JAVA = JAVA_HOME / "bin" / "java" _VERSION = _version("jdk4py") -_MAJOR, _MINOR, _PATCH = tuple(int(number) for number in _VERSION.split(".")[:3]) -JAVA_VERSION = _MAJOR, _MINOR, _PATCH +_JAVA_MAJOR, _JAVA_MINOR, _JAVA_PATCH, _LIB_VERSION = [ + int(number) for number in _VERSION.split(".") +] +JAVA_VERSION = _JAVA_MAJOR, _JAVA_MINOR, _JAVA_PATCH diff --git a/uv.lock b/uv.lock index 5c74f928..3ffeb898 100644 --- a/uv.lock +++ b/uv.lock @@ -53,7 +53,7 @@ dev = [ { name = "pytest", specifier = "==8.4.2" }, { name = "ruff" }, { name = "ty" }, - { name = "uv-build", specifier = "==0.8.24" }, + { name = "uv-build", specifier = "==0.9.1" }, { name = "wheel" }, ] @@ -104,92 +104,102 @@ wheels = [ [[package]] name = "ruff" -version = "0.13.3" +version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/8e/f9f9ca747fea8e3ac954e3690d4698c9737c23b51731d02df999c150b1c9/ruff-0.13.3.tar.gz", hash = "sha256:5b0ba0db740eefdfbcce4299f49e9eaefc643d4d007749d77d047c2bab19908e", size = 5438533, upload-time = "2025-10-02T19:29:31.582Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/b9/9bd84453ed6dd04688de9b3f3a4146a1698e8faae2ceeccce4e14c67ae17/ruff-0.14.0.tar.gz", hash = "sha256:62ec8969b7510f77945df916de15da55311fade8d6050995ff7f680afe582c57", size = 5452071, upload-time = "2025-10-07T18:21:55.763Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/33/8f7163553481466a92656d35dea9331095122bb84cf98210bef597dd2ecd/ruff-0.13.3-py3-none-linux_armv6l.whl", hash = "sha256:311860a4c5e19189c89d035638f500c1e191d283d0cc2f1600c8c80d6dcd430c", size = 12484040, upload-time = "2025-10-02T19:28:49.199Z" }, - { url = "https://files.pythonhosted.org/packages/b0/b5/4a21a4922e5dd6845e91896b0d9ef493574cbe061ef7d00a73c61db531af/ruff-0.13.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2bdad6512fb666b40fcadb65e33add2b040fc18a24997d2e47fee7d66f7fcae2", size = 13122975, upload-time = "2025-10-02T19:28:52.446Z" }, - { url = "https://files.pythonhosted.org/packages/40/90/15649af836d88c9f154e5be87e64ae7d2b1baa5a3ef317cb0c8fafcd882d/ruff-0.13.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fc6fa4637284708d6ed4e5e970d52fc3b76a557d7b4e85a53013d9d201d93286", size = 12346621, upload-time = "2025-10-02T19:28:54.712Z" }, - { url = "https://files.pythonhosted.org/packages/a5/42/bcbccb8141305f9a6d3f72549dd82d1134299177cc7eaf832599700f95a7/ruff-0.13.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c9e6469864f94a98f412f20ea143d547e4c652f45e44f369d7b74ee78185838", size = 12574408, upload-time = "2025-10-02T19:28:56.679Z" }, - { url = "https://files.pythonhosted.org/packages/ce/19/0f3681c941cdcfa2d110ce4515624c07a964dc315d3100d889fcad3bfc9e/ruff-0.13.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bf62b705f319476c78891e0e97e965b21db468b3c999086de8ffb0d40fd2822", size = 12285330, upload-time = "2025-10-02T19:28:58.79Z" }, - { url = "https://files.pythonhosted.org/packages/10/f8/387976bf00d126b907bbd7725219257feea58650e6b055b29b224d8cb731/ruff-0.13.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cc1abed87ce40cb07ee0667ce99dbc766c9f519eabfd948ed87295d8737c60", size = 13980815, upload-time = "2025-10-02T19:29:01.577Z" }, - { url = "https://files.pythonhosted.org/packages/0c/a6/7c8ec09d62d5a406e2b17d159e4817b63c945a8b9188a771193b7e1cc0b5/ruff-0.13.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4fb75e7c402d504f7a9a259e0442b96403fa4a7310ffe3588d11d7e170d2b1e3", size = 14987733, upload-time = "2025-10-02T19:29:04.036Z" }, - { url = "https://files.pythonhosted.org/packages/97/e5/f403a60a12258e0fd0c2195341cfa170726f254c788673495d86ab5a9a9d/ruff-0.13.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17b951f9d9afb39330b2bdd2dd144ce1c1335881c277837ac1b50bfd99985ed3", size = 14439848, upload-time = "2025-10-02T19:29:06.684Z" }, - { url = "https://files.pythonhosted.org/packages/39/49/3de381343e89364c2334c9f3268b0349dc734fc18b2d99a302d0935c8345/ruff-0.13.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6052f8088728898e0a449f0dde8fafc7ed47e4d878168b211977e3e7e854f662", size = 13421890, upload-time = "2025-10-02T19:29:08.767Z" }, - { url = "https://files.pythonhosted.org/packages/ab/b5/c0feca27d45ae74185a6bacc399f5d8920ab82df2d732a17213fb86a2c4c/ruff-0.13.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc742c50f4ba72ce2a3be362bd359aef7d0d302bf7637a6f942eaa763bd292af", size = 13444870, upload-time = "2025-10-02T19:29:11.234Z" }, - { url = "https://files.pythonhosted.org/packages/50/a1/b655298a1f3fda4fdc7340c3f671a4b260b009068fbeb3e4e151e9e3e1bf/ruff-0.13.3-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:8e5640349493b378431637019366bbd73c927e515c9c1babfea3e932f5e68e1d", size = 13691599, upload-time = "2025-10-02T19:29:13.353Z" }, - { url = "https://files.pythonhosted.org/packages/32/b0/a8705065b2dafae007bcae21354e6e2e832e03eb077bb6c8e523c2becb92/ruff-0.13.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6b139f638a80eae7073c691a5dd8d581e0ba319540be97c343d60fb12949c8d0", size = 12421893, upload-time = "2025-10-02T19:29:15.668Z" }, - { url = "https://files.pythonhosted.org/packages/0d/1e/cbe7082588d025cddbb2f23e6dfef08b1a2ef6d6f8328584ad3015b5cebd/ruff-0.13.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6b547def0a40054825de7cfa341039ebdfa51f3d4bfa6a0772940ed351d2746c", size = 12267220, upload-time = "2025-10-02T19:29:17.583Z" }, - { url = "https://files.pythonhosted.org/packages/a5/99/4086f9c43f85e0755996d09bdcb334b6fee9b1eabdf34e7d8b877fadf964/ruff-0.13.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9cc48a3564423915c93573f1981d57d101e617839bef38504f85f3677b3a0a3e", size = 13177818, upload-time = "2025-10-02T19:29:19.943Z" }, - { url = "https://files.pythonhosted.org/packages/9b/de/7b5db7e39947d9dc1c5f9f17b838ad6e680527d45288eeb568e860467010/ruff-0.13.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1a993b17ec03719c502881cb2d5f91771e8742f2ca6de740034433a97c561989", size = 13618715, upload-time = "2025-10-02T19:29:22.527Z" }, - { url = "https://files.pythonhosted.org/packages/28/d3/bb25ee567ce2f61ac52430cf99f446b0e6d49bdfa4188699ad005fdd16aa/ruff-0.13.3-py3-none-win32.whl", hash = "sha256:f14e0d1fe6460f07814d03c6e32e815bff411505178a1f539a38f6097d3e8ee3", size = 12334488, upload-time = "2025-10-02T19:29:24.782Z" }, - { url = "https://files.pythonhosted.org/packages/cf/49/12f5955818a1139eed288753479ba9d996f6ea0b101784bb1fe6977ec128/ruff-0.13.3-py3-none-win_amd64.whl", hash = "sha256:621e2e5812b691d4f244638d693e640f188bacbb9bc793ddd46837cea0503dd2", size = 13455262, upload-time = "2025-10-02T19:29:26.882Z" }, - { url = "https://files.pythonhosted.org/packages/fe/72/7b83242b26627a00e3af70d0394d68f8f02750d642567af12983031777fc/ruff-0.13.3-py3-none-win_arm64.whl", hash = "sha256:9e9e9d699841eaf4c2c798fa783df2fabc680b72059a02ca0ed81c460bc58330", size = 12538484, upload-time = "2025-10-02T19:29:28.951Z" }, + { url = "https://files.pythonhosted.org/packages/3a/4e/79d463a5f80654e93fa653ebfb98e0becc3f0e7cf6219c9ddedf1e197072/ruff-0.14.0-py3-none-linux_armv6l.whl", hash = "sha256:58e15bffa7054299becf4bab8a1187062c6f8cafbe9f6e39e0d5aface455d6b3", size = 12494532, upload-time = "2025-10-07T18:21:00.373Z" }, + { url = "https://files.pythonhosted.org/packages/ee/40/e2392f445ed8e02aa6105d49db4bfff01957379064c30f4811c3bf38aece/ruff-0.14.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:838d1b065f4df676b7c9957992f2304e41ead7a50a568185efd404297d5701e8", size = 13160768, upload-time = "2025-10-07T18:21:04.73Z" }, + { url = "https://files.pythonhosted.org/packages/75/da/2a656ea7c6b9bd14c7209918268dd40e1e6cea65f4bb9880eaaa43b055cd/ruff-0.14.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:703799d059ba50f745605b04638fa7e9682cc3da084b2092feee63500ff3d9b8", size = 12363376, upload-time = "2025-10-07T18:21:07.833Z" }, + { url = "https://files.pythonhosted.org/packages/42/e2/1ffef5a1875add82416ff388fcb7ea8b22a53be67a638487937aea81af27/ruff-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ba9a8925e90f861502f7d974cc60e18ca29c72bb0ee8bfeabb6ade35a3abde7", size = 12608055, upload-time = "2025-10-07T18:21:10.72Z" }, + { url = "https://files.pythonhosted.org/packages/4a/32/986725199d7cee510d9f1dfdf95bf1efc5fa9dd714d0d85c1fb1f6be3bc3/ruff-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e41f785498bd200ffc276eb9e1570c019c1d907b07cfb081092c8ad51975bbe7", size = 12318544, upload-time = "2025-10-07T18:21:13.741Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ed/4969cefd53315164c94eaf4da7cfba1f267dc275b0abdd593d11c90829a3/ruff-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30a58c087aef4584c193aebf2700f0fbcfc1e77b89c7385e3139956fa90434e2", size = 14001280, upload-time = "2025-10-07T18:21:16.411Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ad/96c1fc9f8854c37681c9613d825925c7f24ca1acfc62a4eb3896b50bacd2/ruff-0.14.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f8d07350bc7af0a5ce8812b7d5c1a7293cf02476752f23fdfc500d24b79b783c", size = 15027286, upload-time = "2025-10-07T18:21:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/b3/00/1426978f97df4fe331074baf69615f579dc4e7c37bb4c6f57c2aad80c87f/ruff-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eec3bbbf3a7d5482b5c1f42d5fc972774d71d107d447919fca620b0be3e3b75e", size = 14451506, upload-time = "2025-10-07T18:21:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/9c1cea6e493c0cf0647674cca26b579ea9d2a213b74b5c195fbeb9678e15/ruff-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16b68e183a0e28e5c176d51004aaa40559e8f90065a10a559176713fcf435206", size = 13437384, upload-time = "2025-10-07T18:21:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/29/b4/4cd6a4331e999fc05d9d77729c95503f99eae3ba1160469f2b64866964e3/ruff-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb732d17db2e945cfcbbc52af0143eda1da36ca8ae25083dd4f66f1542fdf82e", size = 13447976, upload-time = "2025-10-07T18:21:28.83Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c0/ac42f546d07e4f49f62332576cb845d45c67cf5610d1851254e341d563b6/ruff-0.14.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:c958f66ab884b7873e72df38dcabee03d556a8f2ee1b8538ee1c2bbd619883dd", size = 13682850, upload-time = "2025-10-07T18:21:31.842Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c4/4b0c9bcadd45b4c29fe1af9c5d1dc0ca87b4021665dfbe1c4688d407aa20/ruff-0.14.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7eb0499a2e01f6e0c285afc5bac43ab380cbfc17cd43a2e1dd10ec97d6f2c42d", size = 12449825, upload-time = "2025-10-07T18:21:35.074Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a8/e2e76288e6c16540fa820d148d83e55f15e994d852485f221b9524514730/ruff-0.14.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c63b2d99fafa05efca0ab198fd48fa6030d57e4423df3f18e03aa62518c565f", size = 12272599, upload-time = "2025-10-07T18:21:38.08Z" }, + { url = "https://files.pythonhosted.org/packages/18/14/e2815d8eff847391af632b22422b8207704222ff575dec8d044f9ab779b2/ruff-0.14.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:668fce701b7a222f3f5327f86909db2bbe99c30877c8001ff934c5413812ac02", size = 13193828, upload-time = "2025-10-07T18:21:41.216Z" }, + { url = "https://files.pythonhosted.org/packages/44/c6/61ccc2987cf0aecc588ff8f3212dea64840770e60d78f5606cd7dc34de32/ruff-0.14.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a86bf575e05cb68dcb34e4c7dfe1064d44d3f0c04bbc0491949092192b515296", size = 13628617, upload-time = "2025-10-07T18:21:44.04Z" }, + { url = "https://files.pythonhosted.org/packages/73/e6/03b882225a1b0627e75339b420883dc3c90707a8917d2284abef7a58d317/ruff-0.14.0-py3-none-win32.whl", hash = "sha256:7450a243d7125d1c032cb4b93d9625dea46c8c42b4f06c6b709baac168e10543", size = 12367872, upload-time = "2025-10-07T18:21:46.67Z" }, + { url = "https://files.pythonhosted.org/packages/41/77/56cf9cf01ea0bfcc662de72540812e5ba8e9563f33ef3d37ab2174892c47/ruff-0.14.0-py3-none-win_amd64.whl", hash = "sha256:ea95da28cd874c4d9c922b39381cbd69cb7e7b49c21b8152b014bd4f52acddc2", size = 13464628, upload-time = "2025-10-07T18:21:50.318Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2a/65880dfd0e13f7f13a775998f34703674a4554906167dce02daf7865b954/ruff-0.14.0-py3-none-win_arm64.whl", hash = "sha256:f42c9495f5c13ff841b1da4cb3c2a42075409592825dada7c5885c2c844ac730", size = 12565142, upload-time = "2025-10-07T18:21:53.577Z" }, ] [[package]] name = "tomli" -version = "2.2.1" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, + { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, + { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, + { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, + { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, + { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, + { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, + { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, + { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, + { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, + { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, + { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, + { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, + { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, + { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, + { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, + { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, + { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] [[package]] name = "ty" -version = "0.0.1a21" +version = "0.0.1a22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/0f/65606ccee2da5a05a3c3362f5233f058e9d29d3c5521697c7ae79545d246/ty-0.0.1a21.tar.gz", hash = "sha256:e941e9a9d1e54b03eeaf9c3197c26a19cf76009fd5e41e16e5657c1c827bd6d3", size = 4263980, upload-time = "2025-09-19T06:54:06.412Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/87/eab73cdc990d1141b60237379975efc0e913bfa0d19083daab0f497444a6/ty-0.0.1a22.tar.gz", hash = "sha256:b20ec5362830a1e9e05654c15e88607fdbb45325ec130a9a364c6dd412ecbf55", size = 4312182, upload-time = "2025-10-10T13:07:15.88Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/7a/c87a42d0a45cfa2d5c06c8d66aa1b243db16dc31b25e545fb0263308523b/ty-0.0.1a21-py3-none-linux_armv6l.whl", hash = "sha256:1f276ceab23a1410aec09508248c76ae0989c67fb7a0c287e0d4564994295531", size = 8421116, upload-time = "2025-09-19T06:53:35.029Z" }, - { url = "https://files.pythonhosted.org/packages/99/c2/721bf4fa21c84d4cdae0e57a06a88e7e64fc2dca38820232bd6cbeef644f/ty-0.0.1a21-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3c3bc66fcae41eff133cfe326dd65d82567a2fb5d4efe2128773b10ec2766819", size = 8512556, upload-time = "2025-09-19T06:53:37.455Z" }, - { url = "https://files.pythonhosted.org/packages/6c/58/b0585d9d61673e864a87e95760dfa2a90ac15702e7612ab064d354f6752a/ty-0.0.1a21-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cc0880ec344fbdf736b05d8d0da01f0caaaa02409bd9a24b68d18d0127a79b0e", size = 8109188, upload-time = "2025-09-19T06:53:39.469Z" }, - { url = "https://files.pythonhosted.org/packages/ea/08/edf7b59ba24bb1a1af341207fc5a0106eb1fe4264c1d7fb672c171dd2daf/ty-0.0.1a21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:334d2a212ebf42a0e55d57561926af7679fe1e878175e11dcb81ad8df892844e", size = 8279000, upload-time = "2025-09-19T06:53:41.309Z" }, - { url = "https://files.pythonhosted.org/packages/05/8e/4b5e562623e0aa24a3972510287b4bc5d98251afb353388d14008ea99954/ty-0.0.1a21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a8c769987d00fbc33054ff7e342633f475ea10dc43bc60fb9fb056159d48cb90", size = 8243261, upload-time = "2025-09-19T06:53:42.736Z" }, - { url = "https://files.pythonhosted.org/packages/c3/09/6476fa21f9962d5b9c8e8053fd0442ed8e3ceb7502e39700ab1935555199/ty-0.0.1a21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:218d53e7919e885bd98e9196d9cb952d82178b299aa36da6f7f39333eb7400ed", size = 9150228, upload-time = "2025-09-19T06:53:44.242Z" }, - { url = "https://files.pythonhosted.org/packages/d2/96/49c158b6255fc1e22a5701c38f7d4c1b7f8be17a476ce9226fcae82a7b36/ty-0.0.1a21-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:84243455f295ed850bd53f7089819321807d4e6ee3b1cbff6086137ae0259466", size = 9628323, upload-time = "2025-09-19T06:53:45.998Z" }, - { url = "https://files.pythonhosted.org/packages/f4/65/37a8a5cb7b3254365c54b5e10f069e311c4252ed160b86fabd1203fbca5c/ty-0.0.1a21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87a200c21e02962e8a27374d9d152582331d57d709672431be58f4f898bf6cad", size = 9251233, upload-time = "2025-09-19T06:53:48.042Z" }, - { url = "https://files.pythonhosted.org/packages/a3/30/5b06120747da4a0f0bc54a4b051b42172603033dbee0bcf51bce7c21ada9/ty-0.0.1a21-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be8f457d7841b7ead2a3f6b65ba668abc172a1150a0f1f6c0958af3725dbb61a", size = 8996186, upload-time = "2025-09-19T06:53:49.753Z" }, - { url = "https://files.pythonhosted.org/packages/af/fc/5aa122536b1acb57389f404f6328c20342242b78513a60459fee9b7d6f27/ty-0.0.1a21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1474d883129bb63da3b2380fc7ead824cd3baf6a9551e6aa476ffefc58057af3", size = 8722848, upload-time = "2025-09-19T06:53:51.566Z" }, - { url = "https://files.pythonhosted.org/packages/3a/c1/456dcc65a149df8410b1d75f0197a31d4beef74b7bb44cce42b03bf074e8/ty-0.0.1a21-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0efba2e52b58f536f4198ba5c4a36cac2ba67d83ec6f429ebc7704233bcda4c3", size = 8220727, upload-time = "2025-09-19T06:53:53.753Z" }, - { url = "https://files.pythonhosted.org/packages/a4/86/b37505d942cd68235be5be407e43e15afa36669aaa2db9b6e5b43c1d9f91/ty-0.0.1a21-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5dfc73299d441cc6454e36ed0a976877415024143dfca6592dc36f7701424383", size = 8279114, upload-time = "2025-09-19T06:53:55.343Z" }, - { url = "https://files.pythonhosted.org/packages/55/fe/0d9816f36d258e6b2a3d7518421be17c68954ea9a66b638de49588cc2e27/ty-0.0.1a21-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba13d03b9e095216ceb4e4d554a308517f28ab0a6e4dcd07cfe94563e4c2c489", size = 8701798, upload-time = "2025-09-19T06:53:57.17Z" }, - { url = "https://files.pythonhosted.org/packages/4e/7a/70539932e3e5a36c54bd5432ff44ed0c301c41a528365d8de5b8f79f4317/ty-0.0.1a21-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:9463cac96b8f1bb5ba740fe1d42cd6bd152b43c5b159b2f07f8fd629bcdded34", size = 8872676, upload-time = "2025-09-19T06:53:59.357Z" }, - { url = "https://files.pythonhosted.org/packages/ea/94/809d85f6982841fe28526ace3b282b0458d0a96bbc6b1a982d9269a5e481/ty-0.0.1a21-py3-none-win32.whl", hash = "sha256:ecf41706b803827b0de8717f32a434dad1e67be9f4b8caf403e12013179ea06a", size = 8003866, upload-time = "2025-09-19T06:54:01.393Z" }, - { url = "https://files.pythonhosted.org/packages/50/16/b3e914cec2a6344d2c30d3780ca6ecd39667173611f8776cecfd1294eab9/ty-0.0.1a21-py3-none-win_amd64.whl", hash = "sha256:7505aeb8bf2a62f00f12cfa496f6c965074d75c8126268776565284c8a12d5dd", size = 8675300, upload-time = "2025-09-19T06:54:02.893Z" }, - { url = "https://files.pythonhosted.org/packages/16/0b/293be6bc19f6da5e9b15e615a7100504f307dd4294d2c61cee3de91198e5/ty-0.0.1a21-py3-none-win_arm64.whl", hash = "sha256:21f708d02b6588323ffdbfdba38830dd0ecfd626db50aa6006b296b5470e52f9", size = 8193800, upload-time = "2025-09-19T06:54:04.583Z" }, + { url = "https://files.pythonhosted.org/packages/4d/30/83e2dbfbc70de8a1932b19daf05ce803d7d76cdc6251de1519a49cf1c27d/ty-0.0.1a22-py3-none-linux_armv6l.whl", hash = "sha256:6efba0c777881d2d072fa7375a64ad20357e825eff2a0b6ff9ec80399a04253b", size = 8581795, upload-time = "2025-10-10T13:06:44.396Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8c/5193534fc4a3569f517408828d077b26d6280fe8c2dd0bdc63db4403dcdb/ty-0.0.1a22-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2ada020eebe1b44403affdf45cd5c8d3fb8312c3e80469d795690093c0921f55", size = 8682602, upload-time = "2025-10-10T13:06:46.44Z" }, + { url = "https://files.pythonhosted.org/packages/22/4a/7ba53493bf37b61d3e0dfe6df910e6bc74c40d16c3effd84e15c0863d34e/ty-0.0.1a22-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ed4f11f1a5824ea10d3e46b1990d092c3f341b1d492c357d23bed2ac347fd253", size = 8278839, upload-time = "2025-10-10T13:06:48.688Z" }, + { url = "https://files.pythonhosted.org/packages/52/0a/d9862c41b9615de56d2158bfbb5177dbf5a65e94922d3dd13855f48cb91b/ty-0.0.1a22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56f48d8f94292909d596dbeb56ff7f9f070bd316aa628b45c02ca2b2f5797f31", size = 8421483, upload-time = "2025-10-10T13:06:50.75Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cb/3ebe0e45b80724d4c2f849fdf304179727fd06df7fee7cd12fe6c3efe49d/ty-0.0.1a22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:733e9ac22885b6574de26bdbae439c960a06acc825a938d3780c9d498bb65339", size = 8419225, upload-time = "2025-10-10T13:06:52.533Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b5/da65f3f8ad31d881ca9987a3f6f26069a0cc649c9354adb7453ca62116bb/ty-0.0.1a22-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5135d662484e56809c77b3343614005585caadaa5c1cf643ed6a09303497652b", size = 9352336, upload-time = "2025-10-10T13:06:54.476Z" }, + { url = "https://files.pythonhosted.org/packages/a3/24/9c46f2eb16734ab0fcf3291486b1c5c528a1569f94541dc1f19f97dd2a5b/ty-0.0.1a22-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87f297f99a98154d33a3f21991979418c65d8bf480f6a1bad1e54d46d2dc7df7", size = 9857840, upload-time = "2025-10-10T13:06:56.514Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ae/930c94bbbe5c049eae5355a197c39522844f55c7ab7fccd0ba061f618541/ty-0.0.1a22-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3310217eaa4dccf20b7336fcbeb072097addc6fde0c9d3f791dea437af0aa6dc", size = 9452611, upload-time = "2025-10-10T13:06:58.154Z" }, + { url = "https://files.pythonhosted.org/packages/a2/80/d8f594438465c352cf0ebd4072f5ca3be2871153a3cd279ed2f35ecd487c/ty-0.0.1a22-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12b032e81012bf5228fd65f01b50e29eb409534b6aac28ee5c48ee3b7b860ddf", size = 9214875, upload-time = "2025-10-10T13:06:59.861Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/f852fb20ac27707de495c39a02aeb056e3368833b7e12888d43b1f61594d/ty-0.0.1a22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3ffda8149cab0000a21e7a078142073e27a1a9ac03b9a0837aa2f53d1fbebcb", size = 8906715, upload-time = "2025-10-10T13:07:01.926Z" }, + { url = "https://files.pythonhosted.org/packages/40/4d/0e0b85b4179891cc3067a6e717f5161921c07873a4f545963fdf1dd3619c/ty-0.0.1a22-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:afa512e7dc78f0cf0b55f87394968ba59c46993c67bc0ef295962144fea85b12", size = 8350873, upload-time = "2025-10-10T13:07:03.999Z" }, + { url = "https://files.pythonhosted.org/packages/a1/1f/e70c63e12b4a0d97d4fd6f872dd199113666ad1b236e18838fa5e5d5502d/ty-0.0.1a22-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:069cdbbea6025f7ebbb5e9043c8d0daf760358df46df8304ef5ca5bb3e320aef", size = 8442568, upload-time = "2025-10-10T13:07:05.745Z" }, + { url = "https://files.pythonhosted.org/packages/de/3b/55518906cb3598f2b99ff1e86c838d77d006cab70cdd2a0a625d02ccb52c/ty-0.0.1a22-py3-none-musllinux_1_2_i686.whl", hash = "sha256:67d31d902e6fd67a4b3523604f635e71d2ec55acfb9118f984600584bfe0ff2a", size = 8896775, upload-time = "2025-10-10T13:07:08.02Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/60c654c27931bf84fa9cb463a4c4c49e8869c052fa607a6e930be717b619/ty-0.0.1a22-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f9e154f262162e6f76b01f318e469ac6c22ffce22b010c396ed34e81d8369821", size = 9054544, upload-time = "2025-10-10T13:07:09.675Z" }, + { url = "https://files.pythonhosted.org/packages/6c/60/9a6d5530d6829ccf656e6ae0fb13d70a4e2514f4fb8910266ebd54286620/ty-0.0.1a22-py3-none-win32.whl", hash = "sha256:37525433ca7b02a8fca4b8fa9dcde818bf3a413b539b9dbc8f7b39d124eb7c49", size = 8165703, upload-time = "2025-10-10T13:07:11.378Z" }, + { url = "https://files.pythonhosted.org/packages/14/9c/ac08c832643850d4e18cbc959abc69cd51d531fe11bdb691098b3cf2f562/ty-0.0.1a22-py3-none-win_amd64.whl", hash = "sha256:75d21cdeba8bcef247af89518d7ce98079cac4a55c4160cb76682ea40a18b92c", size = 8828319, upload-time = "2025-10-10T13:07:12.815Z" }, + { url = "https://files.pythonhosted.org/packages/22/df/38068fc44e3cfb455aeb41d0ff1850a4d3c9988010466d4a8d19860b8b9a/ty-0.0.1a22-py3-none-win_arm64.whl", hash = "sha256:1c7f040fe311e9696917417434c2a0e58402235be842c508002c6a2eff1398b0", size = 8367136, upload-time = "2025-10-10T13:07:14.518Z" }, ] [[package]] @@ -203,28 +213,28 @@ wheels = [ [[package]] name = "uv-build" -version = "0.8.24" +version = "0.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/50/60/6d96c3dd49223156b7f7b7eb4b79f94727cb529806b2c086f75d4dfb7ca6/uv_build-0.8.24.tar.gz", hash = "sha256:02e1256ac4524b06319a7fbfa30aa4959d9ef0b63076a959cce20a588448def8", size = 332743, upload-time = "2025-10-07T03:33:37.84Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/7d/b758d100d01d8340ea272b97480937131aaa0ba895e9c84c455e1cc41416/uv_build-0.9.1.tar.gz", hash = "sha256:677fc8cec7aee555aa60b37e299f88fb3f600dbc5c530351a2115327b9aabc9e", size = 332775, upload-time = "2025-10-09T19:10:01.671Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/da/e2815ee817cce13adc0ee94174361942132a780eae96074ff4f1aa78af77/uv_build-0.8.24-py3-none-linux_armv6l.whl", hash = "sha256:7c5eec2e8c0a3fec23030a0c99a4e5516927651d9c12cefe155899dc317fcb3c", size = 1400629, upload-time = "2025-10-07T03:33:09.578Z" }, - { url = "https://files.pythonhosted.org/packages/81/1c/72a5b177e0ce5f7e0ea9752337d361514c8b8cddee9b430cb2b3fa4d51d8/uv_build-0.8.24-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ebe16ab8e7e4703ca3cc46054e5d77736c9ac90878113b16db1ad7cdbfa46a2f", size = 1376572, upload-time = "2025-10-07T03:33:11.587Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e9/205838c393a03583fad827e80db99325f95d04343db4583503e25c646ca2/uv_build-0.8.24-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8934344a7a77ae8c5fe879068acf480836be0085319249b8baa4ca410e3d60f2", size = 1252607, upload-time = "2025-10-07T03:33:13.029Z" }, - { url = "https://files.pythonhosted.org/packages/ce/fb/fd874383bf4344cff69a242ccd8fc8c653107b8630b17d4853fb08caa8c6/uv_build-0.8.24-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:2f3caa27c2a3d453e8e93126361e4d3096d58cea5fb1793e997c603bb93cbee9", size = 1452060, upload-time = "2025-10-07T03:33:14.607Z" }, - { url = "https://files.pythonhosted.org/packages/9c/27/a27126938ba0f0ad87b56780d520aa5c16b74b6397c7e41da5ff7d058113/uv_build-0.8.24-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:791e2cca4ab4ea4d3c6326c90acd4568e6b9f7442014d631326657439f125e8f", size = 1357488, upload-time = "2025-10-07T03:33:15.972Z" }, - { url = "https://files.pythonhosted.org/packages/f2/79/385bba1d35b697eeab3275d5e557f30200bd82f8c853fa333118efbd533d/uv_build-0.8.24-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcc3a4d4f1d20d77b9e2f5f7a6e06ab6998987b0bdf65f0f5f933d04596fcb82", size = 1516472, upload-time = "2025-10-07T03:33:19.872Z" }, - { url = "https://files.pythonhosted.org/packages/23/3e/42943ac4b7adf098bbf9e58dcc0541fbaa5edfd0b6dc8279cfeba900b5d2/uv_build-0.8.24-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:83d970f16cba618d05e38e7aa21119db52349cc8afc5dd65105ef203b6cf6b87", size = 1680247, upload-time = "2025-10-07T03:33:21.171Z" }, - { url = "https://files.pythonhosted.org/packages/4f/73/16d52711ea264c368b1a0d446660cd7511367e3751730f5a5da81a038acf/uv_build-0.8.24-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0014ca61e8ab87fc3470eaef5ee10b675d9bd313ba4dbae2af71d1c0ec96617", size = 1578223, upload-time = "2025-10-07T03:33:22.293Z" }, - { url = "https://files.pythonhosted.org/packages/25/7f/207f103a661c7832d124861dccb7e19b0a6d2f030877a3b68efb34bb5bb4/uv_build-0.8.24-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:893549c7df3fd136f039aa513cfd45f993428afa5b6d288289d994cea716929c", size = 1510195, upload-time = "2025-10-07T03:33:23.779Z" }, - { url = "https://files.pythonhosted.org/packages/7f/8a/d39f196478740efaae423fe9f333c030c97ade09a946eddb026f0b8145b5/uv_build-0.8.24-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba86a9a88d02e923f927eecf26f896548bf0a890118c3f00a915a5906b05f38", size = 1492956, upload-time = "2025-10-07T03:33:24.954Z" }, - { url = "https://files.pythonhosted.org/packages/0f/53/8d53835e696c0aeb1d92ab07eeb06ee68a945a5f8ef30fa85f0bd2be00c2/uv_build-0.8.24-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:b761651d20e36369bfced14f02e9c4b2ee830897ac54fdb39b22d86bd7fe3ae7", size = 1453349, upload-time = "2025-10-07T03:33:27.996Z" }, - { url = "https://files.pythonhosted.org/packages/19/ae/d11c60861b26d0f863d4fc556e846780823415a64708f18e4b50bd1002ac/uv_build-0.8.24-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a6799918b553589e5881cbbc8896e2cddc057554dcb83c92b76dcfef80da8035", size = 1464477, upload-time = "2025-10-07T03:33:29.101Z" }, - { url = "https://files.pythonhosted.org/packages/27/ad/dd19f12d08eb8790a4db3a3eb039b21888a61b0feb6098ce9f2d2ab37956/uv_build-0.8.24-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:21371860b6ed71dd55efc2cb1f3f98cff2d6d53fca7e0fe920465274ca062230", size = 1373709, upload-time = "2025-10-07T03:33:30.854Z" }, - { url = "https://files.pythonhosted.org/packages/8e/d5/c31ef7fa3ca29c7f192b206c2f5f158a5564370562ed8da1e9aa55a3eaa3/uv_build-0.8.24-py3-none-musllinux_1_1_i686.whl", hash = "sha256:febea2a2d2ddd6bb912cedc2c33ee72d842c7b5134b8614596c0e24d9f7e038a", size = 1472392, upload-time = "2025-10-07T03:33:31.866Z" }, - { url = "https://files.pythonhosted.org/packages/80/04/7e0de2d6596623ff2cdb39c7b5f79dffe481568f9f0af4abe2fcd21f5875/uv_build-0.8.24-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:bc132f28f76e4f047afa05b39149ea7bb63e591303150581f4ccbb7a215bda23", size = 1551547, upload-time = "2025-10-07T03:33:32.99Z" }, - { url = "https://files.pythonhosted.org/packages/dd/f1/4032a560c8d67edf3e4c8da7ca364da31e65b22e0b8c71f52a093dbaf260/uv_build-0.8.24-py3-none-win32.whl", hash = "sha256:327af1cda22f00a9f3659c6417d68ee9d60a6c2be627e2e9e5ddd29396ae8eef", size = 1332540, upload-time = "2025-10-07T03:33:34.121Z" }, - { url = "https://files.pythonhosted.org/packages/02/5a/1488c6c9addcdbe6ba417813224a8fa2fdae09f6e7241bb27a687c4e6667/uv_build-0.8.24-py3-none-win_amd64.whl", hash = "sha256:9072ff0dacf6ebfb9fed394e181ebd26cb2a16dc95697da8316b3eab49f76cc3", size = 1414396, upload-time = "2025-10-07T03:33:35.475Z" }, - { url = "https://files.pythonhosted.org/packages/bd/88/4ce31b1eee35dc2db6b49dd0f7506fab187a4f96de29a4ed6777166eecf8/uv_build-0.8.24-py3-none-win_arm64.whl", hash = "sha256:81840c4b00a8b7261998e059610f868ee8ef2794a9435c9e264caa9e2f6623d4", size = 1322987, upload-time = "2025-10-07T03:33:36.601Z" }, + { url = "https://files.pythonhosted.org/packages/dc/51/4fa7ef98c81ca7e3db07a9a464aa45a5ded454637a1ddf9e049e441ef271/uv_build-0.9.1-py3-none-linux_armv6l.whl", hash = "sha256:dfd6d42772971a48b2e8b4dfe3554306a684cc9409c814d8ce81d790835ddeb9", size = 1400323, upload-time = "2025-10-09T19:09:31.972Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2b/b2d9ee52bfa8370dabe77544b8c7296ae895ea13231e9ad1a44697c2297e/uv_build-0.9.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9a7acced14f7d98a081e79d3ca2f582384673073262f481e2ebd66ed6652765a", size = 1376399, upload-time = "2025-10-09T19:09:33.817Z" }, + { url = "https://files.pythonhosted.org/packages/a3/99/4c2695331b5ffa28fd880dca823cdb0a6150ad4659ed2c96d1d80d6488cb/uv_build-0.9.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:dc69be5a6f272888634a04961da31e567bdc8acd6a373eec0a8d71a745cd1ec8", size = 1252608, upload-time = "2025-10-09T19:09:36.939Z" }, + { url = "https://files.pythonhosted.org/packages/1a/fa/a5047be5abd7a2daddbaf4fc3a1b828aa50f08ff49a5bf86f2da869f08d6/uv_build-0.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:31d5ff4d7d3027cebbb4f60953da52b469f4d2979d993acb48b36ac804585109", size = 1452738, upload-time = "2025-10-09T19:09:38.855Z" }, + { url = "https://files.pythonhosted.org/packages/6b/74/61494056e4c7501cd04bdf7f21e9ff14642105bbf956b758eaf6c230df42/uv_build-0.9.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8f491c115c05377ed04f180f54d041cfa4e6d058a40d967202b5eaf505a42dd", size = 1357279, upload-time = "2025-10-09T19:09:40.385Z" }, + { url = "https://files.pythonhosted.org/packages/82/5b/5db82da6acb1d2791dfb647e8e2c5477de8b5026f2ba7b020dfdd4e43a0d/uv_build-0.9.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2382911c060313d44f5af2e7b638ef985256ce6aa699795ee1efe8b8b5609556", size = 1516475, upload-time = "2025-10-09T19:09:41.434Z" }, + { url = "https://files.pythonhosted.org/packages/10/06/f9bf20f479cef622ce3cc60c92f71490bbd39c2877626f7b9b04edd3a54f/uv_build-0.9.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1a2ec53de9b128bee898b55d8a990f001dbb79ecc1a6042db8936c697d744ab5", size = 1680646, upload-time = "2025-10-09T19:09:42.811Z" }, + { url = "https://files.pythonhosted.org/packages/45/a5/cbb9505e228c743738c775e971fa0f152aebc64cb7639b970ac335c59958/uv_build-0.9.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94506af348ddbbbc91420783dc0b60ab71066b0c813976e870732dbae7e852d5", size = 1577844, upload-time = "2025-10-09T19:09:44.885Z" }, + { url = "https://files.pythonhosted.org/packages/a0/15/2588f2b41b8d845ba681032cf5bb1d2e7cc2448f6d0bd9dd76e7bdb4816f/uv_build-0.9.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:592229aaf81687e3091bcd4772cab1d7a8fe9ecf64849fccead4e448e279fdb6", size = 1510332, upload-time = "2025-10-09T19:09:45.978Z" }, + { url = "https://files.pythonhosted.org/packages/98/81/fc186aca7cb08516e8f0dfe79cd8159a56efee6ffc8df1917bb49121b4e2/uv_build-0.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7460830ed3e0613322811a6e3ff27d872b0517a4789d62e89cb9734545319258", size = 1491527, upload-time = "2025-10-09T19:09:47.658Z" }, + { url = "https://files.pythonhosted.org/packages/f3/bc/0a584f8d09393329d6dd561471029a864853aaf95492a6d2360c96f5883c/uv_build-0.9.1-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:a13d545186ba4209225f09bbe5333df478c42e32e474719e2165d9c14efd9bb1", size = 1453445, upload-time = "2025-10-09T19:09:49.056Z" }, + { url = "https://files.pythonhosted.org/packages/1f/03/d595f1930857c19b90b08044002baadc2c6d4d0b0bfc82bfbe0eac2c0c29/uv_build-0.9.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:68c062035dd40a5f870f32d5a32b9cb17b4a6b0598f7b837caf47185e8549395", size = 1464643, upload-time = "2025-10-09T19:09:51.106Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b9/c0448dc177f3b039b3a190e900acf443b01001ee16115ee5ae050dd81be3/uv_build-0.9.1-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:30aeaa4112babf956a35e51a7a743829e171f51cdff889d812dd348ceb2e74db", size = 1373386, upload-time = "2025-10-09T19:09:52.201Z" }, + { url = "https://files.pythonhosted.org/packages/bf/7b/3782356d76686b95a731765bbda81c951b6b693d0fc02b171c22726bd9bc/uv_build-0.9.1-py3-none-musllinux_1_1_i686.whl", hash = "sha256:3caa1eccc2b9a2e17571f678413ad32c29300cd01789fc4c309e0f86c9d8e18a", size = 1470832, upload-time = "2025-10-09T19:09:54.725Z" }, + { url = "https://files.pythonhosted.org/packages/87/1e/48e5871e69a1805b9a19c244a1c14b7313b48255626a545cc5e5f94ed37a/uv_build-0.9.1-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:256f174e797815f8d14be98150e7c89d89c02afd871c16dd74d672148030af4f", size = 1550403, upload-time = "2025-10-09T19:09:55.93Z" }, + { url = "https://files.pythonhosted.org/packages/23/3c/4114d1edd1c8ec6739ddb1536e4b53649bd90750c9571c2554f663981af0/uv_build-0.9.1-py3-none-win32.whl", hash = "sha256:324af1408ad8becc10690ca818308cfb40089eb28005e9c9e1e8cb434cc88af6", size = 1332563, upload-time = "2025-10-09T19:09:57.553Z" }, + { url = "https://files.pythonhosted.org/packages/b6/94/ce03af27ecf390eff2e9b00e745e7df083cfd0ee099f9ed4f331890e3a67/uv_build-0.9.1-py3-none-win_amd64.whl", hash = "sha256:1ac7fcc6f4af2559cbbe5e31de810d62450c0e249b5d6878d0a6a758ca106a01", size = 1412932, upload-time = "2025-10-09T19:09:59.349Z" }, + { url = "https://files.pythonhosted.org/packages/58/b2/d0499b8646f9ade1ce16150041d942922646a00cbb710432d2021670244f/uv_build-0.9.1-py3-none-win_arm64.whl", hash = "sha256:6a144c79406d687556aa48938619761a9162ac8b2cceff314b80a3a58930d803", size = 1322978, upload-time = "2025-10-09T19:10:00.553Z" }, ] [[package]] From a6aac64599861e5372acb3ef51a3fe69596f0a37 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:34:13 -0400 Subject: [PATCH 17/76] fixup! Try uv_build backend --- conda.recipe/bld.bat | 2 -- conda.recipe/build.sh | 1 - conda.recipe/meta.yaml | 1 + 3 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 conda.recipe/bld.bat delete mode 100644 conda.recipe/build.sh diff --git a/conda.recipe/bld.bat b/conda.recipe/bld.bat deleted file mode 100644 index 634cc801..00000000 --- a/conda.recipe/bld.bat +++ /dev/null @@ -1,2 +0,0 @@ -uv pip install --verbose . -if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh deleted file mode 100644 index 20bd0011..00000000 --- a/conda.recipe/build.sh +++ /dev/null @@ -1 +0,0 @@ -uv pip install --verbose . diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index eecb7083..21fa9252 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -12,6 +12,7 @@ build: # Binaries are broken on macOS without it. binary_relocation: False include_recipe: False + script: uv pip install . requirements: build: From 391967f0d0ee2032388720e8a70dcca099d5f2c0 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:37:42 -0400 Subject: [PATCH 18/76] fixup! Try uv_build backend --- .github/actions/build-conda-packages/action.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 05cbeb79..81e9948f 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -6,6 +6,7 @@ runs: - uses: conda-incubator/setup-miniconda@v3 with: conda-build-version: "25.9.0" + conda-remove-defaults: true miniforge-version: "25.3.1-0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. From 1c0ac40db0e444b38affd3f5b4ba2e1a402cfd30 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:49:02 -0400 Subject: [PATCH 19/76] fixup! Try uv_build backend --- .github/actions/build-java-runtime/action.yaml | 2 +- conda.recipe/build.bat | 2 ++ conda.recipe/build.sh | 1 + conda.recipe/meta.yaml | 1 - 4 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 conda.recipe/build.bat create mode 100644 conda.recipe/build.sh diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 4b8e4b43..42ce0c4b 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -16,7 +16,7 @@ runs: run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" shell: bash - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: temurin java-version: ${{ steps.get-java-version.outputs.version }} diff --git a/conda.recipe/build.bat b/conda.recipe/build.bat new file mode 100644 index 00000000..506f70f0 --- /dev/null +++ b/conda.recipe/build.bat @@ -0,0 +1,2 @@ +uv pip install . +if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh new file mode 100644 index 00000000..0d750ce3 --- /dev/null +++ b/conda.recipe/build.sh @@ -0,0 +1 @@ +uv pip install . diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 21fa9252..eecb7083 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -12,7 +12,6 @@ build: # Binaries are broken on macOS without it. binary_relocation: False include_recipe: False - script: uv pip install . requirements: build: From 77cb66e000ba7042a7b98f8109c74bfc390acc98 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:56:44 -0400 Subject: [PATCH 20/76] fixup! Try uv_build backend --- .github/actions/build-conda-packages/action.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 81e9948f..05cbeb79 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -6,7 +6,6 @@ runs: - uses: conda-incubator/setup-miniconda@v3 with: conda-build-version: "25.9.0" - conda-remove-defaults: true miniforge-version: "25.3.1-0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. From c1c021048d8e2d33262840891a7535dc716a845f Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:57:46 -0400 Subject: [PATCH 21/76] fixup! Try uv_build backend --- conda.recipe/{build.bat => bld.bat} | 0 conda.recipe/{build.sh => bld.sh} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename conda.recipe/{build.bat => bld.bat} (100%) rename conda.recipe/{build.sh => bld.sh} (100%) diff --git a/conda.recipe/build.bat b/conda.recipe/bld.bat similarity index 100% rename from conda.recipe/build.bat rename to conda.recipe/bld.bat diff --git a/conda.recipe/build.sh b/conda.recipe/bld.sh similarity index 100% rename from conda.recipe/build.sh rename to conda.recipe/bld.sh From 04d8ea52b99a4e09f598c8c614be0f08c334291a Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:03:52 -0400 Subject: [PATCH 22/76] fixup! Try uv_build backend --- .../actions/build-conda-packages/action.yaml | 4 + .github/workflows/test.yaml | 90 +++++++++---------- conda.recipe/{bld.sh => build.sh} | 0 3 files changed, 49 insertions(+), 45 deletions(-) rename conda.recipe/{bld.sh => build.sh} (100%) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 05cbeb79..fe2a96e0 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -6,8 +6,12 @@ runs: - uses: conda-incubator/setup-miniconda@v3 with: conda-build-version: "25.9.0" + conda-remove-defaults: true miniforge-version: "25.3.1-0" + - if: ${{ runner.os == 'Windows' }} + run: cat ~/.condarc + # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} run: echo "LIBARCHIVE=C:\\Miniconda\\Library\\bin\\archive.dll" >> "$GITHUB_ENV" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index fb69e298..2fc67a74 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,59 +4,59 @@ on: types: [opened, synchronize] jobs: - test: - name: Test on ${{ matrix.runner }} with Python ${{ matrix.python }} - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - - macos-26 - - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 - python: - - "3.10" - include: - - runner: ubuntu-24.04 - python: "3.11" - - runner: ubuntu-24.04 - python: "3.12" - - runner: ubuntu-24.04 - python: "3.13" - - runner: ubuntu-24.04 - python: "3.14" + # test: + # name: Test on ${{ matrix.runner }} with Python ${{ matrix.python }} + # runs-on: ${{ matrix.runner }} + # strategy: + # fail-fast: false + # matrix: + # runner: + # - macos-26 + # - ubuntu-24.04 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 + # python: + # - "3.10" + # include: + # - runner: ubuntu-24.04 + # python: "3.11" + # - runner: ubuntu-24.04 + # python: "3.12" + # - runner: ubuntu-24.04 + # python: "3.13" + # - runner: ubuntu-24.04 + # python: "3.14" - steps: - - uses: actions/checkout@v4 + # steps: + # - uses: actions/checkout@v4 - - uses: ./.github/actions/build-java-runtime - with: - python-version: ${{ matrix.python}} + # - uses: ./.github/actions/build-java-runtime + # with: + # python-version: ${{ matrix.python}} - - uses: ./.github/actions/build-wheel + # - uses: ./.github/actions/build-wheel - # No need to test each platform and Python version. - - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - run: uv run ruff format --check + # # No need to test each platform and Python version. + # - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + # run: uv run ruff format --check - # No need to test each platform and Python version. - - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - run: uv run ruff check + # # No need to test each platform and Python version. + # - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + # run: uv run ruff check - # No need to test each platform and Python version. - - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - run: uv run ty check + # # No need to test each platform and Python version. + # - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + # run: uv run ty check - - run: uv run pytest + # - run: uv run pytest - # The Python wheels are not tied to a specific Python version. - - if: ${{ matrix.python == '3.10' }} - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: jdk4py-${{ matrix.runner }}-python-wheel - path: dist/jdk4py-*.whl + # # The Python wheels are not tied to a specific Python version. + # - if: ${{ matrix.python == '3.10' }} + # uses: actions/upload-artifact@v4 + # with: + # if-no-files-found: error + # name: jdk4py-${{ matrix.runner }}-python-wheel + # path: dist/jdk4py-*.whl conda-package: name: Test Conda packaging on ${{ matrix.runner }} diff --git a/conda.recipe/bld.sh b/conda.recipe/build.sh similarity index 100% rename from conda.recipe/bld.sh rename to conda.recipe/build.sh From b2a6dc9f0f20c3146fc411b7967aa0e52cbcb16f Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:05:18 -0400 Subject: [PATCH 23/76] fixup! Try uv_build backend --- .github/actions/build-conda-packages/action.yaml | 7 ++++++- conda.recipe/conda_build_config.yaml | 3 --- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index fe2a96e0..bc44483a 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -9,8 +9,9 @@ runs: conda-remove-defaults: true miniforge-version: "25.3.1-0" - - if: ${{ runner.os == 'Windows' }} + - if: ${{ runner.os != 'Windows' }} run: cat ~/.condarc + shell: bash -l {0} # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} @@ -20,3 +21,7 @@ runs: - run: conda build --no-anaconda-upload --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -l {0} + + - if: ${{ runner.os != 'Windows' }} + run: ls dist + shell: bash -l {0} diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 67948170..d53188f1 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,6 +1,3 @@ python: - "3.10" - - "3.11" - "3.12" - - "3.13" - - "3.14" From 3fcc247a18297961092be7ff0467ead2b8cfa3cb Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:12:12 -0400 Subject: [PATCH 24/76] fixup! Try uv_build backend --- .github/actions/build-conda-packages/action.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index bc44483a..81f415e0 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -6,7 +6,6 @@ runs: - uses: conda-incubator/setup-miniconda@v3 with: conda-build-version: "25.9.0" - conda-remove-defaults: true miniforge-version: "25.3.1-0" - if: ${{ runner.os != 'Windows' }} @@ -23,5 +22,5 @@ runs: shell: bash -l {0} - if: ${{ runner.os != 'Windows' }} - run: ls dist + run: ls --recursive dist shell: bash -l {0} From 6238a1884b6259ce51e0afb4700a22d553d90179 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 14:11:19 -0400 Subject: [PATCH 25/76] Fresh start --- .../actions/build-conda-packages/action.yaml | 11 +- .../actions/build-java-runtime/action.yaml | 7 +- .github/actions/build-wheel/action.yaml | 14 - .github/workflows/deployment.yaml | 15 +- .github/workflows/test.yaml | 98 +++--- README.md | 2 +- conda.recipe/bld.bat | 2 +- conda.recipe/build.sh | 2 +- conda.recipe/conda_build_config.yaml | 2 + conda.recipe/meta.yaml | 9 +- hatch_build.py | 75 +++++ pyproject.toml | 55 ++-- src/jdk4py/__init__.py | 15 +- src/jdk4py/version.json | 1 + uv.lock | 302 +++++++++--------- 15 files changed, 331 insertions(+), 279 deletions(-) delete mode 100644 .github/actions/build-wheel/action.yaml create mode 100644 hatch_build.py create mode 100644 src/jdk4py/version.json diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 81f415e0..962009a3 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,12 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "25.9.0" - miniforge-version: "25.3.1-0" - - - if: ${{ runner.os != 'Windows' }} - run: cat ~/.condarc - shell: bash -l {0} + conda-build-version: "24.7.1" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} @@ -20,7 +15,3 @@ runs: - run: conda build --no-anaconda-upload --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -l {0} - - - if: ${{ runner.os != 'Windows' }} - run: ls --recursive dist - shell: bash -l {0} diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 42ce0c4b..4a34ac5f 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -7,16 +7,17 @@ inputs: runs: using: composite steps: - - uses: astral-sh/setup-uv@v6 + - uses: astral-sh/setup-uv@v5 with: + enable-cache: true python-version: ${{ inputs.python-version }} - version-file: pyproject.toml + version: "0.5.16" # Keep synced with same field in `deployment.yaml`. - id: get-java-version run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" shell: bash - - uses: actions/setup-java@v5 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{ steps.get-java-version.outputs.version }} diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-wheel/action.yaml deleted file mode 100644 index 6e275df3..00000000 --- a/.github/actions/build-wheel/action.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Remove this action and inline the first step once https://github.com/astral-sh/uv/issues/14827 is closed. -name: Build Python wheel -description: Build platform-specific Python wheel -runs: - using: composite - steps: - - run: uv build --wheel - shell: bash - - - run: uv run python -m wheel tags --platform-tag ${{ env.JDK4PY_PLATFORM_TAG }} --remove dist/*-py3-none-any.whl - env: - # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. - JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && runner.arch == 'ARM64' && 'manylinux_2_17_aarch64') || (runner.os == 'Linux' && runner.arch == 'X64' && 'manylinux_2_17_x86_64') || (runner.os == 'macOS' && runner.arch == 'ARM64' && 'macosx_11_0_arm64') || (runner.os == 'Windows' && runner.arch == 'X64' && 'win_amd64') || '' }} - shell: bash diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 5be811f8..f9b6ad99 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -11,10 +11,11 @@ jobs: strategy: matrix: runner: - - macos-26 + - macos-13 # x64 + - macos-14 # arm64 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + - windows-2022 steps: - uses: actions/checkout@v4 @@ -22,7 +23,7 @@ jobs: with: python-version: "3.10" - - uses: ./.github/actions/build-wheel + - run: uv build --wheel - uses: actions/upload-artifact@v4 with: @@ -36,7 +37,7 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.conda + path: dist/*/jdk4py-*.tar.bz2 publish: environment: deployment @@ -47,9 +48,9 @@ jobs: # Required for trusted publishing. id-token: write steps: - - uses: astral-sh/setup-uv@v6 + - uses: astral-sh/setup-uv@v5 with: - version-file: pyproject.toml + version: "0.5.16" # Keep synced with same field in `build-java-runtime/action.yaml`. - uses: actions/download-artifact@v4 with: @@ -67,7 +68,7 @@ jobs: JDK4PY_CONDA_CHANNEL_USERNAME: ${{ vars.CONDA_CHANNEL_USERNAME }} run: | cd dist/ - ls */jdk4py-*.conda | \ + ls */jdk4py-*.tar.bz2 | \ while read filepath; do echo Uploading ${filepath} curl --fail --user "$JDK4PY_CONDA_CHANNEL_USERNAME":"$JDK4PY_CONDA_CHANNEL_TOKEN" --upload-file ${filepath} "$JDK4PY_CONDA_CHANNEL_URL/$(dirname $filepath)/" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 2fc67a74..5e938f6d 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,71 +4,69 @@ on: types: [opened, synchronize] jobs: - # test: - # name: Test on ${{ matrix.runner }} with Python ${{ matrix.python }} - # runs-on: ${{ matrix.runner }} - # strategy: - # fail-fast: false - # matrix: - # runner: - # - macos-26 - # - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 - # python: - # - "3.10" - # include: - # - runner: ubuntu-24.04 - # python: "3.11" - # - runner: ubuntu-24.04 - # python: "3.12" - # - runner: ubuntu-24.04 - # python: "3.13" - # - runner: ubuntu-24.04 - # python: "3.14" - - # steps: - # - uses: actions/checkout@v4 + test: + name: Test on ${{ matrix.runner }} with Python ${{ matrix.python }} + runs-on: ${{ matrix.runner }} + strategy: + matrix: + runner: + - macos-13 # x64 + - macos-14 # arm64 + - ubuntu-24.04 + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2022 + python: + - "3.10" + include: + - runner: ubuntu-24.04 + python: "3.11" + - runner: ubuntu-24.04 + python: "3.12" + - runner: ubuntu-24.04 + python: "3.13" + fail-fast: false + steps: + - uses: actions/checkout@v4 - # - uses: ./.github/actions/build-java-runtime - # with: - # python-version: ${{ matrix.python}} + - uses: ./.github/actions/build-java-runtime + with: + python-version: ${{ matrix.python}} - # - uses: ./.github/actions/build-wheel + - run: uv build --wheel - # # No need to test each platform and Python version. - # - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - # run: uv run ruff format --check + # No need to test each platform and Python version. + - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + run: uv run ruff format --check - # # No need to test each platform and Python version. - # - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - # run: uv run ruff check + # No need to test each platform and Python version. + - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + run: uv run ruff check - # # No need to test each platform and Python version. - # - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} - # run: uv run ty check + # No need to test each platform and Python version. + - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + run: uv run mypy - # - run: uv run pytest + - run: uv run pytest - # # The Python wheels are not tied to a specific Python version. - # - if: ${{ matrix.python == '3.10' }} - # uses: actions/upload-artifact@v4 - # with: - # if-no-files-found: error - # name: jdk4py-${{ matrix.runner }}-python-wheel - # path: dist/jdk4py-*.whl + # The Python wheels are not tied to a specific Python version. + - if: ${{ matrix.python == '3.10' }} + uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: jdk4py-${{ matrix.runner }}-python-wheel + path: dist/jdk4py-*.whl conda-package: name: Test Conda packaging on ${{ matrix.runner }} runs-on: ${{ matrix.runner }} strategy: - fail-fast: false matrix: runner: - - macos-26 + - macos-13 # x64 + - macos-14 # arm64 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + - windows-2022 steps: - uses: actions/checkout@v4 @@ -83,4 +81,4 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.conda + path: dist/*/jdk4py-*.tar.bz2 diff --git a/README.md b/README.md index c45312da..1e7e42c7 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ PosixPath('/Users/johndoe/dev/jdk4py/jdk4py/java-runtime') >>> JAVA PosixPath('/Users/johndoe/dev/jdk4py/jdk4py/java-runtime/bin/java') >>> JAVA_VERSION -(21, 0, 8) +(21, 0, 4) >>> from subprocess import run >>> some_java_options = ["-Xmx16G", "-Xms2G"] >>> run( diff --git a/conda.recipe/bld.bat b/conda.recipe/bld.bat index 506f70f0..8e80d845 100644 --- a/conda.recipe/bld.bat +++ b/conda.recipe/bld.bat @@ -1,2 +1,2 @@ -uv pip install . +python -m pip install --verbose . if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh index 0d750ce3..8de0314a 100644 --- a/conda.recipe/build.sh +++ b/conda.recipe/build.sh @@ -1 +1 @@ -uv pip install . +python -m pip install --verbose . diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index d53188f1..13912bdb 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,3 +1,5 @@ python: - "3.10" + - "3.11" - "3.12" + - "3.13" diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index eecb7083..d811f847 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -1,9 +1,10 @@ {% set pyproject = load_file_data("pyproject.toml") %} -{% set dev_dependencies = pyproject["dependency-groups"]["dev"] %} +{% set dev_dependencies = pyproject["tool"]["uv"]["dev-dependencies"] %} +{% set version = load_file_data("src/jdk4py/version.json") %} package: name: {{ pyproject["project"]["name"] }} - version: {{ pyproject["project"]["version"] }} + version: {{ version }} source: path: ../ @@ -16,8 +17,8 @@ build: requirements: build: - python {{ python }} - - uv {{ pyproject["tool"]["uv"]["required-version"] }} - {% for dependency in dev_dependencies if dependency.startswith("uv-build ") %} + - pip ==24.2 + {% for dependency in dev_dependencies if dependency.startswith("hatchling ") %} - {{ dependency }} {% endfor %} run: diff --git a/hatch_build.py b/hatch_build.py new file mode 100644 index 00000000..2bdf83a2 --- /dev/null +++ b/hatch_build.py @@ -0,0 +1,75 @@ +import json +import platform +from pathlib import Path +from typing import Literal + +from hatchling.builders.config import BuilderConfigBound +from hatchling.builders.hooks.plugin.interface import BuildHookInterface +from hatchling.metadata.plugin.interface import MetadataHookInterface + +_PROJECT_DIRECTORY = Path(__file__).parent + + +_Architecture = Literal["arm64", "x64"] + + +def _get_architecture(machine: str) -> _Architecture: + match machine.lower(): + case "amd64" | "x64" | "x86_64": + return "x64" + case "aarch64" | "arm64": + return "arm64" + case _: + raise ValueError(f"Unsupported machine: `{machine}`.") + + +def _get_platform_tag(system: str, architecture: _Architecture) -> str: + # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. + match system.lower(): + case "darwin": + match architecture: + case "arm64": + return "macosx_11_0_arm64" + case "x64": + return "macosx_10_9_x86_64" + case "linux": + match architecture: + case "arm64": + return "manylinux_2_17_aarch64" + case "x64": + return "manylinux_2_17_x86_64" + case "windows": + match architecture: + case "x64": + return "win_amd64" + case _: + raise ValueError( + f"Unsupported {system} architecture: `{architecture}`.", + ) + case _: + raise ValueError(f"Unsupported system: `{system}`.") + + +class BuildHook(BuildHookInterface[BuilderConfigBound]): + def initialize( + self, + version: str, # noqa: ARG002 + build_data: dict[str, object], + ) -> None: + python_tag = "py3" + abi_tag = "none" + + system = platform.system() + architecture = _get_architecture(platform.machine()) + platform_tag = _get_platform_tag(system, architecture) + + build_data["tag"] = f"{python_tag}-{abi_tag}-{platform_tag}" + + +class MetadataHook(MetadataHookInterface): + def update(self, metadata: dict[str, object]) -> None: + version = json.loads( + (_PROJECT_DIRECTORY / "src" / "jdk4py" / "version.json").read_bytes(), + ) + assert isinstance(version, str) + metadata["version"] = version diff --git a/pyproject.toml b/pyproject.toml index 5d8a427a..41f94ce7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,21 +1,9 @@ [build-system] -build-backend = "uv_build" +build-backend = "hatchling.build" requires = [ - # Keep pinned to ensure same version is used by `conda build` (version must be available on conda-forge). - # Keep in sync with `dependency-groups.dev.uv-build`. - "uv-build ==0.9.1", -] - -[dependency-groups] -dev = [ - # Keep in sync with `build-system.requires.uv-build` and `tool.uv.required-version`. - "uv-build ==0.9.1", - # Keep pinned to ensure same version is used by `conda build` which does not use `uv.lock` (the version must be available on conda-forge). - "pytest ==8.4.2", - "ruff", - "ty", - # Remove once https://github.com/astral-sh/uv/issues/14827 is closed. - "wheel", + # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). + # Keep in sync with version in `tool.uv.dev-dependencies`. + "hatchling ==1.27.0", ] [project] @@ -30,15 +18,30 @@ classifiers = [ ] dependencies = [] description = "A JDK shipped in a Python package" +dynamic = ["version"] keywords = ["jdk", "java", "jvm", "jre"] name = "jdk4py" readme = "README.md" requires-python = ">=3.10" -version = "21.0.8.0" [project.urls] Repository = "https://github.com/activeviam/jdk4py" +[tool.hatch.build.hooks.custom] + +[tool.hatch.metadata.hooks.custom] + +[tool.hatch.build.targets.wheel] +artifacts = ["java-runtime"] + +[tool.mypy] +# Remove once https://github.com/python/mypy/issues/10428 is fixed. +files = "build_java_runtime.py,hatch_build.py,src,tests" +strict = true +warn_redundant_casts = true +warn_unused_configs = true +warn_unused_ignores = true + [tool.pytest.ini_options] filterwarnings = ["error"] @@ -60,14 +63,14 @@ ignore = [ ] select = ["ALL"] -[tool.ty.rules] -unused-ignore-comment = "warn" - -[tool.ty.terminal] -error-on-warning = true - [tool.uv] -# Keep pinned to ensure same version is used on CI (version must be available on conda-forge). -# Keep in sync with `dependency-groups.dev.uv-build`. -required-version = "==0.9.1" +dev-dependencies = [ + # Keep in sync with version in `build-system.requires`. + "hatchling ==1.27.0", + "mypy", + # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). + "pytest ==7.4.4", + "ruff", +] +required-version = ">=0.5.16,<0.6" trusted-publishing = "always" diff --git a/src/jdk4py/__init__.py b/src/jdk4py/__init__.py index 2584d0e5..d612f59f 100644 --- a/src/jdk4py/__init__.py +++ b/src/jdk4py/__init__.py @@ -1,15 +1,14 @@ """JDK packaged for Python.""" -from importlib.metadata import version as _version -from pathlib import Path as _Path +import json +from pathlib import Path -_PACKAGE_DIRECTORY = _Path(__file__).parent +_PACKAGE_DIRECTORY = Path(__file__).parent JAVA_HOME = _PACKAGE_DIRECTORY / "java-runtime" JAVA = JAVA_HOME / "bin" / "java" -_VERSION = _version("jdk4py") -_JAVA_MAJOR, _JAVA_MINOR, _JAVA_PATCH, _LIB_VERSION = [ - int(number) for number in _VERSION.split(".") -] -JAVA_VERSION = _JAVA_MAJOR, _JAVA_MINOR, _JAVA_PATCH +_VERSION = json.loads((_PACKAGE_DIRECTORY / "version.json").read_bytes()) +assert isinstance(_VERSION, str) +_MAJOR, _MINOR, _PATCH = tuple(int(number) for number in _VERSION.split(".")[:3]) +JAVA_VERSION = _MAJOR, _MINOR, _PATCH diff --git a/src/jdk4py/version.json b/src/jdk4py/version.json new file mode 100644 index 00000000..8264f478 --- /dev/null +++ b/src/jdk4py/version.json @@ -0,0 +1 @@ +"21.0.4.2" diff --git a/uv.lock b/uv.lock index 3ffeb898..0708d469 100644 --- a/uv.lock +++ b/uv.lock @@ -1,92 +1,149 @@ version = 1 -revision = 3 requires-python = ">=3.10" [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] name = "exceptiongroup" -version = "1.3.0" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "hatchling" +version = "1.27.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "trove-classifiers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/8a/cc1debe3514da292094f1c3a700e4ca25442489731ef7c0814358816bb03/hatchling-1.27.0.tar.gz", hash = "sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6", size = 54983 } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, + { url = "https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl", hash = "sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b", size = 75794 }, ] [[package]] name = "iniconfig" -version = "2.1.0" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, ] [[package]] name = "jdk4py" -version = "21.0.8.0" +version = "21.0.4.2" source = { editable = "." } [package.dev-dependencies] dev = [ + { name = "hatchling" }, + { name = "mypy" }, { name = "pytest" }, { name = "ruff" }, - { name = "ty" }, - { name = "uv-build" }, - { name = "wheel" }, ] [package.metadata] [package.metadata.requires-dev] dev = [ - { name = "pytest", specifier = "==8.4.2" }, + { name = "hatchling", specifier = "==1.27.0" }, + { name = "mypy" }, + { name = "pytest", specifier = "==7.4.4" }, { name = "ruff" }, - { name = "ty" }, - { name = "uv-build", specifier = "==0.9.1" }, - { name = "wheel" }, +] + +[[package]] +name = "mypy" +version = "1.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/eb/2c92d8ea1e684440f54fa49ac5d9a5f19967b7b472a281f419e69a8d228e/mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6", size = 3216051 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/7a/87ae2adb31d68402da6da1e5f30c07ea6063e9f09b5e7cfc9dfa44075e74/mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb", size = 11211002 }, + { url = "https://files.pythonhosted.org/packages/e1/23/eada4c38608b444618a132be0d199b280049ded278b24cbb9d3fc59658e4/mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0", size = 10358400 }, + { url = "https://files.pythonhosted.org/packages/43/c9/d6785c6f66241c62fd2992b05057f404237deaad1566545e9f144ced07f5/mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d", size = 12095172 }, + { url = "https://files.pythonhosted.org/packages/c3/62/daa7e787770c83c52ce2aaf1a111eae5893de9e004743f51bfcad9e487ec/mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b", size = 12828732 }, + { url = "https://files.pythonhosted.org/packages/1b/a2/5fb18318a3637f29f16f4e41340b795da14f4751ef4f51c99ff39ab62e52/mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427", size = 13012197 }, + { url = "https://files.pythonhosted.org/packages/28/99/e153ce39105d164b5f02c06c35c7ba958aaff50a2babba7d080988b03fe7/mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f", size = 9780836 }, + { url = "https://files.pythonhosted.org/packages/da/11/a9422850fd506edbcdc7f6090682ecceaf1f87b9dd847f9df79942da8506/mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c", size = 11120432 }, + { url = "https://files.pythonhosted.org/packages/b6/9e/47e450fd39078d9c02d620545b2cb37993a8a8bdf7db3652ace2f80521ca/mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1", size = 10279515 }, + { url = "https://files.pythonhosted.org/packages/01/b5/6c8d33bd0f851a7692a8bfe4ee75eb82b6983a3cf39e5e32a5d2a723f0c1/mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8", size = 12025791 }, + { url = "https://files.pythonhosted.org/packages/f0/4c/e10e2c46ea37cab5c471d0ddaaa9a434dc1d28650078ac1b56c2d7b9b2e4/mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f", size = 12749203 }, + { url = "https://files.pythonhosted.org/packages/88/55/beacb0c69beab2153a0f57671ec07861d27d735a0faff135a494cd4f5020/mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1", size = 12885900 }, + { url = "https://files.pythonhosted.org/packages/a2/75/8c93ff7f315c4d086a2dfcde02f713004357d70a163eddb6c56a6a5eff40/mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae", size = 9777869 }, + { url = "https://files.pythonhosted.org/packages/43/1b/b38c079609bb4627905b74fc6a49849835acf68547ac33d8ceb707de5f52/mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14", size = 11266668 }, + { url = "https://files.pythonhosted.org/packages/6b/75/2ed0d2964c1ffc9971c729f7a544e9cd34b2cdabbe2d11afd148d7838aa2/mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9", size = 10254060 }, + { url = "https://files.pythonhosted.org/packages/a1/5f/7b8051552d4da3c51bbe8fcafffd76a6823779101a2b198d80886cd8f08e/mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11", size = 11933167 }, + { url = "https://files.pythonhosted.org/packages/04/90/f53971d3ac39d8b68bbaab9a4c6c58c8caa4d5fd3d587d16f5927eeeabe1/mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e", size = 12864341 }, + { url = "https://files.pythonhosted.org/packages/03/d2/8bc0aeaaf2e88c977db41583559319f1821c069e943ada2701e86d0430b7/mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89", size = 12972991 }, + { url = "https://files.pythonhosted.org/packages/6f/17/07815114b903b49b0f2cf7499f1c130e5aa459411596668267535fe9243c/mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b", size = 9879016 }, + { url = "https://files.pythonhosted.org/packages/9e/15/bb6a686901f59222275ab228453de741185f9d54fecbaacec041679496c6/mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255", size = 11252097 }, + { url = "https://files.pythonhosted.org/packages/f8/b3/8b0f74dfd072c802b7fa368829defdf3ee1566ba74c32a2cb2403f68024c/mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34", size = 10239728 }, + { url = "https://files.pythonhosted.org/packages/c5/9b/4fd95ab20c52bb5b8c03cc49169be5905d931de17edfe4d9d2986800b52e/mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a", size = 11924965 }, + { url = "https://files.pythonhosted.org/packages/56/9d/4a236b9c57f5d8f08ed346914b3f091a62dd7e19336b2b2a0d85485f82ff/mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9", size = 12867660 }, + { url = "https://files.pythonhosted.org/packages/40/88/a61a5497e2f68d9027de2bb139c7bb9abaeb1be1584649fa9d807f80a338/mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd", size = 12969198 }, + { url = "https://files.pythonhosted.org/packages/54/da/3d6fc5d92d324701b0c23fb413c853892bfe0e1dbe06c9138037d459756b/mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107", size = 9885276 }, + { url = "https://files.pythonhosted.org/packages/a0/b5/32dd67b69a16d088e533962e5044e51004176a9952419de0370cdaead0f8/mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1", size = 2752905 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, ] [[package]] name = "packaging" -version = "25.0" +version = "24.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, ] [[package]] -name = "pluggy" -version = "1.6.0" +name = "pathspec" +version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] [[package]] -name = "pygments" -version = "2.19.2" +name = "pluggy" +version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, ] [[package]] name = "pytest" -version = "8.4.2" +version = "7.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -94,154 +151,91 @@ dependencies = [ { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, - { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, + { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287 }, ] [[package]] name = "ruff" -version = "0.14.0" +version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/b9/9bd84453ed6dd04688de9b3f3a4146a1698e8faae2ceeccce4e14c67ae17/ruff-0.14.0.tar.gz", hash = "sha256:62ec8969b7510f77945df916de15da55311fade8d6050995ff7f680afe582c57", size = 5452071, upload-time = "2025-10-07T18:21:55.763Z" } +sdist = { url = "https://files.pythonhosted.org/packages/75/48/385f276f41e89623a5ea8e4eb9c619a44fdfc2a64849916b3584eca6cb9f/ruff-0.9.0.tar.gz", hash = "sha256:143f68fa5560ecf10fc49878b73cee3eab98b777fcf43b0e62d43d42f5ef9d8b", size = 3489167 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/4e/79d463a5f80654e93fa653ebfb98e0becc3f0e7cf6219c9ddedf1e197072/ruff-0.14.0-py3-none-linux_armv6l.whl", hash = "sha256:58e15bffa7054299becf4bab8a1187062c6f8cafbe9f6e39e0d5aface455d6b3", size = 12494532, upload-time = "2025-10-07T18:21:00.373Z" }, - { url = "https://files.pythonhosted.org/packages/ee/40/e2392f445ed8e02aa6105d49db4bfff01957379064c30f4811c3bf38aece/ruff-0.14.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:838d1b065f4df676b7c9957992f2304e41ead7a50a568185efd404297d5701e8", size = 13160768, upload-time = "2025-10-07T18:21:04.73Z" }, - { url = "https://files.pythonhosted.org/packages/75/da/2a656ea7c6b9bd14c7209918268dd40e1e6cea65f4bb9880eaaa43b055cd/ruff-0.14.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:703799d059ba50f745605b04638fa7e9682cc3da084b2092feee63500ff3d9b8", size = 12363376, upload-time = "2025-10-07T18:21:07.833Z" }, - { url = "https://files.pythonhosted.org/packages/42/e2/1ffef5a1875add82416ff388fcb7ea8b22a53be67a638487937aea81af27/ruff-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ba9a8925e90f861502f7d974cc60e18ca29c72bb0ee8bfeabb6ade35a3abde7", size = 12608055, upload-time = "2025-10-07T18:21:10.72Z" }, - { url = "https://files.pythonhosted.org/packages/4a/32/986725199d7cee510d9f1dfdf95bf1efc5fa9dd714d0d85c1fb1f6be3bc3/ruff-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e41f785498bd200ffc276eb9e1570c019c1d907b07cfb081092c8ad51975bbe7", size = 12318544, upload-time = "2025-10-07T18:21:13.741Z" }, - { url = "https://files.pythonhosted.org/packages/9a/ed/4969cefd53315164c94eaf4da7cfba1f267dc275b0abdd593d11c90829a3/ruff-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30a58c087aef4584c193aebf2700f0fbcfc1e77b89c7385e3139956fa90434e2", size = 14001280, upload-time = "2025-10-07T18:21:16.411Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ad/96c1fc9f8854c37681c9613d825925c7f24ca1acfc62a4eb3896b50bacd2/ruff-0.14.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f8d07350bc7af0a5ce8812b7d5c1a7293cf02476752f23fdfc500d24b79b783c", size = 15027286, upload-time = "2025-10-07T18:21:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/b3/00/1426978f97df4fe331074baf69615f579dc4e7c37bb4c6f57c2aad80c87f/ruff-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eec3bbbf3a7d5482b5c1f42d5fc972774d71d107d447919fca620b0be3e3b75e", size = 14451506, upload-time = "2025-10-07T18:21:22.779Z" }, - { url = "https://files.pythonhosted.org/packages/58/d5/9c1cea6e493c0cf0647674cca26b579ea9d2a213b74b5c195fbeb9678e15/ruff-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16b68e183a0e28e5c176d51004aaa40559e8f90065a10a559176713fcf435206", size = 13437384, upload-time = "2025-10-07T18:21:25.758Z" }, - { url = "https://files.pythonhosted.org/packages/29/b4/4cd6a4331e999fc05d9d77729c95503f99eae3ba1160469f2b64866964e3/ruff-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb732d17db2e945cfcbbc52af0143eda1da36ca8ae25083dd4f66f1542fdf82e", size = 13447976, upload-time = "2025-10-07T18:21:28.83Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c0/ac42f546d07e4f49f62332576cb845d45c67cf5610d1851254e341d563b6/ruff-0.14.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:c958f66ab884b7873e72df38dcabee03d556a8f2ee1b8538ee1c2bbd619883dd", size = 13682850, upload-time = "2025-10-07T18:21:31.842Z" }, - { url = "https://files.pythonhosted.org/packages/5f/c4/4b0c9bcadd45b4c29fe1af9c5d1dc0ca87b4021665dfbe1c4688d407aa20/ruff-0.14.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7eb0499a2e01f6e0c285afc5bac43ab380cbfc17cd43a2e1dd10ec97d6f2c42d", size = 12449825, upload-time = "2025-10-07T18:21:35.074Z" }, - { url = "https://files.pythonhosted.org/packages/4b/a8/e2e76288e6c16540fa820d148d83e55f15e994d852485f221b9524514730/ruff-0.14.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c63b2d99fafa05efca0ab198fd48fa6030d57e4423df3f18e03aa62518c565f", size = 12272599, upload-time = "2025-10-07T18:21:38.08Z" }, - { url = "https://files.pythonhosted.org/packages/18/14/e2815d8eff847391af632b22422b8207704222ff575dec8d044f9ab779b2/ruff-0.14.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:668fce701b7a222f3f5327f86909db2bbe99c30877c8001ff934c5413812ac02", size = 13193828, upload-time = "2025-10-07T18:21:41.216Z" }, - { url = "https://files.pythonhosted.org/packages/44/c6/61ccc2987cf0aecc588ff8f3212dea64840770e60d78f5606cd7dc34de32/ruff-0.14.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a86bf575e05cb68dcb34e4c7dfe1064d44d3f0c04bbc0491949092192b515296", size = 13628617, upload-time = "2025-10-07T18:21:44.04Z" }, - { url = "https://files.pythonhosted.org/packages/73/e6/03b882225a1b0627e75339b420883dc3c90707a8917d2284abef7a58d317/ruff-0.14.0-py3-none-win32.whl", hash = "sha256:7450a243d7125d1c032cb4b93d9625dea46c8c42b4f06c6b709baac168e10543", size = 12367872, upload-time = "2025-10-07T18:21:46.67Z" }, - { url = "https://files.pythonhosted.org/packages/41/77/56cf9cf01ea0bfcc662de72540812e5ba8e9563f33ef3d37ab2174892c47/ruff-0.14.0-py3-none-win_amd64.whl", hash = "sha256:ea95da28cd874c4d9c922b39381cbd69cb7e7b49c21b8152b014bd4f52acddc2", size = 13464628, upload-time = "2025-10-07T18:21:50.318Z" }, - { url = "https://files.pythonhosted.org/packages/c6/2a/65880dfd0e13f7f13a775998f34703674a4554906167dce02daf7865b954/ruff-0.14.0-py3-none-win_arm64.whl", hash = "sha256:f42c9495f5c13ff841b1da4cb3c2a42075409592825dada7c5885c2c844ac730", size = 12565142, upload-time = "2025-10-07T18:21:53.577Z" }, + { url = "https://files.pythonhosted.org/packages/e9/01/e0885e5519212efc7ab9d868bc39cb9781931c4c6f9b17becafa81193ec4/ruff-0.9.0-py3-none-linux_armv6l.whl", hash = "sha256:949b3513f931741e006cf267bf89611edff04e1f012013424022add3ce78f319", size = 10647069 }, + { url = "https://files.pythonhosted.org/packages/dd/69/510a9a5781dcf84c2ad513c2003936fefc802f39c745d5f2355d77fa45fd/ruff-0.9.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:99fbcb8c7fe94ae1e462ab2a1ef17cb20b25fb6438b9f198b1bcf5207a0a7916", size = 10401936 }, + { url = "https://files.pythonhosted.org/packages/07/9f/37fb86bfdf28c4cbfe94cbcc01fb9ab0cb8128548f243f34d5298b212562/ruff-0.9.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:0b022afd8eb0fcfce1e0adec84322abf4d6ce3cd285b3b99c4f17aae7decf749", size = 10010347 }, + { url = "https://files.pythonhosted.org/packages/30/0d/b95121f53c7f7bfb7ba427a35d25f983ed3b476620c5cd69f45caa5b294e/ruff-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:336567ce92c9ca8ec62780d07b5fa11fbc881dc7bb40958f93a7d621e7ab4589", size = 10882152 }, + { url = "https://files.pythonhosted.org/packages/d4/0b/a955cb6b19eb900c4c594707ab72132ce2d5cd8b5565137fb8fed21b8f08/ruff-0.9.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d338336c44bda602dc8e8766836ac0441e5b0dfeac3af1bd311a97ebaf087a75", size = 10405502 }, + { url = "https://files.pythonhosted.org/packages/1e/fa/9a6c70af74f20edd2519b89eb3322f4bfa399315cf306383443700f2d6b6/ruff-0.9.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9b3ececf523d733e90b540e7afcc0494189e8999847f8855747acd5a9a8c45f", size = 11465069 }, + { url = "https://files.pythonhosted.org/packages/ee/8b/7effac8915470da496be009fe861060baff2692f92801976b2c01cdc8c54/ruff-0.9.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a11c0872a31232e473e2e0e2107f3d294dbadd2f83fb281c3eb1c22a24866924", size = 12176850 }, + { url = "https://files.pythonhosted.org/packages/bd/ed/626179786889eca47b1e821c1582622ac0c1c8f01d60ac974f8b96867a57/ruff-0.9.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5fd06220c17a9cc0dc7fc6552f2ac4db74e8e8bff9c401d160ac59d00566f54", size = 11700963 }, + { url = "https://files.pythonhosted.org/packages/75/79/094c34ddec47fd3c61a0bc5e83ca164344c592949cff91f05961fd40922e/ruff-0.9.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0457e775c74bf3976243f910805242b7dcd389e1d440deccbd1194ca17a5728c", size = 13096560 }, + { url = "https://files.pythonhosted.org/packages/e7/23/ec85dca0dcb329835197401734501bfa1d39e72343df64628c67b72bcbf5/ruff-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05415599bbcb318f730ea1b46a39e4fbf71f6a63fdbfa1dda92efb55f19d7ecf", size = 11278658 }, + { url = "https://files.pythonhosted.org/packages/6c/17/1b3ea5f06578ea1daa08ac35f9de099d1827eea6e116a8cabbf11235c925/ruff-0.9.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:fbf9864b009e43cfc1c8bed1a6a4c529156913105780af4141ca4342148517f5", size = 10879847 }, + { url = "https://files.pythonhosted.org/packages/a6/e5/00bc97d6f419da03c0d898e95cca77311494e7274dc7cc17d94976e32e52/ruff-0.9.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:37b3da222b12e2bb2ce628e02586ab4846b1ed7f31f42a5a0683b213453b2d49", size = 10494220 }, + { url = "https://files.pythonhosted.org/packages/cc/70/d0a23d94f3e40b7ffac0e5506f33bb504672569173781a6c7cab0db6a4ba/ruff-0.9.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:733c0fcf2eb0c90055100b4ed1af9c9d87305b901a8feb6a0451fa53ed88199d", size = 11004182 }, + { url = "https://files.pythonhosted.org/packages/20/8e/367cf8e401890f823d0e4eb33635d0113719d5660b6522b7295376dd95fd/ruff-0.9.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8221a454bfe5ccdf8017512fd6bb60e6ec30f9ea252b8a80e5b73619f6c3cefd", size = 11345761 }, + { url = "https://files.pythonhosted.org/packages/fe/08/4b54e02da73060ebc29368ab15868613f7d2496bde3b01d284d5423646bc/ruff-0.9.0-py3-none-win32.whl", hash = "sha256:d345f2178afd192c7991ddee59155c58145e12ad81310b509bd2e25c5b0247b3", size = 8807005 }, + { url = "https://files.pythonhosted.org/packages/a1/a7/0b422971e897c51bf805f998d75bcfe5d4d858f5002203832875fc91b733/ruff-0.9.0-py3-none-win_amd64.whl", hash = "sha256:0cbc0905d94d21305872f7f8224e30f4bbcd532bc21b2225b2446d8fc7220d19", size = 9689974 }, + { url = "https://files.pythonhosted.org/packages/73/0e/c00f66731e514be3299801b1d9d54efae0abfe8f00a5c14155f2ab9e2920/ruff-0.9.0-py3-none-win_arm64.whl", hash = "sha256:7b1148771c6ca88f820d761350a053a5794bc58e0867739ea93eb5e41ad978cd", size = 9147729 }, ] [[package]] name = "tomli" -version = "2.3.0" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, - { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, - { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, - { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, - { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, - { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, - { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, - { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, - { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, - { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, - { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, - { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, - { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, - { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, - { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, - { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, - { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, - { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, - { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, - { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, - { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, - { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, - { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, - { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, - { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, - { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, - { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, - { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, - { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, - { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, - { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, - { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, - { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, - { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, - { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, - { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] [[package]] -name = "ty" -version = "0.0.1a22" +name = "trove-classifiers" +version = "2025.1.7.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/87/eab73cdc990d1141b60237379975efc0e913bfa0d19083daab0f497444a6/ty-0.0.1a22.tar.gz", hash = "sha256:b20ec5362830a1e9e05654c15e88607fdbb45325ec130a9a364c6dd412ecbf55", size = 4312182, upload-time = "2025-10-10T13:07:15.88Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/14/53bf5a0b2ae13a7d3c9405797d00e286aa3d08e5acb853b262a0097b0c17/trove_classifiers-2025.1.7.14.tar.gz", hash = "sha256:0fd08ab2b517ee22f2a539dcdab772ccee4e744eff61ba819846a5fac913d285", size = 16130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/30/83e2dbfbc70de8a1932b19daf05ce803d7d76cdc6251de1519a49cf1c27d/ty-0.0.1a22-py3-none-linux_armv6l.whl", hash = "sha256:6efba0c777881d2d072fa7375a64ad20357e825eff2a0b6ff9ec80399a04253b", size = 8581795, upload-time = "2025-10-10T13:06:44.396Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8c/5193534fc4a3569f517408828d077b26d6280fe8c2dd0bdc63db4403dcdb/ty-0.0.1a22-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2ada020eebe1b44403affdf45cd5c8d3fb8312c3e80469d795690093c0921f55", size = 8682602, upload-time = "2025-10-10T13:06:46.44Z" }, - { url = "https://files.pythonhosted.org/packages/22/4a/7ba53493bf37b61d3e0dfe6df910e6bc74c40d16c3effd84e15c0863d34e/ty-0.0.1a22-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ed4f11f1a5824ea10d3e46b1990d092c3f341b1d492c357d23bed2ac347fd253", size = 8278839, upload-time = "2025-10-10T13:06:48.688Z" }, - { url = "https://files.pythonhosted.org/packages/52/0a/d9862c41b9615de56d2158bfbb5177dbf5a65e94922d3dd13855f48cb91b/ty-0.0.1a22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56f48d8f94292909d596dbeb56ff7f9f070bd316aa628b45c02ca2b2f5797f31", size = 8421483, upload-time = "2025-10-10T13:06:50.75Z" }, - { url = "https://files.pythonhosted.org/packages/a5/cb/3ebe0e45b80724d4c2f849fdf304179727fd06df7fee7cd12fe6c3efe49d/ty-0.0.1a22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:733e9ac22885b6574de26bdbae439c960a06acc825a938d3780c9d498bb65339", size = 8419225, upload-time = "2025-10-10T13:06:52.533Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b5/da65f3f8ad31d881ca9987a3f6f26069a0cc649c9354adb7453ca62116bb/ty-0.0.1a22-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5135d662484e56809c77b3343614005585caadaa5c1cf643ed6a09303497652b", size = 9352336, upload-time = "2025-10-10T13:06:54.476Z" }, - { url = "https://files.pythonhosted.org/packages/a3/24/9c46f2eb16734ab0fcf3291486b1c5c528a1569f94541dc1f19f97dd2a5b/ty-0.0.1a22-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87f297f99a98154d33a3f21991979418c65d8bf480f6a1bad1e54d46d2dc7df7", size = 9857840, upload-time = "2025-10-10T13:06:56.514Z" }, - { url = "https://files.pythonhosted.org/packages/d8/ae/930c94bbbe5c049eae5355a197c39522844f55c7ab7fccd0ba061f618541/ty-0.0.1a22-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3310217eaa4dccf20b7336fcbeb072097addc6fde0c9d3f791dea437af0aa6dc", size = 9452611, upload-time = "2025-10-10T13:06:58.154Z" }, - { url = "https://files.pythonhosted.org/packages/a2/80/d8f594438465c352cf0ebd4072f5ca3be2871153a3cd279ed2f35ecd487c/ty-0.0.1a22-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12b032e81012bf5228fd65f01b50e29eb409534b6aac28ee5c48ee3b7b860ddf", size = 9214875, upload-time = "2025-10-10T13:06:59.861Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/f852fb20ac27707de495c39a02aeb056e3368833b7e12888d43b1f61594d/ty-0.0.1a22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3ffda8149cab0000a21e7a078142073e27a1a9ac03b9a0837aa2f53d1fbebcb", size = 8906715, upload-time = "2025-10-10T13:07:01.926Z" }, - { url = "https://files.pythonhosted.org/packages/40/4d/0e0b85b4179891cc3067a6e717f5161921c07873a4f545963fdf1dd3619c/ty-0.0.1a22-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:afa512e7dc78f0cf0b55f87394968ba59c46993c67bc0ef295962144fea85b12", size = 8350873, upload-time = "2025-10-10T13:07:03.999Z" }, - { url = "https://files.pythonhosted.org/packages/a1/1f/e70c63e12b4a0d97d4fd6f872dd199113666ad1b236e18838fa5e5d5502d/ty-0.0.1a22-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:069cdbbea6025f7ebbb5e9043c8d0daf760358df46df8304ef5ca5bb3e320aef", size = 8442568, upload-time = "2025-10-10T13:07:05.745Z" }, - { url = "https://files.pythonhosted.org/packages/de/3b/55518906cb3598f2b99ff1e86c838d77d006cab70cdd2a0a625d02ccb52c/ty-0.0.1a22-py3-none-musllinux_1_2_i686.whl", hash = "sha256:67d31d902e6fd67a4b3523604f635e71d2ec55acfb9118f984600584bfe0ff2a", size = 8896775, upload-time = "2025-10-10T13:07:08.02Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ea/60c654c27931bf84fa9cb463a4c4c49e8869c052fa607a6e930be717b619/ty-0.0.1a22-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f9e154f262162e6f76b01f318e469ac6c22ffce22b010c396ed34e81d8369821", size = 9054544, upload-time = "2025-10-10T13:07:09.675Z" }, - { url = "https://files.pythonhosted.org/packages/6c/60/9a6d5530d6829ccf656e6ae0fb13d70a4e2514f4fb8910266ebd54286620/ty-0.0.1a22-py3-none-win32.whl", hash = "sha256:37525433ca7b02a8fca4b8fa9dcde818bf3a413b539b9dbc8f7b39d124eb7c49", size = 8165703, upload-time = "2025-10-10T13:07:11.378Z" }, - { url = "https://files.pythonhosted.org/packages/14/9c/ac08c832643850d4e18cbc959abc69cd51d531fe11bdb691098b3cf2f562/ty-0.0.1a22-py3-none-win_amd64.whl", hash = "sha256:75d21cdeba8bcef247af89518d7ce98079cac4a55c4160cb76682ea40a18b92c", size = 8828319, upload-time = "2025-10-10T13:07:12.815Z" }, - { url = "https://files.pythonhosted.org/packages/22/df/38068fc44e3cfb455aeb41d0ff1850a4d3c9988010466d4a8d19860b8b9a/ty-0.0.1a22-py3-none-win_arm64.whl", hash = "sha256:1c7f040fe311e9696917417434c2a0e58402235be842c508002c6a2eff1398b0", size = 8367136, upload-time = "2025-10-10T13:07:14.518Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e4/5bd91cb201c80bbccd8514f6e63f51b15f46b9f692723519aab155b32836/trove_classifiers-2025.1.7.14-py3-none-any.whl", hash = "sha256:969b4ea1ef4e5e91b0398b60ae3a5e94027a50a65d5410badc920b2fc3de7ebb", size = 13536 }, ] [[package]] name = "typing-extensions" -version = "4.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, -] - -[[package]] -name = "uv-build" -version = "0.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/7d/b758d100d01d8340ea272b97480937131aaa0ba895e9c84c455e1cc41416/uv_build-0.9.1.tar.gz", hash = "sha256:677fc8cec7aee555aa60b37e299f88fb3f600dbc5c530351a2115327b9aabc9e", size = 332775, upload-time = "2025-10-09T19:10:01.671Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/51/4fa7ef98c81ca7e3db07a9a464aa45a5ded454637a1ddf9e049e441ef271/uv_build-0.9.1-py3-none-linux_armv6l.whl", hash = "sha256:dfd6d42772971a48b2e8b4dfe3554306a684cc9409c814d8ce81d790835ddeb9", size = 1400323, upload-time = "2025-10-09T19:09:31.972Z" }, - { url = "https://files.pythonhosted.org/packages/3c/2b/b2d9ee52bfa8370dabe77544b8c7296ae895ea13231e9ad1a44697c2297e/uv_build-0.9.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9a7acced14f7d98a081e79d3ca2f582384673073262f481e2ebd66ed6652765a", size = 1376399, upload-time = "2025-10-09T19:09:33.817Z" }, - { url = "https://files.pythonhosted.org/packages/a3/99/4c2695331b5ffa28fd880dca823cdb0a6150ad4659ed2c96d1d80d6488cb/uv_build-0.9.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:dc69be5a6f272888634a04961da31e567bdc8acd6a373eec0a8d71a745cd1ec8", size = 1252608, upload-time = "2025-10-09T19:09:36.939Z" }, - { url = "https://files.pythonhosted.org/packages/1a/fa/a5047be5abd7a2daddbaf4fc3a1b828aa50f08ff49a5bf86f2da869f08d6/uv_build-0.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:31d5ff4d7d3027cebbb4f60953da52b469f4d2979d993acb48b36ac804585109", size = 1452738, upload-time = "2025-10-09T19:09:38.855Z" }, - { url = "https://files.pythonhosted.org/packages/6b/74/61494056e4c7501cd04bdf7f21e9ff14642105bbf956b758eaf6c230df42/uv_build-0.9.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8f491c115c05377ed04f180f54d041cfa4e6d058a40d967202b5eaf505a42dd", size = 1357279, upload-time = "2025-10-09T19:09:40.385Z" }, - { url = "https://files.pythonhosted.org/packages/82/5b/5db82da6acb1d2791dfb647e8e2c5477de8b5026f2ba7b020dfdd4e43a0d/uv_build-0.9.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2382911c060313d44f5af2e7b638ef985256ce6aa699795ee1efe8b8b5609556", size = 1516475, upload-time = "2025-10-09T19:09:41.434Z" }, - { url = "https://files.pythonhosted.org/packages/10/06/f9bf20f479cef622ce3cc60c92f71490bbd39c2877626f7b9b04edd3a54f/uv_build-0.9.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1a2ec53de9b128bee898b55d8a990f001dbb79ecc1a6042db8936c697d744ab5", size = 1680646, upload-time = "2025-10-09T19:09:42.811Z" }, - { url = "https://files.pythonhosted.org/packages/45/a5/cbb9505e228c743738c775e971fa0f152aebc64cb7639b970ac335c59958/uv_build-0.9.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94506af348ddbbbc91420783dc0b60ab71066b0c813976e870732dbae7e852d5", size = 1577844, upload-time = "2025-10-09T19:09:44.885Z" }, - { url = "https://files.pythonhosted.org/packages/a0/15/2588f2b41b8d845ba681032cf5bb1d2e7cc2448f6d0bd9dd76e7bdb4816f/uv_build-0.9.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:592229aaf81687e3091bcd4772cab1d7a8fe9ecf64849fccead4e448e279fdb6", size = 1510332, upload-time = "2025-10-09T19:09:45.978Z" }, - { url = "https://files.pythonhosted.org/packages/98/81/fc186aca7cb08516e8f0dfe79cd8159a56efee6ffc8df1917bb49121b4e2/uv_build-0.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7460830ed3e0613322811a6e3ff27d872b0517a4789d62e89cb9734545319258", size = 1491527, upload-time = "2025-10-09T19:09:47.658Z" }, - { url = "https://files.pythonhosted.org/packages/f3/bc/0a584f8d09393329d6dd561471029a864853aaf95492a6d2360c96f5883c/uv_build-0.9.1-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:a13d545186ba4209225f09bbe5333df478c42e32e474719e2165d9c14efd9bb1", size = 1453445, upload-time = "2025-10-09T19:09:49.056Z" }, - { url = "https://files.pythonhosted.org/packages/1f/03/d595f1930857c19b90b08044002baadc2c6d4d0b0bfc82bfbe0eac2c0c29/uv_build-0.9.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:68c062035dd40a5f870f32d5a32b9cb17b4a6b0598f7b837caf47185e8549395", size = 1464643, upload-time = "2025-10-09T19:09:51.106Z" }, - { url = "https://files.pythonhosted.org/packages/c1/b9/c0448dc177f3b039b3a190e900acf443b01001ee16115ee5ae050dd81be3/uv_build-0.9.1-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:30aeaa4112babf956a35e51a7a743829e171f51cdff889d812dd348ceb2e74db", size = 1373386, upload-time = "2025-10-09T19:09:52.201Z" }, - { url = "https://files.pythonhosted.org/packages/bf/7b/3782356d76686b95a731765bbda81c951b6b693d0fc02b171c22726bd9bc/uv_build-0.9.1-py3-none-musllinux_1_1_i686.whl", hash = "sha256:3caa1eccc2b9a2e17571f678413ad32c29300cd01789fc4c309e0f86c9d8e18a", size = 1470832, upload-time = "2025-10-09T19:09:54.725Z" }, - { url = "https://files.pythonhosted.org/packages/87/1e/48e5871e69a1805b9a19c244a1c14b7313b48255626a545cc5e5f94ed37a/uv_build-0.9.1-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:256f174e797815f8d14be98150e7c89d89c02afd871c16dd74d672148030af4f", size = 1550403, upload-time = "2025-10-09T19:09:55.93Z" }, - { url = "https://files.pythonhosted.org/packages/23/3c/4114d1edd1c8ec6739ddb1536e4b53649bd90750c9571c2554f663981af0/uv_build-0.9.1-py3-none-win32.whl", hash = "sha256:324af1408ad8becc10690ca818308cfb40089eb28005e9c9e1e8cb434cc88af6", size = 1332563, upload-time = "2025-10-09T19:09:57.553Z" }, - { url = "https://files.pythonhosted.org/packages/b6/94/ce03af27ecf390eff2e9b00e745e7df083cfd0ee099f9ed4f331890e3a67/uv_build-0.9.1-py3-none-win_amd64.whl", hash = "sha256:1ac7fcc6f4af2559cbbe5e31de810d62450c0e249b5d6878d0a6a758ca106a01", size = 1412932, upload-time = "2025-10-09T19:09:59.349Z" }, - { url = "https://files.pythonhosted.org/packages/58/b2/d0499b8646f9ade1ce16150041d942922646a00cbb710432d2021670244f/uv_build-0.9.1-py3-none-win_arm64.whl", hash = "sha256:6a144c79406d687556aa48938619761a9162ac8b2cceff314b80a3a58930d803", size = 1322978, upload-time = "2025-10-09T19:10:00.553Z" }, -] - -[[package]] -name = "wheel" -version = "0.45.1" +version = "4.12.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, ] From d8134f2ab9f86c65b7d021887e04db49bfbaef11 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 14:22:46 -0400 Subject: [PATCH 26/76] Switch to miniforge and upgrade conda-build --- .github/actions/build-conda-packages/action.yaml | 3 ++- pyproject.toml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 962009a3..05cbeb79 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,8 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "24.7.1" + conda-build-version: "25.9.0" + miniforge-version: "25.3.1-0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - if: ${{ runner.os == 'Windows' }} diff --git a/pyproject.toml b/pyproject.toml index 41f94ce7..7c0de903 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] build-backend = "hatchling.build" requires = [ - # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). + # Keep pinned to ensure same version is used by `conda build`. # Keep in sync with version in `tool.uv.dev-dependencies`. "hatchling ==1.27.0", ] @@ -68,7 +68,7 @@ dev-dependencies = [ # Keep in sync with version in `build-system.requires`. "hatchling ==1.27.0", "mypy", - # Keep pinned to ensure same version is used by `conda build` (version must be available on anaconda). + # Keep pinned to ensure same version is used by `conda build`. "pytest ==7.4.4", "ruff", ] From 5e2b59301f9944848b0b71dc8e8605437a447964 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 14:55:52 -0400 Subject: [PATCH 27/76] fixup! Switch to miniforge and upgrade conda-build --- .github/actions/build-conda-packages/action.yaml | 2 +- .github/workflows/deployment.yaml | 4 ++-- .github/workflows/test.yaml | 2 +- conda.recipe/conda_build_config.yaml | 2 -- conda.recipe/meta.yaml | 4 +++- src/jdk4py/version.json | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 05cbeb79..b0471588 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -13,6 +13,6 @@ runs: run: echo "LIBARCHIVE=C:\\Miniconda\\Library\\bin\\archive.dll" >> "$GITHUB_ENV" shell: bash -l {0} - - run: conda build --no-anaconda-upload --output-folder dist . + - run: conda build --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -l {0} diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index f9b6ad99..c54510cf 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -37,7 +37,7 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.tar.bz2 + path: dist/*/jdk4py-*.conda publish: environment: deployment @@ -68,7 +68,7 @@ jobs: JDK4PY_CONDA_CHANNEL_USERNAME: ${{ vars.CONDA_CHANNEL_USERNAME }} run: | cd dist/ - ls */jdk4py-*.tar.bz2 | \ + ls */jdk4py-*.conda | \ while read filepath; do echo Uploading ${filepath} curl --fail --user "$JDK4PY_CONDA_CHANNEL_USERNAME":"$JDK4PY_CONDA_CHANNEL_TOKEN" --upload-file ${filepath} "$JDK4PY_CONDA_CHANNEL_URL/$(dirname $filepath)/" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5e938f6d..951b1e61 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -81,4 +81,4 @@ jobs: with: if-no-files-found: error name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.tar.bz2 + path: dist/*/jdk4py-*.conda diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 13912bdb..e973c064 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,5 +1,3 @@ python: - "3.10" - "3.11" - - "3.12" - - "3.13" diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index d811f847..498b58c8 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -13,6 +13,8 @@ build: # Binaries are broken on macOS without it. binary_relocation: False include_recipe: False + missing_dso_whitelist: + - "*.dylib" requirements: build: @@ -22,7 +24,7 @@ requirements: - {{ dependency }} {% endfor %} run: - - python {{ python }} + - python {{ python }} # See https://github.com/activeviam/jdk4py/issues/34. test: source_files: diff --git a/src/jdk4py/version.json b/src/jdk4py/version.json index 8264f478..2dd4fd5d 100644 --- a/src/jdk4py/version.json +++ b/src/jdk4py/version.json @@ -1 +1 @@ -"21.0.4.2" +"21.0.8.0" From 96f11be0a71970738e1c8fa5b8ec78caf78067db Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:24:20 -0400 Subject: [PATCH 28/76] Try old conda-build version --- conda.recipe/conda_build_config.yaml | 3 +++ conda.recipe/meta.yaml | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index e973c064..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,3 +1,6 @@ python: - "3.10" - "3.11" + - "3.12" + - "3.13" + - "3.14" diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 498b58c8..c2b71681 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -13,8 +13,6 @@ build: # Binaries are broken on macOS without it. binary_relocation: False include_recipe: False - missing_dso_whitelist: - - "*.dylib" requirements: build: From 92a362ca332f5648e51121ca78c86377e3cf5a68 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:25:06 -0400 Subject: [PATCH 29/76] fixup! Try old conda-build version --- .github/actions/build-conda-packages/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index b0471588..eb4890ec 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "25.9.0" + conda-build-version: "24.7.1" miniforge-version: "25.3.1-0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. From 482d604dc0e6ae5c67533f952d5009ab4221996a Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:54:45 -0400 Subject: [PATCH 30/76] Try latest conda-build again --- .github/actions/build-conda-packages/action.yaml | 2 +- conda.recipe/meta.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index eb4890ec..b0471588 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: conda-incubator/setup-miniconda@v3 with: - conda-build-version: "24.7.1" + conda-build-version: "25.9.0" miniforge-version: "25.3.1-0" # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index c2b71681..c5b4956c 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -16,20 +16,20 @@ build: requirements: build: - - python {{ python }} - - pip ==24.2 - {% for dependency in dev_dependencies if dependency.startswith("hatchling ") %} - - {{ dependency }} + {% for dependency in dev_dependencies if dependency.startswith("hatchling ==") %} + - "{{ dependency }}" {% endfor %} + - "pip ==24.2" + - python run: - - python {{ python }} # See https://github.com/activeviam/jdk4py/issues/34. + - python # See https://github.com/activeviam/jdk4py/issues/34. test: source_files: - tests/ requires: - {% for dependency in dev_dependencies if dependency.startswith("pytest ") %} - - {{ dependency }} + {% for dependency in dev_dependencies if dependency.startswith("pytest ==") %} + - "{{ dependency }}" {% endfor %} commands: - pytest From fa88ccd8691873bd00d4cd762a8c5eb8c772804e Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:07:30 -0400 Subject: [PATCH 31/76] Try to remove Windows fix --- .github/actions/build-conda-packages/action.yaml | 7 +------ conda.recipe/conda_build_config.yaml | 3 --- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index b0471588..0e19eaf2 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -8,11 +8,6 @@ runs: conda-build-version: "25.9.0" miniforge-version: "25.3.1-0" - # See https://github.com/conda/conda/issues/12563#issuecomment-1494264704. - - if: ${{ runner.os == 'Windows' }} - run: echo "LIBARCHIVE=C:\\Miniconda\\Library\\bin\\archive.dll" >> "$GITHUB_ENV" - shell: bash -l {0} - - run: conda build --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. - shell: bash -l {0} + shell: bash -el {0} diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 67948170..d05523af 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,6 +1,3 @@ python: - "3.10" - - "3.11" - - "3.12" - - "3.13" - "3.14" From 9f23de52a9c947ad94b51038acc3da4cbf19ebd0 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:33:08 -0400 Subject: [PATCH 32/76] Update runners --- .github/workflows/deployment.yaml | 6 +++--- .github/workflows/test.yaml | 20 +++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index c54510cf..bd456a74 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -11,11 +11,11 @@ jobs: strategy: matrix: runner: - - macos-13 # x64 - - macos-14 # arm64 + - macos-15-intel + - macos-26 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2022 + - windows-2025 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 951b1e61..581b5c1c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -10,11 +10,11 @@ jobs: strategy: matrix: runner: - - macos-13 # x64 - - macos-14 # arm64 + - macos-15-intel + - macos-26 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2022 + - windows-2025 python: - "3.10" include: @@ -24,6 +24,8 @@ jobs: python: "3.12" - runner: ubuntu-24.04 python: "3.13" + - runner: ubuntu-24.04 + python: "3.14" fail-fast: false steps: - uses: actions/checkout@v4 @@ -35,15 +37,15 @@ jobs: - run: uv build --wheel # No need to test each platform and Python version. - - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} run: uv run ruff format --check # No need to test each platform and Python version. - - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} run: uv run ruff check # No need to test each platform and Python version. - - if: ${{ matrix.runner == 'ubuntu-24.04' && matrix.python == '3.10' }} + - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} run: uv run mypy - run: uv run pytest @@ -62,11 +64,11 @@ jobs: strategy: matrix: runner: - - macos-13 # x64 - - macos-14 # arm64 + - macos-15-intel + - macos-26 - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2022 + - windows-2025 steps: - uses: actions/checkout@v4 From fc7434e6a27ae482eba7bbf463034b00c77f8620 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:41:56 -0400 Subject: [PATCH 33/76] Remove Conda warning --- .github/actions/build-conda-packages/action.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 0e19eaf2..cdd4cbb3 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -4,8 +4,11 @@ runs: using: composite steps: - uses: conda-incubator/setup-miniconda@v3 + # Adapted from https://github.com/conda-incubator/setup-miniconda/blob/v3.2.0/README.md#example-14-remove-defaults-channel. with: conda-build-version: "25.9.0" + conda-remove-defaults: "true" + channels: conda-forge miniforge-version: "25.3.1-0" - run: conda build --output-folder dist . From 21f148c2298c6a54955de73826d619b28de73acb Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:58:39 -0400 Subject: [PATCH 34/76] Modernize --- .../actions/build-java-runtime/action.yaml | 7 +- .github/actions/build-wheel/action.yaml | 14 + .github/workflows/deployment.yaml | 6 +- .github/workflows/test.yaml | 4 +- README.md | 2 +- hatch_build.py | 75 ----- pyproject.toml | 53 ++-- src/jdk4py/__init__.py | 15 +- src/jdk4py/version.json | 1 - uv.lock | 274 ++++++++---------- 10 files changed, 181 insertions(+), 270 deletions(-) create mode 100644 .github/actions/build-wheel/action.yaml delete mode 100644 hatch_build.py delete mode 100644 src/jdk4py/version.json diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 4a34ac5f..42ce0c4b 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -7,17 +7,16 @@ inputs: runs: using: composite steps: - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: - enable-cache: true python-version: ${{ inputs.python-version }} - version: "0.5.16" # Keep synced with same field in `deployment.yaml`. + version-file: pyproject.toml - id: get-java-version run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" shell: bash - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: temurin java-version: ${{ steps.get-java-version.outputs.version }} diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-wheel/action.yaml new file mode 100644 index 00000000..c440f7f2 --- /dev/null +++ b/.github/actions/build-wheel/action.yaml @@ -0,0 +1,14 @@ +# Remove this action and inline the first step once https://github.com/astral-sh/uv/issues/14827 is closed. +name: Build Python wheel +description: Build platform-specific Python wheel +runs: + using: composite + steps: + - run: uv build --wheel + shell: bash + + - run: uv run python -m wheel tags --platform-tag ${{ env.JDK4PY_PLATFORM_TAG }} --remove dist/*-py3-none-any.whl + env: + # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. + JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && runner.arch == 'ARM64' && 'manylinux_2_17_aarch64') || (runner.os == 'Linux' && runner.arch == 'X64' && 'manylinux_2_17_x86_64') || (runner.os == 'macOS' && runner.arch == 'ARM64' && 'macosx_11_0_arm64') || (runner.os == 'macOS' && runner.arch == 'X64' && 'macosx_10_9_x86_64') || (runner.os == 'Windows' && runner.arch == 'X64' && 'win_amd64') || '' }} + shell: bash diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index bd456a74..536d4854 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -23,7 +23,7 @@ jobs: with: python-version: "3.10" - - run: uv build --wheel + - uses: ./.github/actions/build-wheel - uses: actions/upload-artifact@v4 with: @@ -48,9 +48,9 @@ jobs: # Required for trusted publishing. id-token: write steps: - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: - version: "0.5.16" # Keep synced with same field in `build-java-runtime/action.yaml`. + version-file: pyproject.toml - uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 581b5c1c..ee13a9d1 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -34,7 +34,7 @@ jobs: with: python-version: ${{ matrix.python}} - - run: uv build --wheel + - uses: ./.github/actions/build-wheel # No need to test each platform and Python version. - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} @@ -46,7 +46,7 @@ jobs: # No need to test each platform and Python version. - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} - run: uv run mypy + run: uv run ty check - run: uv run pytest diff --git a/README.md b/README.md index 1e7e42c7..c45312da 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ PosixPath('/Users/johndoe/dev/jdk4py/jdk4py/java-runtime') >>> JAVA PosixPath('/Users/johndoe/dev/jdk4py/jdk4py/java-runtime/bin/java') >>> JAVA_VERSION -(21, 0, 4) +(21, 0, 8) >>> from subprocess import run >>> some_java_options = ["-Xmx16G", "-Xms2G"] >>> run( diff --git a/hatch_build.py b/hatch_build.py deleted file mode 100644 index 2bdf83a2..00000000 --- a/hatch_build.py +++ /dev/null @@ -1,75 +0,0 @@ -import json -import platform -from pathlib import Path -from typing import Literal - -from hatchling.builders.config import BuilderConfigBound -from hatchling.builders.hooks.plugin.interface import BuildHookInterface -from hatchling.metadata.plugin.interface import MetadataHookInterface - -_PROJECT_DIRECTORY = Path(__file__).parent - - -_Architecture = Literal["arm64", "x64"] - - -def _get_architecture(machine: str) -> _Architecture: - match machine.lower(): - case "amd64" | "x64" | "x86_64": - return "x64" - case "aarch64" | "arm64": - return "arm64" - case _: - raise ValueError(f"Unsupported machine: `{machine}`.") - - -def _get_platform_tag(system: str, architecture: _Architecture) -> str: - # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. - match system.lower(): - case "darwin": - match architecture: - case "arm64": - return "macosx_11_0_arm64" - case "x64": - return "macosx_10_9_x86_64" - case "linux": - match architecture: - case "arm64": - return "manylinux_2_17_aarch64" - case "x64": - return "manylinux_2_17_x86_64" - case "windows": - match architecture: - case "x64": - return "win_amd64" - case _: - raise ValueError( - f"Unsupported {system} architecture: `{architecture}`.", - ) - case _: - raise ValueError(f"Unsupported system: `{system}`.") - - -class BuildHook(BuildHookInterface[BuilderConfigBound]): - def initialize( - self, - version: str, # noqa: ARG002 - build_data: dict[str, object], - ) -> None: - python_tag = "py3" - abi_tag = "none" - - system = platform.system() - architecture = _get_architecture(platform.machine()) - platform_tag = _get_platform_tag(system, architecture) - - build_data["tag"] = f"{python_tag}-{abi_tag}-{platform_tag}" - - -class MetadataHook(MetadataHookInterface): - def update(self, metadata: dict[str, object]) -> None: - version = json.loads( - (_PROJECT_DIRECTORY / "src" / "jdk4py" / "version.json").read_bytes(), - ) - assert isinstance(version, str) - metadata["version"] = version diff --git a/pyproject.toml b/pyproject.toml index 7c0de903..2a6e473f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,19 @@ [build-system] -build-backend = "hatchling.build" +build-backend = "uv_build" requires = [ - # Keep pinned to ensure same version is used by `conda build`. - # Keep in sync with version in `tool.uv.dev-dependencies`. - "hatchling ==1.27.0", + # Keep pinned to ensure same version is used by `conda build` (see `conda.recipe/meta.yaml`). + # Keep in sync with `tool.uv.required-version`. + "uv-build ==0.9.2", +] + +[dependency-groups] +dev = [ + # Keep pinned to ensure same version is used by `conda build` (see `conda.recipe/meta.yaml`). + "pytest ==8.4.2", + "ruff", + "ty", + # Remove once https://github.com/astral-sh/uv/issues/14827 is closed. + "wheel", ] [project] @@ -18,30 +28,15 @@ classifiers = [ ] dependencies = [] description = "A JDK shipped in a Python package" -dynamic = ["version"] keywords = ["jdk", "java", "jvm", "jre"] name = "jdk4py" readme = "README.md" requires-python = ">=3.10" +version = "21.0.8.0" [project.urls] Repository = "https://github.com/activeviam/jdk4py" -[tool.hatch.build.hooks.custom] - -[tool.hatch.metadata.hooks.custom] - -[tool.hatch.build.targets.wheel] -artifacts = ["java-runtime"] - -[tool.mypy] -# Remove once https://github.com/python/mypy/issues/10428 is fixed. -files = "build_java_runtime.py,hatch_build.py,src,tests" -strict = true -warn_redundant_casts = true -warn_unused_configs = true -warn_unused_ignores = true - [tool.pytest.ini_options] filterwarnings = ["error"] @@ -63,14 +58,14 @@ ignore = [ ] select = ["ALL"] +[tool.ty.rules] +unused-ignore-comment = "warn" + +[tool.ty.terminal] +error-on-warning = true + [tool.uv] -dev-dependencies = [ - # Keep in sync with version in `build-system.requires`. - "hatchling ==1.27.0", - "mypy", - # Keep pinned to ensure same version is used by `conda build`. - "pytest ==7.4.4", - "ruff", -] -required-version = ">=0.5.16,<0.6" +# Keep pinned to ensure same version is used on CI. +# Keep in sync with `dependency-groups.dev.uv-build`. +required-version = "==0.9.2" trusted-publishing = "always" diff --git a/src/jdk4py/__init__.py b/src/jdk4py/__init__.py index d612f59f..2584d0e5 100644 --- a/src/jdk4py/__init__.py +++ b/src/jdk4py/__init__.py @@ -1,14 +1,15 @@ """JDK packaged for Python.""" -import json -from pathlib import Path +from importlib.metadata import version as _version +from pathlib import Path as _Path -_PACKAGE_DIRECTORY = Path(__file__).parent +_PACKAGE_DIRECTORY = _Path(__file__).parent JAVA_HOME = _PACKAGE_DIRECTORY / "java-runtime" JAVA = JAVA_HOME / "bin" / "java" -_VERSION = json.loads((_PACKAGE_DIRECTORY / "version.json").read_bytes()) -assert isinstance(_VERSION, str) -_MAJOR, _MINOR, _PATCH = tuple(int(number) for number in _VERSION.split(".")[:3]) -JAVA_VERSION = _MAJOR, _MINOR, _PATCH +_VERSION = _version("jdk4py") +_JAVA_MAJOR, _JAVA_MINOR, _JAVA_PATCH, _LIB_VERSION = [ + int(number) for number in _VERSION.split(".") +] +JAVA_VERSION = _JAVA_MAJOR, _JAVA_MINOR, _JAVA_PATCH diff --git a/src/jdk4py/version.json b/src/jdk4py/version.json deleted file mode 100644 index 2dd4fd5d..00000000 --- a/src/jdk4py/version.json +++ /dev/null @@ -1 +0,0 @@ -"21.0.8.0" diff --git a/uv.lock b/uv.lock index 0708d469..c0e0a5fe 100644 --- a/uv.lock +++ b/uv.lock @@ -1,149 +1,90 @@ version = 1 +revision = 3 requires-python = ">=3.10" [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "exceptiongroup" -version = "1.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, -] - -[[package]] -name = "hatchling" -version = "1.27.0" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "packaging" }, - { name = "pathspec" }, - { name = "pluggy" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "trove-classifiers" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8f/8a/cc1debe3514da292094f1c3a700e4ca25442489731ef7c0814358816bb03/hatchling-1.27.0.tar.gz", hash = "sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6", size = 54983 } +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl", hash = "sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b", size = 75794 }, + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, ] [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] name = "jdk4py" -version = "21.0.4.2" +version = "21.0.8.0" source = { editable = "." } [package.dev-dependencies] dev = [ - { name = "hatchling" }, - { name = "mypy" }, { name = "pytest" }, { name = "ruff" }, + { name = "ty" }, + { name = "wheel" }, ] [package.metadata] [package.metadata.requires-dev] dev = [ - { name = "hatchling", specifier = "==1.27.0" }, - { name = "mypy" }, - { name = "pytest", specifier = "==7.4.4" }, + { name = "pytest", specifier = "==8.4.2" }, { name = "ruff" }, -] - -[[package]] -name = "mypy" -version = "1.14.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/eb/2c92d8ea1e684440f54fa49ac5d9a5f19967b7b472a281f419e69a8d228e/mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6", size = 3216051 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/7a/87ae2adb31d68402da6da1e5f30c07ea6063e9f09b5e7cfc9dfa44075e74/mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb", size = 11211002 }, - { url = "https://files.pythonhosted.org/packages/e1/23/eada4c38608b444618a132be0d199b280049ded278b24cbb9d3fc59658e4/mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0", size = 10358400 }, - { url = "https://files.pythonhosted.org/packages/43/c9/d6785c6f66241c62fd2992b05057f404237deaad1566545e9f144ced07f5/mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d", size = 12095172 }, - { url = "https://files.pythonhosted.org/packages/c3/62/daa7e787770c83c52ce2aaf1a111eae5893de9e004743f51bfcad9e487ec/mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b", size = 12828732 }, - { url = "https://files.pythonhosted.org/packages/1b/a2/5fb18318a3637f29f16f4e41340b795da14f4751ef4f51c99ff39ab62e52/mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427", size = 13012197 }, - { url = "https://files.pythonhosted.org/packages/28/99/e153ce39105d164b5f02c06c35c7ba958aaff50a2babba7d080988b03fe7/mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f", size = 9780836 }, - { url = "https://files.pythonhosted.org/packages/da/11/a9422850fd506edbcdc7f6090682ecceaf1f87b9dd847f9df79942da8506/mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c", size = 11120432 }, - { url = "https://files.pythonhosted.org/packages/b6/9e/47e450fd39078d9c02d620545b2cb37993a8a8bdf7db3652ace2f80521ca/mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1", size = 10279515 }, - { url = "https://files.pythonhosted.org/packages/01/b5/6c8d33bd0f851a7692a8bfe4ee75eb82b6983a3cf39e5e32a5d2a723f0c1/mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8", size = 12025791 }, - { url = "https://files.pythonhosted.org/packages/f0/4c/e10e2c46ea37cab5c471d0ddaaa9a434dc1d28650078ac1b56c2d7b9b2e4/mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f", size = 12749203 }, - { url = "https://files.pythonhosted.org/packages/88/55/beacb0c69beab2153a0f57671ec07861d27d735a0faff135a494cd4f5020/mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1", size = 12885900 }, - { url = "https://files.pythonhosted.org/packages/a2/75/8c93ff7f315c4d086a2dfcde02f713004357d70a163eddb6c56a6a5eff40/mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae", size = 9777869 }, - { url = "https://files.pythonhosted.org/packages/43/1b/b38c079609bb4627905b74fc6a49849835acf68547ac33d8ceb707de5f52/mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14", size = 11266668 }, - { url = "https://files.pythonhosted.org/packages/6b/75/2ed0d2964c1ffc9971c729f7a544e9cd34b2cdabbe2d11afd148d7838aa2/mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9", size = 10254060 }, - { url = "https://files.pythonhosted.org/packages/a1/5f/7b8051552d4da3c51bbe8fcafffd76a6823779101a2b198d80886cd8f08e/mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11", size = 11933167 }, - { url = "https://files.pythonhosted.org/packages/04/90/f53971d3ac39d8b68bbaab9a4c6c58c8caa4d5fd3d587d16f5927eeeabe1/mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e", size = 12864341 }, - { url = "https://files.pythonhosted.org/packages/03/d2/8bc0aeaaf2e88c977db41583559319f1821c069e943ada2701e86d0430b7/mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89", size = 12972991 }, - { url = "https://files.pythonhosted.org/packages/6f/17/07815114b903b49b0f2cf7499f1c130e5aa459411596668267535fe9243c/mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b", size = 9879016 }, - { url = "https://files.pythonhosted.org/packages/9e/15/bb6a686901f59222275ab228453de741185f9d54fecbaacec041679496c6/mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255", size = 11252097 }, - { url = "https://files.pythonhosted.org/packages/f8/b3/8b0f74dfd072c802b7fa368829defdf3ee1566ba74c32a2cb2403f68024c/mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34", size = 10239728 }, - { url = "https://files.pythonhosted.org/packages/c5/9b/4fd95ab20c52bb5b8c03cc49169be5905d931de17edfe4d9d2986800b52e/mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a", size = 11924965 }, - { url = "https://files.pythonhosted.org/packages/56/9d/4a236b9c57f5d8f08ed346914b3f091a62dd7e19336b2b2a0d85485f82ff/mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9", size = 12867660 }, - { url = "https://files.pythonhosted.org/packages/40/88/a61a5497e2f68d9027de2bb139c7bb9abaeb1be1584649fa9d807f80a338/mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd", size = 12969198 }, - { url = "https://files.pythonhosted.org/packages/54/da/3d6fc5d92d324701b0c23fb413c853892bfe0e1dbe06c9138037d459756b/mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107", size = 9885276 }, - { url = "https://files.pythonhosted.org/packages/a0/b5/32dd67b69a16d088e533962e5044e51004176a9952419de0370cdaead0f8/mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1", size = 2752905 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, + { name = "ty" }, + { name = "wheel" }, ] [[package]] name = "packaging" -version = "24.2" +version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] [[package]] -name = "pathspec" -version = "0.12.1" +name = "pluggy" +version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] -name = "pluggy" -version = "1.5.0" +name = "pygments" +version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pytest" -version = "7.4.4" +version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -151,91 +92,128 @@ dependencies = [ { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287 }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, ] [[package]] name = "ruff" -version = "0.9.0" +version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/75/48/385f276f41e89623a5ea8e4eb9c619a44fdfc2a64849916b3584eca6cb9f/ruff-0.9.0.tar.gz", hash = "sha256:143f68fa5560ecf10fc49878b73cee3eab98b777fcf43b0e62d43d42f5ef9d8b", size = 3489167 } +sdist = { url = "https://files.pythonhosted.org/packages/41/b9/9bd84453ed6dd04688de9b3f3a4146a1698e8faae2ceeccce4e14c67ae17/ruff-0.14.0.tar.gz", hash = "sha256:62ec8969b7510f77945df916de15da55311fade8d6050995ff7f680afe582c57", size = 5452071, upload-time = "2025-10-07T18:21:55.763Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/01/e0885e5519212efc7ab9d868bc39cb9781931c4c6f9b17becafa81193ec4/ruff-0.9.0-py3-none-linux_armv6l.whl", hash = "sha256:949b3513f931741e006cf267bf89611edff04e1f012013424022add3ce78f319", size = 10647069 }, - { url = "https://files.pythonhosted.org/packages/dd/69/510a9a5781dcf84c2ad513c2003936fefc802f39c745d5f2355d77fa45fd/ruff-0.9.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:99fbcb8c7fe94ae1e462ab2a1ef17cb20b25fb6438b9f198b1bcf5207a0a7916", size = 10401936 }, - { url = "https://files.pythonhosted.org/packages/07/9f/37fb86bfdf28c4cbfe94cbcc01fb9ab0cb8128548f243f34d5298b212562/ruff-0.9.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:0b022afd8eb0fcfce1e0adec84322abf4d6ce3cd285b3b99c4f17aae7decf749", size = 10010347 }, - { url = "https://files.pythonhosted.org/packages/30/0d/b95121f53c7f7bfb7ba427a35d25f983ed3b476620c5cd69f45caa5b294e/ruff-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:336567ce92c9ca8ec62780d07b5fa11fbc881dc7bb40958f93a7d621e7ab4589", size = 10882152 }, - { url = "https://files.pythonhosted.org/packages/d4/0b/a955cb6b19eb900c4c594707ab72132ce2d5cd8b5565137fb8fed21b8f08/ruff-0.9.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d338336c44bda602dc8e8766836ac0441e5b0dfeac3af1bd311a97ebaf087a75", size = 10405502 }, - { url = "https://files.pythonhosted.org/packages/1e/fa/9a6c70af74f20edd2519b89eb3322f4bfa399315cf306383443700f2d6b6/ruff-0.9.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9b3ececf523d733e90b540e7afcc0494189e8999847f8855747acd5a9a8c45f", size = 11465069 }, - { url = "https://files.pythonhosted.org/packages/ee/8b/7effac8915470da496be009fe861060baff2692f92801976b2c01cdc8c54/ruff-0.9.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a11c0872a31232e473e2e0e2107f3d294dbadd2f83fb281c3eb1c22a24866924", size = 12176850 }, - { url = "https://files.pythonhosted.org/packages/bd/ed/626179786889eca47b1e821c1582622ac0c1c8f01d60ac974f8b96867a57/ruff-0.9.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5fd06220c17a9cc0dc7fc6552f2ac4db74e8e8bff9c401d160ac59d00566f54", size = 11700963 }, - { url = "https://files.pythonhosted.org/packages/75/79/094c34ddec47fd3c61a0bc5e83ca164344c592949cff91f05961fd40922e/ruff-0.9.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0457e775c74bf3976243f910805242b7dcd389e1d440deccbd1194ca17a5728c", size = 13096560 }, - { url = "https://files.pythonhosted.org/packages/e7/23/ec85dca0dcb329835197401734501bfa1d39e72343df64628c67b72bcbf5/ruff-0.9.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05415599bbcb318f730ea1b46a39e4fbf71f6a63fdbfa1dda92efb55f19d7ecf", size = 11278658 }, - { url = "https://files.pythonhosted.org/packages/6c/17/1b3ea5f06578ea1daa08ac35f9de099d1827eea6e116a8cabbf11235c925/ruff-0.9.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:fbf9864b009e43cfc1c8bed1a6a4c529156913105780af4141ca4342148517f5", size = 10879847 }, - { url = "https://files.pythonhosted.org/packages/a6/e5/00bc97d6f419da03c0d898e95cca77311494e7274dc7cc17d94976e32e52/ruff-0.9.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:37b3da222b12e2bb2ce628e02586ab4846b1ed7f31f42a5a0683b213453b2d49", size = 10494220 }, - { url = "https://files.pythonhosted.org/packages/cc/70/d0a23d94f3e40b7ffac0e5506f33bb504672569173781a6c7cab0db6a4ba/ruff-0.9.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:733c0fcf2eb0c90055100b4ed1af9c9d87305b901a8feb6a0451fa53ed88199d", size = 11004182 }, - { url = "https://files.pythonhosted.org/packages/20/8e/367cf8e401890f823d0e4eb33635d0113719d5660b6522b7295376dd95fd/ruff-0.9.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8221a454bfe5ccdf8017512fd6bb60e6ec30f9ea252b8a80e5b73619f6c3cefd", size = 11345761 }, - { url = "https://files.pythonhosted.org/packages/fe/08/4b54e02da73060ebc29368ab15868613f7d2496bde3b01d284d5423646bc/ruff-0.9.0-py3-none-win32.whl", hash = "sha256:d345f2178afd192c7991ddee59155c58145e12ad81310b509bd2e25c5b0247b3", size = 8807005 }, - { url = "https://files.pythonhosted.org/packages/a1/a7/0b422971e897c51bf805f998d75bcfe5d4d858f5002203832875fc91b733/ruff-0.9.0-py3-none-win_amd64.whl", hash = "sha256:0cbc0905d94d21305872f7f8224e30f4bbcd532bc21b2225b2446d8fc7220d19", size = 9689974 }, - { url = "https://files.pythonhosted.org/packages/73/0e/c00f66731e514be3299801b1d9d54efae0abfe8f00a5c14155f2ab9e2920/ruff-0.9.0-py3-none-win_arm64.whl", hash = "sha256:7b1148771c6ca88f820d761350a053a5794bc58e0867739ea93eb5e41ad978cd", size = 9147729 }, + { url = "https://files.pythonhosted.org/packages/3a/4e/79d463a5f80654e93fa653ebfb98e0becc3f0e7cf6219c9ddedf1e197072/ruff-0.14.0-py3-none-linux_armv6l.whl", hash = "sha256:58e15bffa7054299becf4bab8a1187062c6f8cafbe9f6e39e0d5aface455d6b3", size = 12494532, upload-time = "2025-10-07T18:21:00.373Z" }, + { url = "https://files.pythonhosted.org/packages/ee/40/e2392f445ed8e02aa6105d49db4bfff01957379064c30f4811c3bf38aece/ruff-0.14.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:838d1b065f4df676b7c9957992f2304e41ead7a50a568185efd404297d5701e8", size = 13160768, upload-time = "2025-10-07T18:21:04.73Z" }, + { url = "https://files.pythonhosted.org/packages/75/da/2a656ea7c6b9bd14c7209918268dd40e1e6cea65f4bb9880eaaa43b055cd/ruff-0.14.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:703799d059ba50f745605b04638fa7e9682cc3da084b2092feee63500ff3d9b8", size = 12363376, upload-time = "2025-10-07T18:21:07.833Z" }, + { url = "https://files.pythonhosted.org/packages/42/e2/1ffef5a1875add82416ff388fcb7ea8b22a53be67a638487937aea81af27/ruff-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ba9a8925e90f861502f7d974cc60e18ca29c72bb0ee8bfeabb6ade35a3abde7", size = 12608055, upload-time = "2025-10-07T18:21:10.72Z" }, + { url = "https://files.pythonhosted.org/packages/4a/32/986725199d7cee510d9f1dfdf95bf1efc5fa9dd714d0d85c1fb1f6be3bc3/ruff-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e41f785498bd200ffc276eb9e1570c019c1d907b07cfb081092c8ad51975bbe7", size = 12318544, upload-time = "2025-10-07T18:21:13.741Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ed/4969cefd53315164c94eaf4da7cfba1f267dc275b0abdd593d11c90829a3/ruff-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30a58c087aef4584c193aebf2700f0fbcfc1e77b89c7385e3139956fa90434e2", size = 14001280, upload-time = "2025-10-07T18:21:16.411Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ad/96c1fc9f8854c37681c9613d825925c7f24ca1acfc62a4eb3896b50bacd2/ruff-0.14.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f8d07350bc7af0a5ce8812b7d5c1a7293cf02476752f23fdfc500d24b79b783c", size = 15027286, upload-time = "2025-10-07T18:21:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/b3/00/1426978f97df4fe331074baf69615f579dc4e7c37bb4c6f57c2aad80c87f/ruff-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eec3bbbf3a7d5482b5c1f42d5fc972774d71d107d447919fca620b0be3e3b75e", size = 14451506, upload-time = "2025-10-07T18:21:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/9c1cea6e493c0cf0647674cca26b579ea9d2a213b74b5c195fbeb9678e15/ruff-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16b68e183a0e28e5c176d51004aaa40559e8f90065a10a559176713fcf435206", size = 13437384, upload-time = "2025-10-07T18:21:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/29/b4/4cd6a4331e999fc05d9d77729c95503f99eae3ba1160469f2b64866964e3/ruff-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb732d17db2e945cfcbbc52af0143eda1da36ca8ae25083dd4f66f1542fdf82e", size = 13447976, upload-time = "2025-10-07T18:21:28.83Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c0/ac42f546d07e4f49f62332576cb845d45c67cf5610d1851254e341d563b6/ruff-0.14.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:c958f66ab884b7873e72df38dcabee03d556a8f2ee1b8538ee1c2bbd619883dd", size = 13682850, upload-time = "2025-10-07T18:21:31.842Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c4/4b0c9bcadd45b4c29fe1af9c5d1dc0ca87b4021665dfbe1c4688d407aa20/ruff-0.14.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7eb0499a2e01f6e0c285afc5bac43ab380cbfc17cd43a2e1dd10ec97d6f2c42d", size = 12449825, upload-time = "2025-10-07T18:21:35.074Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a8/e2e76288e6c16540fa820d148d83e55f15e994d852485f221b9524514730/ruff-0.14.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c63b2d99fafa05efca0ab198fd48fa6030d57e4423df3f18e03aa62518c565f", size = 12272599, upload-time = "2025-10-07T18:21:38.08Z" }, + { url = "https://files.pythonhosted.org/packages/18/14/e2815d8eff847391af632b22422b8207704222ff575dec8d044f9ab779b2/ruff-0.14.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:668fce701b7a222f3f5327f86909db2bbe99c30877c8001ff934c5413812ac02", size = 13193828, upload-time = "2025-10-07T18:21:41.216Z" }, + { url = "https://files.pythonhosted.org/packages/44/c6/61ccc2987cf0aecc588ff8f3212dea64840770e60d78f5606cd7dc34de32/ruff-0.14.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a86bf575e05cb68dcb34e4c7dfe1064d44d3f0c04bbc0491949092192b515296", size = 13628617, upload-time = "2025-10-07T18:21:44.04Z" }, + { url = "https://files.pythonhosted.org/packages/73/e6/03b882225a1b0627e75339b420883dc3c90707a8917d2284abef7a58d317/ruff-0.14.0-py3-none-win32.whl", hash = "sha256:7450a243d7125d1c032cb4b93d9625dea46c8c42b4f06c6b709baac168e10543", size = 12367872, upload-time = "2025-10-07T18:21:46.67Z" }, + { url = "https://files.pythonhosted.org/packages/41/77/56cf9cf01ea0bfcc662de72540812e5ba8e9563f33ef3d37ab2174892c47/ruff-0.14.0-py3-none-win_amd64.whl", hash = "sha256:ea95da28cd874c4d9c922b39381cbd69cb7e7b49c21b8152b014bd4f52acddc2", size = 13464628, upload-time = "2025-10-07T18:21:50.318Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2a/65880dfd0e13f7f13a775998f34703674a4554906167dce02daf7865b954/ruff-0.14.0-py3-none-win_arm64.whl", hash = "sha256:f42c9495f5c13ff841b1da4cb3c2a42075409592825dada7c5885c2c844ac730", size = 12565142, upload-time = "2025-10-07T18:21:53.577Z" }, ] [[package]] name = "tomli" -version = "2.2.1" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, + { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, + { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, + { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, + { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, + { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, + { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, + { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, + { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, + { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, + { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, + { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, + { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, + { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, + { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, + { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, + { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, + { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, + { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] [[package]] -name = "trove-classifiers" -version = "2025.1.7.14" +name = "ty" +version = "0.0.1a22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/14/53bf5a0b2ae13a7d3c9405797d00e286aa3d08e5acb853b262a0097b0c17/trove_classifiers-2025.1.7.14.tar.gz", hash = "sha256:0fd08ab2b517ee22f2a539dcdab772ccee4e744eff61ba819846a5fac913d285", size = 16130 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/87/eab73cdc990d1141b60237379975efc0e913bfa0d19083daab0f497444a6/ty-0.0.1a22.tar.gz", hash = "sha256:b20ec5362830a1e9e05654c15e88607fdbb45325ec130a9a364c6dd412ecbf55", size = 4312182, upload-time = "2025-10-10T13:07:15.88Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/e4/5bd91cb201c80bbccd8514f6e63f51b15f46b9f692723519aab155b32836/trove_classifiers-2025.1.7.14-py3-none-any.whl", hash = "sha256:969b4ea1ef4e5e91b0398b60ae3a5e94027a50a65d5410badc920b2fc3de7ebb", size = 13536 }, + { url = "https://files.pythonhosted.org/packages/4d/30/83e2dbfbc70de8a1932b19daf05ce803d7d76cdc6251de1519a49cf1c27d/ty-0.0.1a22-py3-none-linux_armv6l.whl", hash = "sha256:6efba0c777881d2d072fa7375a64ad20357e825eff2a0b6ff9ec80399a04253b", size = 8581795, upload-time = "2025-10-10T13:06:44.396Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8c/5193534fc4a3569f517408828d077b26d6280fe8c2dd0bdc63db4403dcdb/ty-0.0.1a22-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2ada020eebe1b44403affdf45cd5c8d3fb8312c3e80469d795690093c0921f55", size = 8682602, upload-time = "2025-10-10T13:06:46.44Z" }, + { url = "https://files.pythonhosted.org/packages/22/4a/7ba53493bf37b61d3e0dfe6df910e6bc74c40d16c3effd84e15c0863d34e/ty-0.0.1a22-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ed4f11f1a5824ea10d3e46b1990d092c3f341b1d492c357d23bed2ac347fd253", size = 8278839, upload-time = "2025-10-10T13:06:48.688Z" }, + { url = "https://files.pythonhosted.org/packages/52/0a/d9862c41b9615de56d2158bfbb5177dbf5a65e94922d3dd13855f48cb91b/ty-0.0.1a22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56f48d8f94292909d596dbeb56ff7f9f070bd316aa628b45c02ca2b2f5797f31", size = 8421483, upload-time = "2025-10-10T13:06:50.75Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cb/3ebe0e45b80724d4c2f849fdf304179727fd06df7fee7cd12fe6c3efe49d/ty-0.0.1a22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:733e9ac22885b6574de26bdbae439c960a06acc825a938d3780c9d498bb65339", size = 8419225, upload-time = "2025-10-10T13:06:52.533Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b5/da65f3f8ad31d881ca9987a3f6f26069a0cc649c9354adb7453ca62116bb/ty-0.0.1a22-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5135d662484e56809c77b3343614005585caadaa5c1cf643ed6a09303497652b", size = 9352336, upload-time = "2025-10-10T13:06:54.476Z" }, + { url = "https://files.pythonhosted.org/packages/a3/24/9c46f2eb16734ab0fcf3291486b1c5c528a1569f94541dc1f19f97dd2a5b/ty-0.0.1a22-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87f297f99a98154d33a3f21991979418c65d8bf480f6a1bad1e54d46d2dc7df7", size = 9857840, upload-time = "2025-10-10T13:06:56.514Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ae/930c94bbbe5c049eae5355a197c39522844f55c7ab7fccd0ba061f618541/ty-0.0.1a22-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3310217eaa4dccf20b7336fcbeb072097addc6fde0c9d3f791dea437af0aa6dc", size = 9452611, upload-time = "2025-10-10T13:06:58.154Z" }, + { url = "https://files.pythonhosted.org/packages/a2/80/d8f594438465c352cf0ebd4072f5ca3be2871153a3cd279ed2f35ecd487c/ty-0.0.1a22-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12b032e81012bf5228fd65f01b50e29eb409534b6aac28ee5c48ee3b7b860ddf", size = 9214875, upload-time = "2025-10-10T13:06:59.861Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/f852fb20ac27707de495c39a02aeb056e3368833b7e12888d43b1f61594d/ty-0.0.1a22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3ffda8149cab0000a21e7a078142073e27a1a9ac03b9a0837aa2f53d1fbebcb", size = 8906715, upload-time = "2025-10-10T13:07:01.926Z" }, + { url = "https://files.pythonhosted.org/packages/40/4d/0e0b85b4179891cc3067a6e717f5161921c07873a4f545963fdf1dd3619c/ty-0.0.1a22-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:afa512e7dc78f0cf0b55f87394968ba59c46993c67bc0ef295962144fea85b12", size = 8350873, upload-time = "2025-10-10T13:07:03.999Z" }, + { url = "https://files.pythonhosted.org/packages/a1/1f/e70c63e12b4a0d97d4fd6f872dd199113666ad1b236e18838fa5e5d5502d/ty-0.0.1a22-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:069cdbbea6025f7ebbb5e9043c8d0daf760358df46df8304ef5ca5bb3e320aef", size = 8442568, upload-time = "2025-10-10T13:07:05.745Z" }, + { url = "https://files.pythonhosted.org/packages/de/3b/55518906cb3598f2b99ff1e86c838d77d006cab70cdd2a0a625d02ccb52c/ty-0.0.1a22-py3-none-musllinux_1_2_i686.whl", hash = "sha256:67d31d902e6fd67a4b3523604f635e71d2ec55acfb9118f984600584bfe0ff2a", size = 8896775, upload-time = "2025-10-10T13:07:08.02Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/60c654c27931bf84fa9cb463a4c4c49e8869c052fa607a6e930be717b619/ty-0.0.1a22-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f9e154f262162e6f76b01f318e469ac6c22ffce22b010c396ed34e81d8369821", size = 9054544, upload-time = "2025-10-10T13:07:09.675Z" }, + { url = "https://files.pythonhosted.org/packages/6c/60/9a6d5530d6829ccf656e6ae0fb13d70a4e2514f4fb8910266ebd54286620/ty-0.0.1a22-py3-none-win32.whl", hash = "sha256:37525433ca7b02a8fca4b8fa9dcde818bf3a413b539b9dbc8f7b39d124eb7c49", size = 8165703, upload-time = "2025-10-10T13:07:11.378Z" }, + { url = "https://files.pythonhosted.org/packages/14/9c/ac08c832643850d4e18cbc959abc69cd51d531fe11bdb691098b3cf2f562/ty-0.0.1a22-py3-none-win_amd64.whl", hash = "sha256:75d21cdeba8bcef247af89518d7ce98079cac4a55c4160cb76682ea40a18b92c", size = 8828319, upload-time = "2025-10-10T13:07:12.815Z" }, + { url = "https://files.pythonhosted.org/packages/22/df/38068fc44e3cfb455aeb41d0ff1850a4d3c9988010466d4a8d19860b8b9a/ty-0.0.1a22-py3-none-win_arm64.whl", hash = "sha256:1c7f040fe311e9696917417434c2a0e58402235be842c508002c6a2eff1398b0", size = 8367136, upload-time = "2025-10-10T13:07:14.518Z" }, ] [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "wheel" +version = "0.45.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, ] From 88adb8c6c634be849c828c57903c8e507ecd5531 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:06:45 -0400 Subject: [PATCH 35/76] fixup! Modernize --- conda.recipe/bld.bat | 2 +- conda.recipe/build.sh | 2 +- conda.recipe/meta.yaml | 7 +++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/conda.recipe/bld.bat b/conda.recipe/bld.bat index 8e80d845..506f70f0 100644 --- a/conda.recipe/bld.bat +++ b/conda.recipe/bld.bat @@ -1,2 +1,2 @@ -python -m pip install --verbose . +uv pip install . if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh index 8de0314a..0d750ce3 100644 --- a/conda.recipe/build.sh +++ b/conda.recipe/build.sh @@ -1 +1 @@ -python -m pip install --verbose . +uv pip install . diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index c5b4956c..9d44152a 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -1,10 +1,9 @@ {% set pyproject = load_file_data("pyproject.toml") %} -{% set dev_dependencies = pyproject["tool"]["uv"]["dev-dependencies"] %} -{% set version = load_file_data("src/jdk4py/version.json") %} +{% set dev_dependencies = pyproject["dependency-groups"]["dev"] %} package: name: {{ pyproject["project"]["name"] }} - version: {{ version }} + version: {{ pyproject["project"]["version"] }} source: path: ../ @@ -19,8 +18,8 @@ requirements: {% for dependency in dev_dependencies if dependency.startswith("hatchling ==") %} - "{{ dependency }}" {% endfor %} - - "pip ==24.2" - python + - uv run: - python # See https://github.com/activeviam/jdk4py/issues/34. From 9c01f8c9e3a15e2014ebf32efbdba81f7b956f18 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:26:43 -0400 Subject: [PATCH 36/76] Try something else --- conda.recipe/bld.bat | 2 +- conda.recipe/build.sh | 2 +- conda.recipe/meta.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conda.recipe/bld.bat b/conda.recipe/bld.bat index 506f70f0..8e80d845 100644 --- a/conda.recipe/bld.bat +++ b/conda.recipe/bld.bat @@ -1,2 +1,2 @@ -uv pip install . +python -m pip install --verbose . if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh index 0d750ce3..8de0314a 100644 --- a/conda.recipe/build.sh +++ b/conda.recipe/build.sh @@ -1 +1 @@ -uv pip install . +python -m pip install --verbose . diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 9d44152a..c6a5262a 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -18,8 +18,8 @@ requirements: {% for dependency in dev_dependencies if dependency.startswith("hatchling ==") %} - "{{ dependency }}" {% endfor %} + - "pip ==25.2" - python - - uv run: - python # See https://github.com/activeviam/jdk4py/issues/34. From 878e75d4f49e2cf1571486dcef548d25e8356988 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 20:59:45 -0400 Subject: [PATCH 37/76] fixup! Try something else --- conda.recipe/bld.bat | 2 -- conda.recipe/build.sh | 1 - conda.recipe/conda_build_config.yaml | 1 - conda.recipe/meta.yaml | 6 ++---- pyproject.toml | 9 ++------- 5 files changed, 4 insertions(+), 15 deletions(-) delete mode 100644 conda.recipe/bld.bat delete mode 100644 conda.recipe/build.sh diff --git a/conda.recipe/bld.bat b/conda.recipe/bld.bat deleted file mode 100644 index 8e80d845..00000000 --- a/conda.recipe/bld.bat +++ /dev/null @@ -1,2 +0,0 @@ -python -m pip install --verbose . -if errorlevel 1 exit 1 diff --git a/conda.recipe/build.sh b/conda.recipe/build.sh deleted file mode 100644 index 8de0314a..00000000 --- a/conda.recipe/build.sh +++ /dev/null @@ -1 +0,0 @@ -python -m pip install --verbose . diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index d05523af..0c292bc9 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,3 +1,2 @@ python: - "3.10" - - "3.14" diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index c6a5262a..29d17d35 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -12,14 +12,12 @@ build: # Binaries are broken on macOS without it. binary_relocation: False include_recipe: False + script: "uv pip install ." requirements: build: - {% for dependency in dev_dependencies if dependency.startswith("hatchling ==") %} - - "{{ dependency }}" - {% endfor %} - - "pip ==25.2" - python + - "uv {{ pyproject["tool"]["uv"]["required-version"] }}" run: - python # See https://github.com/activeviam/jdk4py/issues/34. diff --git a/pyproject.toml b/pyproject.toml index 2a6e473f..7f4b2172 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,6 @@ [build-system] build-backend = "uv_build" -requires = [ - # Keep pinned to ensure same version is used by `conda build` (see `conda.recipe/meta.yaml`). - # Keep in sync with `tool.uv.required-version`. - "uv-build ==0.9.2", -] +requires = ["uv-build"] [dependency-groups] dev = [ @@ -65,7 +61,6 @@ unused-ignore-comment = "warn" error-on-warning = true [tool.uv] -# Keep pinned to ensure same version is used on CI. -# Keep in sync with `dependency-groups.dev.uv-build`. +# Keep pinned to ensure same version is used on CI and by `conda build` (see `conda.recipe/meta.yaml`). required-version = "==0.9.2" trusted-publishing = "always" From 63f474ebac2985dc63f3a2971e8a7852fa34c4fe Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:01:39 -0400 Subject: [PATCH 38/76] fixup! Try something else --- .github/actions/build-conda-packages/action.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index cdd4cbb3..4fa177cc 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -7,10 +7,11 @@ runs: # Adapted from https://github.com/conda-incubator/setup-miniconda/blob/v3.2.0/README.md#example-14-remove-defaults-channel. with: conda-build-version: "25.9.0" - conda-remove-defaults: "true" - channels: conda-forge miniforge-version: "25.3.1-0" + - run: cat ~/.condarc + shell: bash -el {0} + - run: conda build --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -el {0} From 93106a981a319ea933a2ad695fda0837c8af60bf Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:17:42 -0400 Subject: [PATCH 39/76] fixup! Try something else --- .github/actions/build-conda-packages/action.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 4fa177cc..fcc8f596 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -6,6 +6,7 @@ runs: - uses: conda-incubator/setup-miniconda@v3 # Adapted from https://github.com/conda-incubator/setup-miniconda/blob/v3.2.0/README.md#example-14-remove-defaults-channel. with: + channels: conda-forge conda-build-version: "25.9.0" miniforge-version: "25.3.1-0" @@ -15,3 +16,6 @@ runs: - run: conda build --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -el {0} + + - run: cat ~/.condarc + shell: bash -el {0} From 2425bd259f6ccd0fa1129a7240387c67f41bcf8f Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:25:16 -0400 Subject: [PATCH 40/76] fixup! Try something else --- .github/actions/build-conda-packages/action.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index fcc8f596..85f90f54 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -8,6 +8,7 @@ runs: with: channels: conda-forge conda-build-version: "25.9.0" + conda-remove-defaults: "true" miniforge-version: "25.3.1-0" - run: cat ~/.condarc From 49a8a2c17571505ee88186c655c8a16dd510a863 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:33:42 -0400 Subject: [PATCH 41/76] Polish --- .github/actions/build-conda-packages/action.yaml | 6 ------ .github/workflows/deployment.yaml | 4 ++-- .github/workflows/test.yaml | 4 ++-- .vscode/extensions.json | 4 ++-- .vscode/settings.json | 5 +---- conda.recipe/conda_build_config.yaml | 4 ++++ 6 files changed, 11 insertions(+), 16 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 85f90f54..56fe83ab 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -11,12 +11,6 @@ runs: conda-remove-defaults: "true" miniforge-version: "25.3.1-0" - - run: cat ~/.condarc - shell: bash -el {0} - - run: conda build --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -el {0} - - - run: cat ~/.condarc - shell: bash -el {0} diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 536d4854..44b7e92b 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -17,7 +17,7 @@ jobs: - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: ./.github/actions/build-java-runtime with: @@ -52,7 +52,7 @@ jobs: with: version-file: pyproject.toml - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: merge-multiple: true path: dist/ diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ee13a9d1..35b17a53 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -28,7 +28,7 @@ jobs: python: "3.14" fail-fast: false steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: ./.github/actions/build-java-runtime with: @@ -70,7 +70,7 @@ jobs: - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: ./.github/actions/build-java-runtime with: diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 2c790a72..412441be 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,8 @@ { "recommendations": [ + "astral-sh.ty", "charliermarsh.ruff", - "esbenp.prettier-vscode", "ms-python.python", - "tamasfe.even-better-toml" + "tamasfe.even-better-toml", ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index b8f166b3..afaff9d4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,4 @@ { - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, "[python]": { "editor.codeActionsOnSave": { "source.fixAll": "explicit", @@ -17,6 +14,6 @@ "files.trimFinalNewlines": true, "files.trimTrailingWhitespace": true, "python.analysis.autoImportCompletions": true, - "python.languageServer": "Pylance", + "python.languageServer": "None", "python.testing.pytestEnabled": true, } diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 0c292bc9..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,6 @@ python: - "3.10" + - "3.11" + - "3.12" + - "3.13" + - "3.14" From 1fd75a922ba958d401a4593d6ed4e0dad5c430c6 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:08:47 -0400 Subject: [PATCH 42/76] Try with fewer Python versions --- conda.recipe/conda_build_config.yaml | 3 --- conda.recipe/meta.yaml | 2 -- 2 files changed, 5 deletions(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 67948170..e973c064 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,6 +1,3 @@ python: - "3.10" - "3.11" - - "3.12" - - "3.13" - - "3.14" diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index 29d17d35..636ca595 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -9,8 +9,6 @@ source: path: ../ build: - # Binaries are broken on macOS without it. - binary_relocation: False include_recipe: False script: "uv pip install ." From 5715370724ecec600bff7c729421ae8d34a6ee58 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:23:14 -0400 Subject: [PATCH 43/76] fixup! Try with fewer Python versions --- conda.recipe/conda_build_config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index e973c064..b3593fbb 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,3 +1,2 @@ python: - - "3.10" - "3.11" From 7935388ae958f8e27949d5c55056c719e6011918 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:23:36 -0400 Subject: [PATCH 44/76] 3.10 --- conda.recipe/conda_build_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index b3593fbb..0c292bc9 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,2 @@ python: - - "3.11" + - "3.10" From 11b4439c3e058dde1ecf2dea3df800966fda1cfc Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:33:48 -0400 Subject: [PATCH 45/76] 3.14 --- conda.recipe/conda_build_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 0c292bc9..21247a76 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,2 @@ python: - - "3.10" + - "3.14" From 72a59cfbdf73d0ca4ddc84649fdecb8ecf1251d0 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:34:00 -0400 Subject: [PATCH 46/76] 3.13 --- conda.recipe/conda_build_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 21247a76..d3f15e04 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,2 @@ python: - - "3.14" + - "3.13" From 8f3319beccb79a4cd68ca68d793617c8ef5d5c18 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:34:14 -0400 Subject: [PATCH 47/76] 3.12 --- conda.recipe/conda_build_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index d3f15e04..7f22cac1 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,2 @@ python: - - "3.13" + - "3.12" From c8880984f4cdeabccc1bc856ded0361097ad05a6 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:34:25 -0400 Subject: [PATCH 48/76] 3.11 --- conda.recipe/conda_build_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 7f22cac1..b3593fbb 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,2 @@ python: - - "3.12" + - "3.11" From 66f69e2072cd3e3c4f9cdd256855be71cecddf0b Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:34:37 -0400 Subject: [PATCH 49/76] 3.10 --- conda.recipe/conda_build_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index b3593fbb..0c292bc9 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,2 @@ python: - - "3.11" + - "3.10" From 3d667819d6287cc09a3646acb301eaaca9d7b710 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:21:07 -0400 Subject: [PATCH 50/76] Try something else --- .../actions/build-java-runtime/action.yaml | 16 ++- .github/workflows/deployment.yaml | 4 +- .github/workflows/test.yaml | 132 +++++++++++------- conda.recipe/conda_build_config.yaml | 1 + 4 files changed, 97 insertions(+), 56 deletions(-) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 42ce0c4b..0cf33fd9 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -1,15 +1,13 @@ name: Build Java runtime -description: Build the Java runtime after installing the required dependencies. -inputs: - python-version: - description: The version of Python to set up. - required: true +description: Build the Java runtime and upload it as an artifact. runs: using: composite steps: + - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 with: - python-version: ${{ inputs.python-version }} + python-version: "3.10" version-file: pyproject.toml - id: get-java-version @@ -23,3 +21,9 @@ runs: - run: uv run python build_java_runtime.py shell: bash + + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: ${{ matrix.runner }}-java-runtime + path: src/jdk4py/java-runtime/ diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 44b7e92b..4100b732 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -28,7 +28,7 @@ jobs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: jdk4py-${{ matrix.runner }}-python-wheel + name: ${{ matrix.runner }}-python-wheel path: dist/jdk4py-*.whl - uses: ./.github/actions/build-conda-packages @@ -36,7 +36,7 @@ jobs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: jdk4py-${{ matrix.runner }}-conda-packages + name: ${{ matrix.runner }}-conda-packages path: dist/*/jdk4py-*.conda publish: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 35b17a53..83014e0f 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,10 +4,34 @@ on: types: [opened, synchronize] jobs: - test: - name: Test on ${{ matrix.runner }} with Python ${{ matrix.python }} + # build-conda-packages: + # name: Test Conda packaging on ${{ matrix.runner }} + # needs: build-python-wheels + # runs-on: ${{ matrix.runner }} + # strategy: + # matrix: + # runner: + # - macos-15-intel + # - macos-26 + # - ubuntu-24.04 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 + # steps: + # - uses: ./.github/actions/build-java-runtime + # with: + # python-version: "3.10" + # - uses: ./.github/actions/build-conda-packages + # - uses: actions/upload-artifact@v4 + # with: + # if-no-files-found: error + # name: ${{ matrix.runner }}-conda-packages + # path: dist/*/jdk4py-*.conda + + build-java-runtime: + name: Build Java runtime on ${{ matrix.runner }} runs-on: ${{ matrix.runner }} strategy: + fail-fast: false matrix: runner: - macos-15-intel @@ -15,51 +39,42 @@ jobs: - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 - python: - - "3.10" - include: - - runner: ubuntu-24.04 - python: "3.11" - - runner: ubuntu-24.04 - python: "3.12" - - runner: ubuntu-24.04 - python: "3.13" - - runner: ubuntu-24.04 - python: "3.14" + steps: + - uses: ./.github/actions/build-java-runtime + + build-python-wheels: + name: Build Python wheels on ${{ matrix.runner }} + needs: build-java-runtime + runs-on: ${{ matrix.runner }} + strategy: fail-fast: false + matrix: + runner: + - macos-15-intel + - macos-26 + - ubuntu-24.04 + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2025 steps: - uses: actions/checkout@v5 - - - uses: ./.github/actions/build-java-runtime + - uses: astral-sh/setup-uv@v6 with: - python-version: ${{ matrix.python}} - + python-version: "3.10" + version-file: pyproject.toml + - uses: actions/download-artifact@v5 + with: + name: ${{ matrix.runner }}-java-runtime + path: src/jdk4py/java-runtime/ - uses: ./.github/actions/build-wheel - - # No need to test each platform and Python version. - - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} - run: uv run ruff format --check - - # No need to test each platform and Python version. - - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} - run: uv run ruff check - - # No need to test each platform and Python version. - - if: ${{ runner.os == 'Linux' && matrix.python == '3.10' }} - run: uv run ty check - - - run: uv run pytest - - # The Python wheels are not tied to a specific Python version. - - if: ${{ matrix.python == '3.10' }} - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: jdk4py-${{ matrix.runner }}-python-wheel + name: ${{ matrix.runner }}-python-wheel path: dist/jdk4py-*.whl - conda-package: - name: Test Conda packaging on ${{ matrix.runner }} + runtime-test: + name: Runtime test on ${{ matrix.runner }} with Python ${{ matrix.python }} + needs: build-java-runtime runs-on: ${{ matrix.runner }} strategy: matrix: @@ -69,18 +84,39 @@ jobs: - ubuntu-24.04 - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 + python: + - "3.10" + include: + - runner: ubuntu-24.04 + python: "3.11" + - runner: ubuntu-24.04 + python: "3.12" + - runner: ubuntu-24.04 + python: "3.13" + - runner: ubuntu-24.04 + python: "3.14" + fail-fast: false steps: - uses: actions/checkout@v5 - - - uses: ./.github/actions/build-java-runtime + - uses: astral-sh/setup-uv@v6 with: - # No need to test each Python version. - python-version: "3.10" - - - uses: ./.github/actions/build-conda-packages + python-version: ${{ matrix.python }} + version-file: pyproject.toml + - uses: actions/download-artifact@v5 + with: + name: ${{ matrix.runner }}-java-runtime + path: src/jdk4py/java-runtime/ + - run: uv run pytest - - uses: actions/upload-artifact@v4 + static-test: + name: Static test + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 with: - if-no-files-found: error - name: jdk4py-${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.conda + python-version: "3.10" + version-file: pyproject.toml + - run: uv run ruff format --check + - run: uv run ruff check + - run: uv run ty check diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 0c292bc9..e973c064 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,3 @@ python: - "3.10" + - "3.11" From aac315bdf2b40f33c8b0793bd85512cb4959c65d Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:23:53 -0400 Subject: [PATCH 51/76] fixup! Try something else --- .github/actions/build-java-runtime/action.yaml | 7 ------- .github/workflows/test.yaml | 5 +++++ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 0cf33fd9..4d016d2b 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -3,13 +3,6 @@ description: Build the Java runtime and upload it as an artifact. runs: using: composite steps: - - uses: actions/checkout@v5 - - - uses: astral-sh/setup-uv@v6 - with: - python-version: "3.10" - version-file: pyproject.toml - - id: get-java-version run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" shell: bash diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 83014e0f..175b98e0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -40,6 +40,11 @@ jobs: - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 steps: + - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 + with: + python-version: "3.10" + version-file: pyproject.toml - uses: ./.github/actions/build-java-runtime build-python-wheels: From 34b78d3f0fac3ed644d85b89bbec765a33217c6c Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:43:49 -0400 Subject: [PATCH 52/76] fixup! Try something else --- .github/actions/build-java-runtime/action.yaml | 9 ++++++++- .../action.yaml | 0 .../actions/install-java-runtime/action.yaml | 18 ++++++++++++++++++ .github/workflows/test.yaml | 16 +++++----------- 4 files changed, 31 insertions(+), 12 deletions(-) rename .github/actions/{build-wheel => build-python-wheel}/action.yaml (100%) create mode 100644 .github/actions/install-java-runtime/action.yaml diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 4d016d2b..70bed368 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -15,8 +15,15 @@ runs: - run: uv run python build_java_runtime.py shell: bash + # See https://github.com/actions/upload-artifact/blob/main/README.md#permission-loss. + - run: tar -cf artifact.tar src/jdk4py/java-runtime/ + shell: bash + - uses: actions/upload-artifact@v4 with: if-no-files-found: error name: ${{ matrix.runner }}-java-runtime - path: src/jdk4py/java-runtime/ + path: artifact.tar + + - run: rm artifact.tar + shell: bash diff --git a/.github/actions/build-wheel/action.yaml b/.github/actions/build-python-wheel/action.yaml similarity index 100% rename from .github/actions/build-wheel/action.yaml rename to .github/actions/build-python-wheel/action.yaml diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml new file mode 100644 index 00000000..b78b038d --- /dev/null +++ b/.github/actions/install-java-runtime/action.yaml @@ -0,0 +1,18 @@ +name: Install Java runtime +description: Download the Java runtime artifact and extract it. +runs: + using: composite + steps: + - uses: actions/download-artifact@v5 + with: + name: ${{ matrix.runner }}-java-runtime + path: artifact.tar + + - run: tar -fx archive.tar --directory src/jdk4py/java-runtime/ + shell: bash + + - run: ls -R src/jdk4py/java-runtime/ + shell: bash + + - run: rm artifact.tar + shell: bash diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 175b98e0..979d0f7b 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -47,8 +47,8 @@ jobs: version-file: pyproject.toml - uses: ./.github/actions/build-java-runtime - build-python-wheels: - name: Build Python wheels on ${{ matrix.runner }} + build-python-wheel: + name: Build Python wheel on ${{ matrix.runner }} needs: build-java-runtime runs-on: ${{ matrix.runner }} strategy: @@ -66,11 +66,8 @@ jobs: with: python-version: "3.10" version-file: pyproject.toml - - uses: actions/download-artifact@v5 - with: - name: ${{ matrix.runner }}-java-runtime - path: src/jdk4py/java-runtime/ - - uses: ./.github/actions/build-wheel + - uses: ./.github/actions/install-java-runtime + - uses: ./.github/actions/build-python-wheel - uses: actions/upload-artifact@v4 with: if-no-files-found: error @@ -107,10 +104,7 @@ jobs: with: python-version: ${{ matrix.python }} version-file: pyproject.toml - - uses: actions/download-artifact@v5 - with: - name: ${{ matrix.runner }}-java-runtime - path: src/jdk4py/java-runtime/ + - uses: ./.github/actions/install-java-runtime - run: uv run pytest static-test: From 715c16ded54ce5ec7e18b2e7c8731facf7ad49a6 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:47:38 -0400 Subject: [PATCH 53/76] fixup! Try something else --- .github/actions/build-java-runtime/action.yaml | 2 +- .github/actions/install-java-runtime/action.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 70bed368..b224bb1b 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -22,7 +22,7 @@ runs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ matrix.runner }}-java-runtime + name: ${{ runner-os }}-java-runtime path: artifact.tar - run: rm artifact.tar diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index b78b038d..1fbc892a 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -5,10 +5,10 @@ runs: steps: - uses: actions/download-artifact@v5 with: - name: ${{ matrix.runner }}-java-runtime + name: ${{ runner-os }}-java-runtime path: artifact.tar - - run: tar -fx archive.tar --directory src/jdk4py/java-runtime/ + - run: tar -xf archive.tar --directory src/jdk4py/java-runtime/ shell: bash - run: ls -R src/jdk4py/java-runtime/ From 17c8a6b6ea3ae1378eaafb0ed7758a70762e541d Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:49:30 -0400 Subject: [PATCH 54/76] fixup! Try something else --- .github/actions/build-java-runtime/action.yaml | 4 ++-- .github/actions/install-java-runtime/action.yaml | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index b224bb1b..1412ea49 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -15,14 +15,14 @@ runs: - run: uv run python build_java_runtime.py shell: bash - # See https://github.com/actions/upload-artifact/blob/main/README.md#permission-loss. + # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - run: tar -cf artifact.tar src/jdk4py/java-runtime/ shell: bash - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ runner-os }}-java-runtime + name: ${{ runner.os }}-java-runtime path: artifact.tar - run: rm artifact.tar diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index 1fbc892a..c2972967 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -5,9 +5,10 @@ runs: steps: - uses: actions/download-artifact@v5 with: - name: ${{ runner-os }}-java-runtime + name: ${{ runner.os }}-java-runtime path: artifact.tar + # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - run: tar -xf archive.tar --directory src/jdk4py/java-runtime/ shell: bash From f19dcdc1be12b959b2f562a19544a83972eb1cc3 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:51:43 -0400 Subject: [PATCH 55/76] fixup! Try something else --- .github/actions/build-java-runtime/action.yaml | 2 +- .github/actions/install-java-runtime/action.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 1412ea49..2a53e62e 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -22,7 +22,7 @@ runs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ runner.os }}-java-runtime + name: ${{ runner.os }}-${{ runner.arch }}-java-runtime path: artifact.tar - run: rm artifact.tar diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index c2972967..9ab0dd6d 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/download-artifact@v5 with: - name: ${{ runner.os }}-java-runtime + name: ${{ runner.os }}-${{ runner.arch }}-java-runtime path: artifact.tar # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. From fc4a167e398f66591ec2bd2eec1fe68658bbda9f Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:57:04 -0400 Subject: [PATCH 56/76] fixup! Try something else --- .../actions/install-java-runtime/action.yaml | 2 +- .github/workflows/test.yaml | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index 9ab0dd6d..e331768b 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -9,7 +9,7 @@ runs: path: artifact.tar # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - - run: tar -xf archive.tar --directory src/jdk4py/java-runtime/ + - run: tar -xf artifact.tar --directory src/jdk4py/java-runtime/ shell: bash - run: ls -R src/jdk4py/java-runtime/ diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 979d0f7b..dd37bc16 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -34,11 +34,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel - - macos-26 + # - macos-15-intel + # - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -55,11 +55,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel - - macos-26 + # - macos-15-intel + # - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -81,11 +81,11 @@ jobs: strategy: matrix: runner: - - macos-15-intel - - macos-26 + # - macos-15-intel + # - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 python: - "3.10" include: From 2ecc4198c30e037e733ed2b9d29ea01c2b953929 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:59:26 -0400 Subject: [PATCH 57/76] fixup! Try something else --- .../actions/install-java-runtime/action.yaml | 6 ++++++ .github/workflows/test.yaml | 18 +++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index e331768b..74bf0b1e 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -8,6 +8,12 @@ runs: name: ${{ runner.os }}-${{ runner.arch }}-java-runtime path: artifact.tar + - run: ls -l . + shell: bash + + - run: ls -R . + shell: bash + # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - run: tar -xf artifact.tar --directory src/jdk4py/java-runtime/ shell: bash diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index dd37bc16..2d6d7517 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -88,15 +88,15 @@ jobs: # - windows-2025 python: - "3.10" - include: - - runner: ubuntu-24.04 - python: "3.11" - - runner: ubuntu-24.04 - python: "3.12" - - runner: ubuntu-24.04 - python: "3.13" - - runner: ubuntu-24.04 - python: "3.14" + # include: + # - runner: ubuntu-24.04 + # python: "3.11" + # - runner: ubuntu-24.04 + # python: "3.12" + # - runner: ubuntu-24.04 + # python: "3.13" + # - runner: ubuntu-24.04 + # python: "3.14" fail-fast: false steps: - uses: actions/checkout@v5 From 8223dd847c4b36f4aa45f35b6c5325950c813da7 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:59:38 -0400 Subject: [PATCH 58/76] fixup! Try something else --- .github/workflows/test.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 2d6d7517..69cbfce0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -107,15 +107,15 @@ jobs: - uses: ./.github/actions/install-java-runtime - run: uv run pytest - static-test: - name: Static test - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 - with: - python-version: "3.10" - version-file: pyproject.toml - - run: uv run ruff format --check - - run: uv run ruff check - - run: uv run ty check + # static-test: + # name: Static test + # runs-on: ubuntu-24.04 + # steps: + # - uses: actions/checkout@v5 + # - uses: astral-sh/setup-uv@v6 + # with: + # python-version: "3.10" + # version-file: pyproject.toml + # - run: uv run ruff format --check + # - run: uv run ruff check + # - run: uv run ty check From 612a93687bc13b6d8826bc483694319434b8e0ef Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:02:02 -0400 Subject: [PATCH 59/76] fixup! Try something else --- .github/actions/install-java-runtime/action.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index 74bf0b1e..1da4db3a 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -6,7 +6,6 @@ runs: - uses: actions/download-artifact@v5 with: name: ${{ runner.os }}-${{ runner.arch }}-java-runtime - path: artifact.tar - run: ls -l . shell: bash From 25beea589a91a912849b9780e61391dea905a46d Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:04:30 -0400 Subject: [PATCH 60/76] fixup! Try something else --- .github/actions/install-java-runtime/action.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index 1da4db3a..b62d95ed 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -7,10 +7,7 @@ runs: with: name: ${{ runner.os }}-${{ runner.arch }}-java-runtime - - run: ls -l . - shell: bash - - - run: ls -R . + - run: mkdir -p src/jdk4py/java-runtime/ shell: bash # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. From efec83d555eb97606fb3532796604cbfa94fc2aa Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:06:27 -0400 Subject: [PATCH 61/76] fixup! Try something else --- .github/actions/install-java-runtime/action.yaml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index b62d95ed..66d1cad2 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -7,15 +7,12 @@ runs: with: name: ${{ runner.os }}-${{ runner.arch }}-java-runtime - - run: mkdir -p src/jdk4py/java-runtime/ - shell: bash - # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - - run: tar -xf artifact.tar --directory src/jdk4py/java-runtime/ + - run: tar -xf artifact.tar shell: bash - - run: ls -R src/jdk4py/java-runtime/ + - run: rm artifact.tar shell: bash - - run: rm artifact.tar + - run: ls -R src/jdk4py/java-runtime/ shell: bash From cf2ef6061255cd55819113378a9e6283793472a2 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:08:44 -0400 Subject: [PATCH 62/76] fixup! Try something else --- .github/actions/install-java-runtime/action.yaml | 3 --- .github/workflows/test.yaml | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index 66d1cad2..c887c682 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -13,6 +13,3 @@ runs: - run: rm artifact.tar shell: bash - - - run: ls -R src/jdk4py/java-runtime/ - shell: bash diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 69cbfce0..4e75de48 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -38,7 +38,7 @@ jobs: # - macos-26 - ubuntu-24.04 # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -59,7 +59,7 @@ jobs: # - macos-26 - ubuntu-24.04 # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -85,7 +85,7 @@ jobs: # - macos-26 - ubuntu-24.04 # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - windows-2025 python: - "3.10" # include: From 90405375f9237d0b2ac775415ffedc055d3e3bab Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:10:32 -0400 Subject: [PATCH 63/76] fixup! Try something else --- .github/workflows/test.yaml | 43 ++++++++++++++-------------- conda.recipe/conda_build_config.yaml | 2 +- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4e75de48..f656e9eb 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,28 +4,27 @@ on: types: [opened, synchronize] jobs: - # build-conda-packages: - # name: Test Conda packaging on ${{ matrix.runner }} - # needs: build-python-wheels - # runs-on: ${{ matrix.runner }} - # strategy: - # matrix: - # runner: - # - macos-15-intel - # - macos-26 - # - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 - # steps: - # - uses: ./.github/actions/build-java-runtime - # with: - # python-version: "3.10" - # - uses: ./.github/actions/build-conda-packages - # - uses: actions/upload-artifact@v4 - # with: - # if-no-files-found: error - # name: ${{ matrix.runner }}-conda-packages - # path: dist/*/jdk4py-*.conda + build-conda-packages: + name: Test Conda packaging on ${{ matrix.runner }} + needs: build-java-runtime + runs-on: ${{ matrix.runner }} + strategy: + matrix: + runner: + # - macos-15-intel + # - macos-26 + - ubuntu-24.04 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2025 + steps: + - uses: actions/checkout@v5 + - uses: ./.github/actions/install-java-runtime + - uses: ./.github/actions/build-conda-packages + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: ${{ matrix.runner }}-conda-packages + path: dist/*/jdk4py-*.conda build-java-runtime: name: Build Java runtime on ${{ matrix.runner }} diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index e973c064..d05523af 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,3 +1,3 @@ python: - "3.10" - - "3.11" + - "3.14" From 693860da2f49dcbda1c00497a182fa98b70ca510 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:37:33 -0400 Subject: [PATCH 64/76] fixup! Try something else --- .github/workflows/deployment.yaml | 3 ++ .github/workflows/test.yaml | 81 ++++++++++++---------------- conda.recipe/conda_build_config.yaml | 3 ++ 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 4100b732..61999d3d 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -48,8 +48,11 @@ jobs: # Required for trusted publishing. id-token: write steps: + - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 with: + python-version: "3.10" version-file: pyproject.toml - uses: actions/download-artifact@v5 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index f656e9eb..c06cc5f0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,12 +9,13 @@ jobs: needs: build-java-runtime runs-on: ${{ matrix.runner }} strategy: + fail-fast: false matrix: runner: - # - macos-15-intel - # - macos-26 + - macos-15-intel + - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 steps: - uses: actions/checkout@v5 @@ -23,7 +24,7 @@ jobs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ matrix.runner }}-conda-packages + name: jdk4py-${{ runner-os }}-${{ runner-arch }}-conda-packages path: dist/*/jdk4py-*.conda build-java-runtime: @@ -33,10 +34,10 @@ jobs: fail-fast: false matrix: runner: - # - macos-15-intel - # - macos-26 + - macos-15-intel + - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 steps: - uses: actions/checkout@v5 @@ -54,10 +55,10 @@ jobs: fail-fast: false matrix: runner: - # - macos-15-intel - # - macos-26 + - macos-15-intel + - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - windows-2025 steps: - uses: actions/checkout@v5 @@ -70,51 +71,37 @@ jobs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ matrix.runner }}-python-wheel + name: jdk4py-${{ runner.os }}-${{ runner-arch }}-python-wheel path: dist/jdk4py-*.whl - runtime-test: - name: Runtime test on ${{ matrix.runner }} with Python ${{ matrix.python }} + test: + name: Test needs: build-java-runtime - runs-on: ${{ matrix.runner }} - strategy: - matrix: - runner: - # - macos-15-intel - # - macos-26 - - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 - python: - - "3.10" - # include: - # - runner: ubuntu-24.04 - # python: "3.11" - # - runner: ubuntu-24.04 - # python: "3.12" - # - runner: ubuntu-24.04 - # python: "3.13" - # - runner: ubuntu-24.04 - # python: "3.14" - fail-fast: false + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 with: - python-version: ${{ matrix.python }} + python-version: "3.10" version-file: pyproject.toml - uses: ./.github/actions/install-java-runtime + - run: uv run ruff format --check + - run: uv run ruff check + - run: uv run ty check + # This is also tested on all supported OS/arch combinations by `conda build`. - run: uv run pytest - # static-test: - # name: Static test - # runs-on: ubuntu-24.04 - # steps: - # - uses: actions/checkout@v5 - # - uses: astral-sh/setup-uv@v6 - # with: - # python-version: "3.10" - # version-file: pyproject.toml - # - run: uv run ruff format --check - # - run: uv run ruff check - # - run: uv run ty check + agg: + name: Agg + needs: + - build-conda-packages + - build-python-wheel + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v5 + - uses: actions/download-artifact@v5 + with: + merge-multiple: true + path: dist/ + pattern: jdk4py-* + - run: ls -R dist/ diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index d05523af..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,3 +1,6 @@ python: - "3.10" + - "3.11" + - "3.12" + - "3.13" - "3.14" From f0f5de8ead6392402f954fd36bcfd55b72d948b6 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:45:31 -0400 Subject: [PATCH 65/76] fixup! Try something else --- .github/actions/build-conda-packages/action.yaml | 6 ++++++ .github/actions/build-python-wheel/action.yaml | 6 ++++++ .github/workflows/deployment.yaml | 1 - .github/workflows/test.yaml | 13 ------------- conda.recipe/conda_build_config.yaml | 4 ---- pyproject.toml | 3 ++- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/.github/actions/build-conda-packages/action.yaml b/.github/actions/build-conda-packages/action.yaml index 56fe83ab..07a29c7a 100644 --- a/.github/actions/build-conda-packages/action.yaml +++ b/.github/actions/build-conda-packages/action.yaml @@ -14,3 +14,9 @@ runs: - run: conda build --output-folder dist . # See https://github.com/conda-incubator/setup-miniconda/blame/059455a698430d8b68fa317268fa2e3da3492a98/README.md#L609-L610. shell: bash -el {0} + + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: jdk4py-${{ runner.os }}-${{ runner.arch }}-conda-packages + path: dist/*/jdk4py-*.conda diff --git a/.github/actions/build-python-wheel/action.yaml b/.github/actions/build-python-wheel/action.yaml index c440f7f2..fbba04a9 100644 --- a/.github/actions/build-python-wheel/action.yaml +++ b/.github/actions/build-python-wheel/action.yaml @@ -12,3 +12,9 @@ runs: # Tag values taken from https://pypi.org/project/numpy/2.1.0/#files. JDK4PY_PLATFORM_TAG: ${{ (runner.os == 'Linux' && runner.arch == 'ARM64' && 'manylinux_2_17_aarch64') || (runner.os == 'Linux' && runner.arch == 'X64' && 'manylinux_2_17_x86_64') || (runner.os == 'macOS' && runner.arch == 'ARM64' && 'macosx_11_0_arm64') || (runner.os == 'macOS' && runner.arch == 'X64' && 'macosx_10_9_x86_64') || (runner.os == 'Windows' && runner.arch == 'X64' && 'win_amd64') || '' }} shell: bash + + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: jdk4py-${{ runner.os }}-${{ runner-arch }}-python-wheel + path: dist/jdk4py-*.whl diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 61999d3d..644cf795 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -52,7 +52,6 @@ jobs: - uses: astral-sh/setup-uv@v6 with: - python-version: "3.10" version-file: pyproject.toml - uses: actions/download-artifact@v5 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c06cc5f0..e14d41f9 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -21,11 +21,6 @@ jobs: - uses: actions/checkout@v5 - uses: ./.github/actions/install-java-runtime - uses: ./.github/actions/build-conda-packages - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: jdk4py-${{ runner-os }}-${{ runner-arch }}-conda-packages - path: dist/*/jdk4py-*.conda build-java-runtime: name: Build Java runtime on ${{ matrix.runner }} @@ -43,7 +38,6 @@ jobs: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 with: - python-version: "3.10" version-file: pyproject.toml - uses: ./.github/actions/build-java-runtime @@ -64,15 +58,9 @@ jobs: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 with: - python-version: "3.10" version-file: pyproject.toml - uses: ./.github/actions/install-java-runtime - uses: ./.github/actions/build-python-wheel - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: jdk4py-${{ runner.os }}-${{ runner-arch }}-python-wheel - path: dist/jdk4py-*.whl test: name: Test @@ -82,7 +70,6 @@ jobs: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 with: - python-version: "3.10" version-file: pyproject.toml - uses: ./.github/actions/install-java-runtime - run: uv run ruff format --check diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 67948170..21247a76 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,6 +1,2 @@ python: - - "3.10" - - "3.11" - - "3.12" - - "3.13" - "3.14" diff --git a/pyproject.toml b/pyproject.toml index 7f4b2172..3075a658 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,8 @@ description = "A JDK shipped in a Python package" keywords = ["jdk", "java", "jvm", "jre"] name = "jdk4py" readme = "README.md" -requires-python = ">=3.10" +# Keep pinned to ensure same version is used on CI. +requires-python = "==3.10" version = "21.0.8.0" [project.urls] From 8fadf07a4d6986d99cefb10b35fcab3b4ec0761a Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:52:14 -0400 Subject: [PATCH 66/76] fixup! Try something else --- .github/actions/build-python-wheel/action.yaml | 2 +- .github/workflows/test.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/actions/build-python-wheel/action.yaml b/.github/actions/build-python-wheel/action.yaml index fbba04a9..e239db99 100644 --- a/.github/actions/build-python-wheel/action.yaml +++ b/.github/actions/build-python-wheel/action.yaml @@ -16,5 +16,5 @@ runs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: jdk4py-${{ runner.os }}-${{ runner-arch }}-python-wheel + name: jdk4py-${{ runner.os }}-${{ runner.arch }}-python-wheel path: dist/jdk4py-*.whl diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e14d41f9..528981cf 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -12,11 +12,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel + # - macos-15-intel - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: ./.github/actions/install-java-runtime @@ -29,11 +29,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel + # - macos-15-intel - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -49,11 +49,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel + # - macos-15-intel - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 From 6a9447602fc1a1fa51655c1bb8e936ca58020cf1 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:58:09 -0400 Subject: [PATCH 67/76] fixup! Try something else --- .github/workflows/test.yaml | 33 ++++++++-------------------- conda.recipe/conda_build_config.yaml | 4 ++++ 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 528981cf..4dd8c028 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -12,11 +12,11 @@ jobs: fail-fast: false matrix: runner: - # - macos-15-intel + - macos-15-intel - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2025 steps: - uses: actions/checkout@v5 - uses: ./.github/actions/install-java-runtime @@ -29,11 +29,11 @@ jobs: fail-fast: false matrix: runner: - # - macos-15-intel + - macos-15-intel - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -49,11 +49,11 @@ jobs: fail-fast: false matrix: runner: - # - macos-15-intel + - macos-15-intel - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -77,18 +77,3 @@ jobs: - run: uv run ty check # This is also tested on all supported OS/arch combinations by `conda build`. - run: uv run pytest - - agg: - name: Agg - needs: - - build-conda-packages - - build-python-wheel - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v5 - - uses: actions/download-artifact@v5 - with: - merge-multiple: true - path: dist/ - pattern: jdk4py-* - - run: ls -R dist/ diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 21247a76..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,6 @@ python: + - "3.10" + - "3.11" + - "3.12" + - "3.13" - "3.14" From e0b62237fbeb3c63b1e195d69e248495bdbb9111 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:18:02 -0400 Subject: [PATCH 68/76] fixup! Try something else --- .../actions/build-java-runtime/action.yaml | 2 +- .../actions/install-java-runtime/action.yaml | 2 +- .github/workflows/test.yaml | 53 ++++++++++++++----- conda.recipe/conda_build_config.yaml | 4 -- pyproject.toml | 2 +- uv.lock | 48 ++--------------- 6 files changed, 47 insertions(+), 64 deletions(-) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml index 2a53e62e..44d5022b 100644 --- a/.github/actions/build-java-runtime/action.yaml +++ b/.github/actions/build-java-runtime/action.yaml @@ -22,7 +22,7 @@ runs: - uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ runner.os }}-${{ runner.arch }}-java-runtime + name: java-runtime-${{ runner.os }}-${{ runner.arch }} path: artifact.tar - run: rm artifact.tar diff --git a/.github/actions/install-java-runtime/action.yaml b/.github/actions/install-java-runtime/action.yaml index c887c682..032201a8 100644 --- a/.github/actions/install-java-runtime/action.yaml +++ b/.github/actions/install-java-runtime/action.yaml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/download-artifact@v5 with: - name: ${{ runner.os }}-${{ runner.arch }}-java-runtime + name: java-runtime-${{ runner.os }}-${{ runner.arch }} # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - run: tar -xf artifact.tar diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4dd8c028..33caab59 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,18 +5,18 @@ on: jobs: build-conda-packages: - name: Test Conda packaging on ${{ matrix.runner }} + name: Build Conda packages on ${{ matrix.runner }} needs: build-java-runtime runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: runner: - - macos-15-intel - - macos-26 + # - macos-15-intel + # - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: ./.github/actions/install-java-runtime @@ -29,11 +29,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel - - macos-26 + # - macos-15-intel + # - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -49,11 +49,11 @@ jobs: fail-fast: false matrix: runner: - - macos-15-intel - - macos-26 + # - macos-15-intel + # - macos-26 - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v6 @@ -62,6 +62,33 @@ jobs: - uses: ./.github/actions/install-java-runtime - uses: ./.github/actions/build-python-wheel + deploy: + environment: deployment + name: Publish Conda packages and Python wheels + needs: + - build-conda-packages + - build-python-wheel + runs-on: ubuntu-24.04 + permissions: + # Required for trusted publishing. + id-token: write + steps: + - uses: actions/checkout@v5 + + - uses: astral-sh/setup-uv@v6 + with: + version-file: pyproject.toml + + - uses: actions/download-artifact@v5 + with: + merge-multiple: true + pattern: jdk4py-* + path: dist/ + + - if: ${{ runner.debug == '1' }} + name: List Conda packages and Python wheels + run: ls -R dist/ + test: name: Test needs: build-java-runtime diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 67948170..0c292bc9 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,6 +1,2 @@ python: - "3.10" - - "3.11" - - "3.12" - - "3.13" - - "3.14" diff --git a/pyproject.toml b/pyproject.toml index 3075a658..a95acde0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ keywords = ["jdk", "java", "jvm", "jre"] name = "jdk4py" readme = "README.md" # Keep pinned to ensure same version is used on CI. -requires-python = "==3.10" +requires-python = "==3.10.*" version = "21.0.8.0" [project.urls] diff --git a/uv.lock b/uv.lock index c0e0a5fe..379d042f 100644 --- a/uv.lock +++ b/uv.lock @@ -1,6 +1,6 @@ version = 1 revision = 3 -requires-python = ">=3.10" +requires-python = "==3.10.*" [[package]] name = "colorama" @@ -16,7 +16,7 @@ name = "exceptiongroup" version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } wheels = [ @@ -88,12 +88,12 @@ version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "exceptiongroup" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ @@ -132,46 +132,6 @@ version = "2.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, - { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, - { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, - { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, - { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, - { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, - { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, - { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, - { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, - { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, - { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, - { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, - { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, - { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, - { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, - { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, - { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, - { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, - { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, - { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, - { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, - { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, - { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, - { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, - { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, - { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, - { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, - { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, - { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, - { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, - { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, - { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, - { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, - { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, - { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] From 7acec0d891e50d08da89d40e446234082d992a0e Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:29:25 -0400 Subject: [PATCH 69/76] fixup! Try something else --- .github/workflows/test.yaml | 45 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 33caab59..307f24f3 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,23 +4,23 @@ on: types: [opened, synchronize] jobs: - build-conda-packages: - name: Build Conda packages on ${{ matrix.runner }} - needs: build-java-runtime - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - # - macos-15-intel - # - macos-26 - - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 - steps: - - uses: actions/checkout@v5 - - uses: ./.github/actions/install-java-runtime - - uses: ./.github/actions/build-conda-packages + # build-conda-packages: + # name: Build Conda packages on ${{ matrix.runner }} + # needs: build-java-runtime + # runs-on: ${{ matrix.runner }} + # strategy: + # fail-fast: false + # matrix: + # runner: + # # - macos-15-intel + # # - macos-26 + # - ubuntu-24.04 + # # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # # - windows-2025 + # steps: + # - uses: actions/checkout@v5 + # - uses: ./.github/actions/install-java-runtime + # - uses: ./.github/actions/build-conda-packages build-java-runtime: name: Build Java runtime on ${{ matrix.runner }} @@ -63,11 +63,11 @@ jobs: - uses: ./.github/actions/build-python-wheel deploy: - environment: deployment + environment: + name: test + url: https://pypi.org/project/jdk4py/21.0.8.0 name: Publish Conda packages and Python wheels - needs: - - build-conda-packages - - build-python-wheel + needs: build-python-wheel runs-on: ubuntu-24.04 permissions: # Required for trusted publishing. @@ -85,8 +85,7 @@ jobs: pattern: jdk4py-* path: dist/ - - if: ${{ runner.debug == '1' }} - name: List Conda packages and Python wheels + - name: List Conda packages and Python wheels run: ls -R dist/ test: From 832e50bbfba1b5da92323824659c795088178fa2 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 13:47:05 -0400 Subject: [PATCH 70/76] Reuse workflow --- .github/workflows/build.yaml | 62 ++++++++++++++++++++++ .github/workflows/deployment.yaml | 5 +- .github/workflows/test.yaml | 86 +------------------------------ 3 files changed, 64 insertions(+), 89 deletions(-) create mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..ad98cf02 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,62 @@ +name: Build +on: + workflow_call + +jobs: + # build-conda-packages: + # name: Build Conda packages on ${{ matrix.runner }} + # needs: build-java-runtime + # runs-on: ${{ matrix.runner }} + # strategy: + # fail-fast: false + # matrix: + # runner: + # # - macos-15-intel + # # - macos-26 + # - ubuntu-24.04 + # # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # # - windows-2025 + # steps: + # - uses: actions/checkout@v5 + # - uses: ./.github/actions/install-java-runtime + # - uses: ./.github/actions/build-conda-packages + + build-java-runtime: + name: Build Java runtime on ${{ matrix.runner }} + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + runner: + # - macos-15-intel + # - macos-26 + - ubuntu-24.04 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 + steps: + - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 + with: + version-file: pyproject.toml + - uses: ./.github/actions/build-java-runtime + + build-python-wheel: + name: Build Python wheel on ${{ matrix.runner }} + needs: build-java-runtime + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + runner: + # - macos-15-intel + # - macos-26 + - ubuntu-24.04 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 + steps: + - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 + with: + version-file: pyproject.toml + - uses: ./.github/actions/install-java-runtime + - uses: ./.github/actions/build-python-wheel diff --git a/.github/workflows/deployment.yaml b/.github/workflows/deployment.yaml index 644cf795..3205e2c3 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/deployment.yaml @@ -57,12 +57,9 @@ jobs: - uses: actions/download-artifact@v5 with: merge-multiple: true + pattern: jdk4py-* path: dist/ - - if: ${{ runner.debug == '1' }} - name: List Conda packages and Python wheels - run: ls -R dist/ - - name: Publish Conda packages env: JDK4PY_CONDA_CHANNEL_TOKEN: ${{ secrets.CONDA_CHANNEL_TOKEN }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 307f24f3..ed957d59 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,96 +4,12 @@ on: types: [opened, synchronize] jobs: - # build-conda-packages: - # name: Build Conda packages on ${{ matrix.runner }} - # needs: build-java-runtime - # runs-on: ${{ matrix.runner }} - # strategy: - # fail-fast: false - # matrix: - # runner: - # # - macos-15-intel - # # - macos-26 - # - ubuntu-24.04 - # # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # # - windows-2025 - # steps: - # - uses: actions/checkout@v5 - # - uses: ./.github/actions/install-java-runtime - # - uses: ./.github/actions/build-conda-packages - - build-java-runtime: - name: Build Java runtime on ${{ matrix.runner }} - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - # - macos-15-intel - # - macos-26 - - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 - steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 - with: - version-file: pyproject.toml - - uses: ./.github/actions/build-java-runtime - - build-python-wheel: - name: Build Python wheel on ${{ matrix.runner }} - needs: build-java-runtime - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - # - macos-15-intel - # - macos-26 - - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 - steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 - with: - version-file: pyproject.toml - - uses: ./.github/actions/install-java-runtime - - uses: ./.github/actions/build-python-wheel - - deploy: - environment: - name: test - url: https://pypi.org/project/jdk4py/21.0.8.0 - name: Publish Conda packages and Python wheels - needs: build-python-wheel - runs-on: ubuntu-24.04 - permissions: - # Required for trusted publishing. - id-token: write - steps: - - uses: actions/checkout@v5 - - - uses: astral-sh/setup-uv@v6 - with: - version-file: pyproject.toml - - - uses: actions/download-artifact@v5 - with: - merge-multiple: true - pattern: jdk4py-* - path: dist/ - - - name: List Conda packages and Python wheels - run: ls -R dist/ - test: name: Test - needs: build-java-runtime runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 + - uses: ./.github/workflows/build - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml From b14b3272e31b146a28e9443ebad2abf85bbd3cba Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 13:48:12 -0400 Subject: [PATCH 71/76] fixup! Reuse workflow --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ed957d59..5da2efd2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 - - uses: ./.github/workflows/build + - uses: ./.github/workflows/build.yaml - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml From c243dad023b0f23579d2a19cb6d58cc5f09a7965 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 13:49:32 -0400 Subject: [PATCH 72/76] fixup! Reuse workflow --- .github/workflows/test.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5da2efd2..34618a5d 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,12 +4,15 @@ on: types: [opened, synchronize] jobs: + build: + uses: ./.github/workflows/build.yaml + test: name: Test + needs: build runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 - - uses: ./.github/workflows/build.yaml - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml From 8fe9aa85e648149052b79be4c039b543508cecb2 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:03:15 -0400 Subject: [PATCH 73/76] DRY --- .../actions/build-java-runtime/action.yaml | 29 ------ .github/workflows/build.yaml | 88 ++++++++++--------- .github/workflows/cross-platform-build.yaml | 18 ++++ .../{deployment.yaml => publish.yaml} | 37 +------- .github/workflows/test.yaml | 2 +- 5 files changed, 67 insertions(+), 107 deletions(-) delete mode 100644 .github/actions/build-java-runtime/action.yaml create mode 100644 .github/workflows/cross-platform-build.yaml rename .github/workflows/{deployment.yaml => publish.yaml} (56%) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml deleted file mode 100644 index 44d5022b..00000000 --- a/.github/actions/build-java-runtime/action.yaml +++ /dev/null @@ -1,29 +0,0 @@ -name: Build Java runtime -description: Build the Java runtime and upload it as an artifact. -runs: - using: composite - steps: - - id: get-java-version - run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" - shell: bash - - - uses: actions/setup-java@v5 - with: - distribution: temurin - java-version: ${{ steps.get-java-version.outputs.version }} - - - run: uv run python build_java_runtime.py - shell: bash - - # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - - run: tar -cf artifact.tar src/jdk4py/java-runtime/ - shell: bash - - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: java-runtime-${{ runner.os }}-${{ runner.arch }} - path: artifact.tar - - - run: rm artifact.tar - shell: bash diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ad98cf02..78e0d5b9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,62 +1,64 @@ -name: Build +name: Build on ${{ inputs.runner }} on: - workflow_call + workflow_call: + inputs: + runner: + required: true + type: string jobs: - # build-conda-packages: - # name: Build Conda packages on ${{ matrix.runner }} - # needs: build-java-runtime - # runs-on: ${{ matrix.runner }} - # strategy: - # fail-fast: false - # matrix: - # runner: - # # - macos-15-intel - # # - macos-26 - # - ubuntu-24.04 - # # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # # - windows-2025 - # steps: - # - uses: actions/checkout@v5 - # - uses: ./.github/actions/install-java-runtime - # - uses: ./.github/actions/build-conda-packages + build-conda-packages: + name: Build Conda packages on ${{ inputs.runner }} + needs: build-java-runtime + runs-on: ${{ inputs.runner }} + steps: + - uses: ./.github/actions/install-java-runtime + - uses: actions/checkout@v5 + - uses: ./.github/actions/build-conda-packages build-java-runtime: - name: Build Java runtime on ${{ matrix.runner }} - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - # - macos-15-intel - # - macos-26 - - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + name: Build Java runtime on ${{ inputs.runner }} + runs-on: ${{ inputs.runner }} steps: - uses: actions/checkout@v5 + - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml - - uses: ./.github/actions/build-java-runtime + + - id: get-java-version + run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" + shell: bash + + - uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: ${{ steps.get-java-version.outputs.version }} + + - run: uv run python build_java_runtime.py + shell: bash + + # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. + - run: tar -cf artifact.tar src/jdk4py/java-runtime/ + shell: bash + + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: java-runtime-${{ runner.os }}-${{ runner.arch }} + path: artifact.tar + + - run: rm artifact.tar + shell: bash build-python-wheel: - name: Build Python wheel on ${{ matrix.runner }} + name: Build Python wheel on ${{ inputs.runner }} needs: build-java-runtime - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - # - macos-15-intel - # - macos-26 - - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + runs-on: ${{ inputs.runner }} steps: - uses: actions/checkout@v5 + - uses: ./.github/actions/install-java-runtime - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml - - uses: ./.github/actions/install-java-runtime - uses: ./.github/actions/build-python-wheel diff --git a/.github/workflows/cross-platform-build.yaml b/.github/workflows/cross-platform-build.yaml new file mode 100644 index 00000000..2c9d3012 --- /dev/null +++ b/.github/workflows/cross-platform-build.yaml @@ -0,0 +1,18 @@ +name: Cross-platform build +on: + workflow_call + +jobs: + build: + strategy: + fail-fast: false + matrix: + runner: + # - macos-15-intel + - macos-26 + - ubuntu-24.04 + # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + # - windows-2025 + uses: ./.github/workflows/build.yaml + with: + runner: ${{ matrix.runner }} diff --git a/.github/workflows/deployment.yaml b/.github/workflows/publish.yaml similarity index 56% rename from .github/workflows/deployment.yaml rename to .github/workflows/publish.yaml index 3205e2c3..714330bc 100644 --- a/.github/workflows/deployment.yaml +++ b/.github/workflows/publish.yaml @@ -1,4 +1,4 @@ -name: Deploy Conda packages and Python wheels +name: Publish Conda packages and Python wheels on: push: branches: @@ -6,38 +6,7 @@ on: jobs: build: - name: Build on ${{ matrix.runner }} - runs-on: ${{ matrix.runner }} - strategy: - matrix: - runner: - - macos-15-intel - - macos-26 - - ubuntu-24.04 - - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - - windows-2025 - steps: - - uses: actions/checkout@v5 - - - uses: ./.github/actions/build-java-runtime - with: - python-version: "3.10" - - - uses: ./.github/actions/build-wheel - - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: ${{ matrix.runner }}-python-wheel - path: dist/jdk4py-*.whl - - - uses: ./.github/actions/build-conda-packages - - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: ${{ matrix.runner }}-conda-packages - path: dist/*/jdk4py-*.conda + uses: ./.github/workflows/build.yaml publish: environment: deployment @@ -57,8 +26,8 @@ jobs: - uses: actions/download-artifact@v5 with: merge-multiple: true - pattern: jdk4py-* path: dist/ + pattern: jdk4py-* - name: Publish Conda packages env: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 34618a5d..929fe467 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -13,10 +13,10 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 + - uses: ./.github/actions/install-java-runtime - uses: astral-sh/setup-uv@v6 with: version-file: pyproject.toml - - uses: ./.github/actions/install-java-runtime - run: uv run ruff format --check - run: uv run ruff check - run: uv run ty check From 0a0a0d823bdfeb320b93a3a709463bdc780ce70a Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:04:24 -0400 Subject: [PATCH 74/76] fixup! DRY --- .github/workflows/build.yaml | 2 +- .github/workflows/test.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 78e0d5b9..8f8fdcd6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,4 @@ -name: Build on ${{ inputs.runner }} +name: Single-platform build on: workflow_call: inputs: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 929fe467..ee45863e 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,7 +5,7 @@ on: jobs: build: - uses: ./.github/workflows/build.yaml + uses: ./.github/workflows/cross-platform-build.yaml test: name: Test From d4fd4b96bef8d82847f83b658b7b135dedc6d29a Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:11:10 -0400 Subject: [PATCH 75/76] fixup! DRY --- .../actions/build-java-runtime/action.yaml | 20 +++++++++++++++++++ .github/workflows/cross-platform-build.yaml | 2 +- ...uild.yaml => platform-specific-build.yaml} | 20 +++---------------- .github/workflows/publish.yaml | 2 +- .github/workflows/test.yaml | 6 +----- 5 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 .github/actions/build-java-runtime/action.yaml rename .github/workflows/{build.yaml => platform-specific-build.yaml} (70%) diff --git a/.github/actions/build-java-runtime/action.yaml b/.github/actions/build-java-runtime/action.yaml new file mode 100644 index 00000000..cbb96092 --- /dev/null +++ b/.github/actions/build-java-runtime/action.yaml @@ -0,0 +1,20 @@ +name: Build Java runtime +description: Build the Java runtime. +runs: + using: composite + steps: + - uses: astral-sh/setup-uv@v6 + with: + version-file: pyproject.toml + + - id: get-java-version + run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" + shell: bash + + - uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: ${{ steps.get-java-version.outputs.version }} + + - run: uv run python build_java_runtime.py + shell: bash diff --git a/.github/workflows/cross-platform-build.yaml b/.github/workflows/cross-platform-build.yaml index 2c9d3012..572316aa 100644 --- a/.github/workflows/cross-platform-build.yaml +++ b/.github/workflows/cross-platform-build.yaml @@ -13,6 +13,6 @@ jobs: - ubuntu-24.04 # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. # - windows-2025 - uses: ./.github/workflows/build.yaml + uses: ./.github/workflows/platform-specific-build.yaml with: runner: ${{ matrix.runner }} diff --git a/.github/workflows/build.yaml b/.github/workflows/platform-specific-build.yaml similarity index 70% rename from .github/workflows/build.yaml rename to .github/workflows/platform-specific-build.yaml index 8f8fdcd6..4ea3b34f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/platform-specific-build.yaml @@ -1,4 +1,4 @@ -name: Single-platform build +name: Platform-specific build on: workflow_call: inputs: @@ -12,8 +12,8 @@ jobs: needs: build-java-runtime runs-on: ${{ inputs.runner }} steps: - - uses: ./.github/actions/install-java-runtime - uses: actions/checkout@v5 + - uses: ./.github/actions/install-java-runtime - uses: ./.github/actions/build-conda-packages build-java-runtime: @@ -22,21 +22,7 @@ jobs: steps: - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 - with: - version-file: pyproject.toml - - - id: get-java-version - run: uv run python -c 'from jdk4py import JAVA_VERSION; print(f"""version={".".join(str(number) for number in JAVA_VERSION)}""")' >> "$GITHUB_OUTPUT" - shell: bash - - - uses: actions/setup-java@v5 - with: - distribution: temurin - java-version: ${{ steps.get-java-version.outputs.version }} - - - run: uv run python build_java_runtime.py - shell: bash + - uses: ./.github/actions/build-java-runtime # See https://github.com/actions/upload-artifact/blob/v4.6.2/README.md#permission-loss. - run: tar -cf artifact.tar src/jdk4py/java-runtime/ diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 714330bc..fcf1fdcb 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -6,7 +6,7 @@ on: jobs: build: - uses: ./.github/workflows/build.yaml + uses: ./.github/workflows/cross-platform-build.yaml publish: environment: deployment diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ee45863e..98a042bc 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,14 +9,10 @@ jobs: test: name: Test - needs: build runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 - - uses: ./.github/actions/install-java-runtime - - uses: astral-sh/setup-uv@v6 - with: - version-file: pyproject.toml + - uses: ./.github/actions/build-java-runtime - run: uv run ruff format --check - run: uv run ruff check - run: uv run ty check From 9e3a4b1217f15a61d786619cf3434e1b35e900d0 Mon Sep 17 00:00:00 2001 From: Thibault Derousseaux <6574550+tibdex@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:17:17 -0400 Subject: [PATCH 76/76] Finally! --- .github/workflows/cross-platform-build.yaml | 6 +++--- conda.recipe/conda_build_config.yaml | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cross-platform-build.yaml b/.github/workflows/cross-platform-build.yaml index 572316aa..3226016f 100644 --- a/.github/workflows/cross-platform-build.yaml +++ b/.github/workflows/cross-platform-build.yaml @@ -8,11 +8,11 @@ jobs: fail-fast: false matrix: runner: - # - macos-15-intel + - macos-15-intel - macos-26 - ubuntu-24.04 - # - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. - # - windows-2025 + - ubuntu-24.04-arm64 # GitHub-hosted larger runner in the ActiveViam organization. + - windows-2025 uses: ./.github/workflows/platform-specific-build.yaml with: runner: ${{ matrix.runner }} diff --git a/conda.recipe/conda_build_config.yaml b/conda.recipe/conda_build_config.yaml index 0c292bc9..67948170 100644 --- a/conda.recipe/conda_build_config.yaml +++ b/conda.recipe/conda_build_config.yaml @@ -1,2 +1,6 @@ python: - "3.10" + - "3.11" + - "3.12" + - "3.13" + - "3.14"