diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f0bffbb..454425bd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,6 +132,18 @@ jobs: enable-cache: true python-version: ${{ env.PYTHON_VERSION }} + - name: Run pre-commit hooks + if: ${{ !cancelled() }} + run: >- + uvx prek run --all-files + check-json check-merge-conflict check-toml check-yaml + end-of-file-fixer fix-byte-order-marker mixed-line-ending + trailing-whitespace mdformat + + - name: Check lockfile + if: ${{ !cancelled() }} + run: uv lock --check + - name: Install type-checking environment if: ${{ !cancelled() }} run: uv sync --frozen --all-extras @@ -142,7 +154,9 @@ jobs: - name: Ty if: ${{ !cancelled() }} - run: uv run --no-sync ty check + run: >- + uv check --quiet --preview-features=check-command + --ty-version=0.0.91 --all-extras --isolated - name: Mypy if: ${{ !cancelled() }} @@ -150,7 +164,7 @@ jobs: - name: Check SPDX headers if: ${{ !cancelled() }} - run: uvx prek run spdx --all-files + uses: mwyau/spdx-header-check@v0.1.0 unit-tests: name: Unit tests (${{ matrix.os }}, Python ${{ matrix.python-version }}${{ matrix.mode != 'normal' && format(', {0}', matrix.mode) || '' }}) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9d7af272..729e089d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,7 +26,7 @@ repos: types_or: [ python ] - repo: https://github.com/astral-sh/ty-pre-commit - rev: v0.0.89 + rev: v0.0.91 hooks: - id: ty args: [ --all-extras, --isolated ] @@ -43,15 +43,7 @@ repos: - mdformat-simple-breaks - mdformat-web -- repo: local +- repo: https://github.com/mwyau/spdx-header-check + rev: v0.1.0 hooks: - - id: spdx - name: Add SPDX headers - entry: uvx reuse==6.2.0 annotate - language: system - args: - - --copyright=Albert M. W. Yau - - --license=BSD-3-Clause - - --merge-copyrights - - --skip-unrecognised - files: '^(pyproject\.toml|(?:src|tests)/.*\.(?:py|pyi))$' + - id: spdx-header-check diff --git a/benchmarks/run_benchmark_detailed.py b/benchmarks/run_benchmark_detailed.py index 82ef4098..99967ead 100644 --- a/benchmarks/run_benchmark_detailed.py +++ b/benchmarks/run_benchmark_detailed.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 Albert M. W. Yau +# +# SPDX-License-Identifier: BSD-3-Clause + """Run one explicit, reproducible PyStormTracker Hodges benchmark. The runner accepts a user-supplied input and configuration and writes the diff --git a/docs/conf.py b/docs/conf.py index b6bed662..d23d06ed 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 Albert M. W. Yau +# +# SPDX-License-Identifier: BSD-3-Clause + # Configuration file for the Sphinx documentation builder. import posixpath diff --git a/pyproject.toml b/pyproject.toml index 589052c9..fe031a1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,7 +93,7 @@ dev = [ "mypy>=2.3.0", "prek>=0.4.12", "ruff>=0.16.1", - "ty==0.0.89", + "ty==0.0.91", ] docs = [ "myst-parser>=5.1.0", diff --git a/scripts/generate_trackjson_schema.py b/scripts/generate_trackjson_schema.py index 61bdc129..a416f189 100644 --- a/scripts/generate_trackjson_schema.py +++ b/scripts/generate_trackjson_schema.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 Albert M. W. Yau +# +# SPDX-License-Identifier: BSD-3-Clause + """Generate or check the committed TrackJSON schema.""" from __future__ import annotations diff --git a/tests/__init__.py b/tests/__init__.py index dcecb911..e69de29b 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py index dcecb911..e69de29b 100644 --- a/tests/integration/__init__.py +++ b/tests/integration/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/parity/__init__.py b/tests/parity/__init__.py index dcecb911..e69de29b 100644 --- a/tests/parity/__init__.py +++ b/tests/parity/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/parity/legacy/__init__.py b/tests/parity/legacy/__init__.py index dcecb911..e69de29b 100644 --- a/tests/parity/legacy/__init__.py +++ b/tests/parity/legacy/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/parity/ncl_spherepack/__init__.py b/tests/parity/ncl_spherepack/__init__.py index dcecb911..e69de29b 100644 --- a/tests/parity/ncl_spherepack/__init__.py +++ b/tests/parity/ncl_spherepack/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/__init__.py +++ b/tests/unit/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/healpix/__init__.py b/tests/unit/healpix/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/healpix/__init__.py +++ b/tests/unit/healpix/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/hodges/__init__.py b/tests/unit/hodges/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/hodges/__init__.py +++ b/tests/unit/hodges/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/io/__init__.py b/tests/unit/io/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/io/__init__.py +++ b/tests/unit/io/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/models/__init__.py b/tests/unit/models/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/models/__init__.py +++ b/tests/unit/models/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/preprocessing/__init__.py b/tests/unit/preprocessing/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/preprocessing/__init__.py +++ b/tests/unit/preprocessing/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/tests/unit/simple/__init__.py b/tests/unit/simple/__init__.py index dcecb911..e69de29b 100644 --- a/tests/unit/simple/__init__.py +++ b/tests/unit/simple/__init__.py @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Albert M. W. Yau -# -# SPDX-License-Identifier: BSD-3-Clause diff --git a/uv.lock b/uv.lock index 610a3c12..bdda7c73 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 5 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.15' and sys_platform == 'win32'", @@ -3751,7 +3751,7 @@ dev = [ { name = "ruff", specifier = ">=0.16.1" }, { name = "sphinx", specifier = ">=9.0.4" }, { name = "sphinxcontrib-mermaid", specifier = ">=2.1.0" }, - { name = "ty", specifier = "==0.0.89" }, + { name = "ty", specifier = "==0.0.91" }, { name = "types-jsonschema", specifier = ">=4.26.0.20260518" }, ] docs = [ @@ -4714,27 +4714,27 @@ wheels = [ [[package]] name = "ty" -version = "0.0.89" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/67/ea/dfb9bdbc168c50a568809466596751afa0c7da60da03b8c12906d1decde4/ty-0.0.89.tar.gz", hash = "sha256:bc1027b1ea95cca25c2a3a0b41433c809cf4b86a384d2b2434eba4bcd34548d4", size = 7978241, upload-time = "2026-10-16T10:35:05.249Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/84/e199d9a3dc3c94c804ddd9e94b63dbe543ae7f39329574963b6a6a95872f/ty-0.0.89-py3-none-linux_armv6l.whl", hash = "sha256:739b087e8873e177ffda99ff8a3600a4a7704d06523a8e88c4493021eee40b8a", size = 14254879, upload-time = "2026-10-16T10:34:24.813Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d5/5afe09bf5c83c4e3a9e5913386a460e240a7029f2ae5fc96df5b43563a91/ty-0.0.89-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:47ebc98480c8a301955e18a8bdd67ef07090071ad47349b3254f325d3d5ab4e7", size = 13790417, upload-time = "2026-10-16T10:34:27.672Z" }, - { url = "https://files.pythonhosted.org/packages/7e/f9/88648f0ba9400dfd642c1e8dc0aeecb87945b121f3ff51f3902883c016d6/ty-0.0.89-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b0631291af5c850a15007c0ffb906d813966466e4ec12173c44977c0c5a2d51d", size = 12856900, upload-time = "2026-10-16T10:34:29.871Z" }, - { url = "https://files.pythonhosted.org/packages/6a/89/baae2b407101c4cb02f19216123900c147af8fd87cdb1ed7eba139472734/ty-0.0.89-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d768300ae16274ce656006e9199869ad68684b74400d963e1c82deddf3a22ad", size = 13653330, upload-time = "2026-10-16T10:34:32.296Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1d/293516c2e10a77134cfc40d22c3fc08edd8c5eadae9c75531ec8a9263348/ty-0.0.89-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3dd4c57ba58bab8f6c816b2c254db52b58834b5dbf8268287382f7a2f9735c8f", size = 13986215, upload-time = "2026-10-16T10:34:34.506Z" }, - { url = "https://files.pythonhosted.org/packages/2f/c3/da911c8fc22d2664692432570619576b25c7cd0a586401cab08987763094/ty-0.0.89-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1af774c24117d366b69142d4f35edee518617f8b926d13560d0334cbe5aa3f85", size = 14905008, upload-time = "2026-10-16T10:34:36.632Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c3/aed8d920b9bbf7b582e9fc0305acb2f2c748ede788e7dba9d6952e939c78/ty-0.0.89-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8147811b9b3bc2dc9338cd01c7893ac931fc3fae7aace169047ecbd627e6628", size = 15278217, upload-time = "2026-10-16T10:34:39.144Z" }, - { url = "https://files.pythonhosted.org/packages/96/92/c6b4320f08fca44ffe279e5ddeb3eae12869c6341f596931accdefea1182/ty-0.0.89-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d5f178c91d50fb62461b5e579028b7d2e92872e1d8f02e96ace26464c2277a6", size = 15206289, upload-time = "2026-10-16T10:34:41.626Z" }, - { url = "https://files.pythonhosted.org/packages/3e/61/da22c714fd4f4dff642d60fb0d8bf8da1985d126f21cc89237f8bf707c92/ty-0.0.89-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a410f10b26cc3861757b626727db9d979deba7d2a3ab59f964fac8f0514fdc", size = 14510395, upload-time = "2026-10-16T10:34:44.063Z" }, - { url = "https://files.pythonhosted.org/packages/f0/32/5f9ce2377a77ad9ff36d8996edf86b1f069c1e8716e37c7d6d668402b110/ty-0.0.89-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a70ab1a402746d7837407dc169e461fdf90945bc1eef0d3c0f1be543490060bf", size = 14767366, upload-time = "2026-10-16T10:34:46.154Z" }, - { url = "https://files.pythonhosted.org/packages/63/72/2b28c71d6ebd97b5bb1378f1806598c5dd90278f7b99a431dd3879dddcfc/ty-0.0.89-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b55c28a49bd2676eac9b3540a1dcc4cc053e4671c65dcec9fdad3dfe55fb148c", size = 13670284, upload-time = "2026-10-16T10:34:48.225Z" }, - { url = "https://files.pythonhosted.org/packages/34/cc/68b8ebf98c9bc582fddc3d2b93f6e0f53719d1ddee1c5037dfa2e1cb8467/ty-0.0.89-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c9f22edeb8176f8ab189337e8cbd8f92b66744534a2886df9e252b52ade991c", size = 13997891, upload-time = "2026-10-16T10:34:50.556Z" }, - { url = "https://files.pythonhosted.org/packages/cf/4d/a1d61e06092fd5726f48a8711bd32eac6af132308eb222a0027caba4f42d/ty-0.0.89-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0c186185cad57a1469b851096b51345de7b625e353c1f4acd338402daed22fa7", size = 14326247, upload-time = "2026-10-16T10:34:53.005Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d2/466d3762e330504a2c114dbbd0f0383229f9652dccd56277dde008bfe0da/ty-0.0.89-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5e38302ac218d2404758241093b5542ed0345d4f569096589f1810034244e998", size = 14661527, upload-time = "2026-10-16T10:34:55.555Z" }, - { url = "https://files.pythonhosted.org/packages/b1/d5/dfd7ed5e4af472b20a11ef651da4bca55f9dc8be485cd152337f94caddde/ty-0.0.89-py3-none-win32.whl", hash = "sha256:0146637ed2321717280bfe4e4b20a18813b741da280e8039d7df2bf22b0251f1", size = 13224078, upload-time = "2026-10-16T10:34:57.735Z" }, - { url = "https://files.pythonhosted.org/packages/b4/14/1ee663c422e3a2d910c5cc27e7d84bd7709a3df0aca28a713843c6c3fa5d/ty-0.0.89-py3-none-win_amd64.whl", hash = "sha256:9fc56322a1aff29a19088d2025f3c42a6d25a7035668048bb908c9f8b66f480d", size = 13727433, upload-time = "2026-10-16T10:35:00.15Z" }, - { url = "https://files.pythonhosted.org/packages/09/93/af8f7250920823ca6d582bcf0abf803fb92c8b99415ba7f40f2304102c6f/ty-0.0.89-py3-none-win_arm64.whl", hash = "sha256:1d4967c8f7bfd67c9708115b41d7049197c5d20c76fb2e136fe78b0437ada05b", size = 13287101, upload-time = "2026-10-16T10:35:02.918Z" }, +version = "0.0.91" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/08/c0/9e26817a5c94d504aab30bffbbf53f836f4763dd0a947089246ff555eebe/ty-0.0.91.tar.gz", hash = "sha256:b9c434cc1e3b106b6b9353b78ef304d5904c82cf440abcafef7134270a22b41a", size = 8035848, upload-time = "2026-10-22T18:24:52.086Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/ad/0a850c1ca8e6e802e6b0f730f0d59c9769845b2fc956e3acd7f429b665f2/ty-0.0.91-py3-none-linux_armv6l.whl", hash = "sha256:5d39e6e485854838eb7fcdb747495f5b90283d58bce869c17445120fe0c7e40a", size = 14255787, upload-time = "2026-10-22T18:24:11.284Z" }, + { url = "https://files.pythonhosted.org/packages/33/87/9ccfa2d97b8b043e4d6fab10febc50ac7856b02cf7cd64910085db806bbe/ty-0.0.91-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dcf953e25f90fbccf6cc27ef43fc4ef0961c89f54866e32cd1d7f24891b96084", size = 13822267, upload-time = "2026-10-22T18:24:14.31Z" }, + { url = "https://files.pythonhosted.org/packages/13/33/be8f62444c7840d1b0928c6d174540c0fe6b1b193ae9324c8249e8ed52b9/ty-0.0.91-py3-none-macosx_11_0_arm64.whl", hash = "sha256:78e3e66e88a9ae903afe0981ff9bd225d452ade2aeb070715842510dfcbf6de4", size = 12957620, upload-time = "2026-10-22T18:24:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/31/9f/a742f273c065c4f5a054cc2b44076207136ff1cd346adfb23da38d8894d8/ty-0.0.91-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ecaf87b3d7b508f9ea1ef8715d4cf47942719659028c92fad819d82a82ccfa", size = 13746018, upload-time = "2026-10-22T18:24:19.221Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a0/3eecf8717cbe4e05d6e02b53679aebad79f1bfcff6c9c03d7601cb7df5f9/ty-0.0.91-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0ec8fe4243aab445abece38a2b8e9b3010230d5e6b3f4e15bfa811a914d99e73", size = 13993220, upload-time = "2026-10-22T18:24:21.328Z" }, + { url = "https://files.pythonhosted.org/packages/09/b0/fb3edee2857e97d85b6c735901469fd523cf6792382e4fbbb00b065c186c/ty-0.0.91-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:577701ec2a9cf7a50f6059069399b9437bb8af7a99df24012776e95d8a55831f", size = 14936911, upload-time = "2026-10-22T18:24:24.393Z" }, + { url = "https://files.pythonhosted.org/packages/b7/2c/82f29ee86f4171807af8ab2feaf4e51211143118a3e53e9da2c2e77eca7d/ty-0.0.91-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc683f49197d63ec47b2eaa9763ddb32dafb2a31190d938b9bb8ebecc5b25173", size = 15336384, upload-time = "2026-10-22T18:24:26.472Z" }, + { url = "https://files.pythonhosted.org/packages/0b/85/e2419b19577ead84b8afa9137c12eb4bde19f926423bfe01e615db12c52c/ty-0.0.91-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8bb2784572fa22f77e417844936f6a9f831a6b0ba64749ca1065c407aefcd23", size = 15332319, upload-time = "2026-10-22T18:24:28.979Z" }, + { url = "https://files.pythonhosted.org/packages/83/06/dc28cea0796ee0268bf987d1d6f0f168605bec8898dbdbc7676049d2667b/ty-0.0.91-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f68bb6bfc8171910335a47c7e84070f28bbbc0326bcd6ef08fe3690d0509556b", size = 14600250, upload-time = "2026-10-22T18:24:31.359Z" }, + { url = "https://files.pythonhosted.org/packages/1e/71/83dd28e628698059ba6fe7081acafa7a8f65cfd90fe6573907ca8219d561/ty-0.0.91-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:63f268c80697d614d18e988476d2517177d66ec732ae104d86e57b60f197a416", size = 14812339, upload-time = "2026-10-22T18:24:33.689Z" }, + { url = "https://files.pythonhosted.org/packages/9d/5a/63c0eae2d5b02cef98a9b327b1a16b36287c140b3a7d2306ff7560177f9c/ty-0.0.91-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b0f34630aa92e222d7754d66222d116f027025cb2b9ed66e1b4b73623de74e84", size = 13703060, upload-time = "2026-10-22T18:24:36.278Z" }, + { url = "https://files.pythonhosted.org/packages/47/ac/fd6d20d00202949d775043c5f70679f38d0e48ea30eeacbffaf6e0a9754e/ty-0.0.91-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e62f8bbc17d481e01cce39bdfbe36beefda0478cb210e8045ef618d3f674a731", size = 14006236, upload-time = "2026-10-22T18:24:38.464Z" }, + { url = "https://files.pythonhosted.org/packages/fa/26/53dddd4f927dfaa73ea14cd71d97b4d92d685e365b5b037bac457e271403/ty-0.0.91-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f8bf4514a383b13d7cf86eddb55f0eb9f356fc7efeae0de714ad4fe5fc54fee8", size = 14356612, upload-time = "2026-10-22T18:24:40.621Z" }, + { url = "https://files.pythonhosted.org/packages/89/40/ccebba145dd244b2f6058ce2e4a6ff34dea36d4a5b38dd7a6ae983b65a3b/ty-0.0.91-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a6d93ab988c4c5ed92b52389b888d46ddede78e4646fe28db615bbeff89cdf82", size = 14674843, upload-time = "2026-10-22T18:24:43.325Z" }, + { url = "https://files.pythonhosted.org/packages/08/6f/8a7701adf1f539a893274358f12ba62773d5bb40920bfc53e0d852bfd576/ty-0.0.91-py3-none-win32.whl", hash = "sha256:b9f4bba8486a3d13babc11f8115369d0a0dc8bef127b7cf4f4c5eed9d4dbfa01", size = 13260545, upload-time = "2026-10-22T18:24:45.715Z" }, + { url = "https://files.pythonhosted.org/packages/fc/63/27c8051a72328ee81f47dace5e2c63e7db43bcae935db25a9dbd4d0e59b2/ty-0.0.91-py3-none-win_amd64.whl", hash = "sha256:5ac9eaf938e7fba4dd6c3358f852e6eb3127aa7bde0a76d9807c41f60ad73a29", size = 13759484, upload-time = "2026-10-22T18:24:48.111Z" }, + { url = "https://files.pythonhosted.org/packages/aa/a9/1f6c3694b7b33be4ae9a272f71a99a7dd27ec020c32a22049e9c0e79f576/ty-0.0.91-py3-none-win_arm64.whl", hash = "sha256:35820957639db1fb8c643273670967192c308038836005bdf3bfef111aff64a0", size = 13318343, upload-time = "2026-10-22T18:24:50.116Z" }, ] [[package]]