diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index c9685d0..d556964 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -19,7 +19,7 @@ jobs: python-version: ${{ matrix.python-version }} - uses: astral-sh/setup-uv@v5 with: - version: 0.6.3 + version: "0.6.3" python-version: ${{ matrix.python-version }} enable-cache: true cache-dependency-glob: "uv.lock" diff --git a/.github/workflows/palette.yml b/.github/workflows/palette.yml new file mode 100644 index 0000000..36e471e --- /dev/null +++ b/.github/workflows/palette.yml @@ -0,0 +1,40 @@ +name: Palette + +on: + push: + branches: + - "main" + workflow_dispatch: + schedule: + - cron: "0 0 * * *" # Run every day at midnight UTC + +jobs: + createPullRequest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v5 + with: + version: "0.6.3" + python-version: "3.13" + enable-cache: true + cache-dependency-glob: "uv.lock" + + - name: Fetch latest palette + run: curl -Lo src/palette.json 'https://raw.githubusercontent.com/catppuccin/palette/main/palette.json' + + - name: Run codegen + run: uv run --extra matplotlib build.py + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7 + with: + commit-message: "feat: auto-sync upstream palettes" + committer: "GitHub " + author: "${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>" + signoff: false + branch: new-palettes + delete-branch: true + title: "feat: auto-sync upstream palettes" + body: | + Auto-update `src/palette.json` based on https://github.com/catppuccin/palette/blob/main/palette.json diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml index c681f0a..6cc1c4c 100644 --- a/.github/workflows/release-please.yaml +++ b/.github/workflows/release-please.yaml @@ -34,7 +34,7 @@ jobs: python-version-file: "pyproject.toml" - uses: astral-sh/setup-uv@v5 with: - version: 0.6.3 + version: "0.6.3" enable-cache: true cache-dependency-glob: "uv.lock" - run: uv build diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index a60bbd9..01e0b82 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -21,7 +21,7 @@ jobs: python-version: ${{ matrix.python-version }} - uses: astral-sh/setup-uv@v5 with: - version: 0.6.3 + version: "0.6.3" python-version: "${{ matrix.python-version }}" enable-cache: true cache-dependency-glob: "uv.lock" diff --git a/assets/frappe/bar.png b/assets/frappe/bar.png index 0e24cfd..3668485 100644 Binary files a/assets/frappe/bar.png and b/assets/frappe/bar.png differ diff --git a/assets/frappe/boxplot.png b/assets/frappe/boxplot.png index 6c41706..31005b4 100644 Binary files a/assets/frappe/boxplot.png and b/assets/frappe/boxplot.png differ diff --git a/assets/frappe/imshow.png b/assets/frappe/imshow.png index eaf421c..7df653d 100644 Binary files a/assets/frappe/imshow.png and b/assets/frappe/imshow.png differ diff --git a/assets/frappe/palette.png b/assets/frappe/palette.png index 2fd15c4..2987e1d 100644 Binary files a/assets/frappe/palette.png and b/assets/frappe/palette.png differ diff --git a/assets/frappe/patches.png b/assets/frappe/patches.png index 2153059..845ada2 100644 Binary files a/assets/frappe/patches.png and b/assets/frappe/patches.png differ diff --git a/assets/frappe/plot.png b/assets/frappe/plot.png index 8e5d352..711d3e4 100644 Binary files a/assets/frappe/plot.png and b/assets/frappe/plot.png differ diff --git a/assets/frappe/scatter.png b/assets/frappe/scatter.png index a86a398..4360e40 100644 Binary files a/assets/frappe/scatter.png and b/assets/frappe/scatter.png differ diff --git a/assets/latte/bar.png b/assets/latte/bar.png index a30e885..b0bb436 100644 Binary files a/assets/latte/bar.png and b/assets/latte/bar.png differ diff --git a/assets/latte/boxplot.png b/assets/latte/boxplot.png index 55a73c5..252efff 100644 Binary files a/assets/latte/boxplot.png and b/assets/latte/boxplot.png differ diff --git a/assets/latte/imshow.png b/assets/latte/imshow.png index 0c6aecd..c1d5ee8 100644 Binary files a/assets/latte/imshow.png and b/assets/latte/imshow.png differ diff --git a/assets/latte/palette.png b/assets/latte/palette.png index 5787757..7dea75b 100644 Binary files a/assets/latte/palette.png and b/assets/latte/palette.png differ diff --git a/assets/latte/patches.png b/assets/latte/patches.png index 117c527..7d2ee55 100644 Binary files a/assets/latte/patches.png and b/assets/latte/patches.png differ diff --git a/assets/latte/plot.png b/assets/latte/plot.png index 69cb8c3..51b8008 100644 Binary files a/assets/latte/plot.png and b/assets/latte/plot.png differ diff --git a/assets/latte/scatter.png b/assets/latte/scatter.png index d9d3b2e..feba956 100644 Binary files a/assets/latte/scatter.png and b/assets/latte/scatter.png differ diff --git a/assets/macchiato/bar.png b/assets/macchiato/bar.png index 9ebaf24..09b7ced 100644 Binary files a/assets/macchiato/bar.png and b/assets/macchiato/bar.png differ diff --git a/assets/macchiato/boxplot.png b/assets/macchiato/boxplot.png index b035ec5..56b11dc 100644 Binary files a/assets/macchiato/boxplot.png and b/assets/macchiato/boxplot.png differ diff --git a/assets/macchiato/imshow.png b/assets/macchiato/imshow.png index f021438..caa67c9 100644 Binary files a/assets/macchiato/imshow.png and b/assets/macchiato/imshow.png differ diff --git a/assets/macchiato/palette.png b/assets/macchiato/palette.png index f21f664..3357a20 100644 Binary files a/assets/macchiato/palette.png and b/assets/macchiato/palette.png differ diff --git a/assets/macchiato/patches.png b/assets/macchiato/patches.png index 31002d2..154b351 100644 Binary files a/assets/macchiato/patches.png and b/assets/macchiato/patches.png differ diff --git a/assets/macchiato/plot.png b/assets/macchiato/plot.png index 72e3752..1cf07da 100644 Binary files a/assets/macchiato/plot.png and b/assets/macchiato/plot.png differ diff --git a/assets/macchiato/scatter.png b/assets/macchiato/scatter.png index f70d6ec..8e9ad2b 100644 Binary files a/assets/macchiato/scatter.png and b/assets/macchiato/scatter.png differ diff --git a/assets/mocha/bar.png b/assets/mocha/bar.png index 56287ce..99043ae 100644 Binary files a/assets/mocha/bar.png and b/assets/mocha/bar.png differ diff --git a/assets/mocha/boxplot.png b/assets/mocha/boxplot.png index ebe2b02..93712a9 100644 Binary files a/assets/mocha/boxplot.png and b/assets/mocha/boxplot.png differ diff --git a/assets/mocha/imshow.png b/assets/mocha/imshow.png index 2b5b27f..3db1188 100644 Binary files a/assets/mocha/imshow.png and b/assets/mocha/imshow.png differ diff --git a/assets/mocha/palette.png b/assets/mocha/palette.png index 2547334..c6de54a 100644 Binary files a/assets/mocha/palette.png and b/assets/mocha/palette.png differ diff --git a/assets/mocha/patches.png b/assets/mocha/patches.png index d304d24..dd54bb9 100644 Binary files a/assets/mocha/patches.png and b/assets/mocha/patches.png differ diff --git a/assets/mocha/plot.png b/assets/mocha/plot.png index aa67ae7..4f8973a 100644 Binary files a/assets/mocha/plot.png and b/assets/mocha/plot.png differ diff --git a/assets/mocha/scatter.png b/assets/mocha/scatter.png index 90ab525..93e75b2 100644 Binary files a/assets/mocha/scatter.png and b/assets/mocha/scatter.png differ diff --git a/build.py b/build.py index 44d7540..f817f37 100644 --- a/build.py +++ b/build.py @@ -71,18 +71,17 @@ def codegen() -> str: if __name__ == "__main__": - # Generate the palette.py file - + print("running codegen") palette_path = Path.cwd() / "catppuccin" / "palette.py" - with palette_path.open("w") as f: - source = codegen() - print(source, file=f) - # Run `ruff format` on the generated file + with palette_path.open("w", newline="\n") as f: + f.write(codegen()) + print("formatting with ruff") ruff_format = f"ruff format {palette_path}" - subprocess.run(ruff_format.split(), check=True) # noqa: S603 + subprocess.run(ruff_format.split(), check=True, stdout=subprocess.DEVNULL) + print("palette.py generation complete") # Generate the matplotlib styles - + print("generating matplotlib styles") from catppuccin.extras.matplotlib import CATPPUCCIN_STYLE_DIRECTORY from catppuccin.palette import PALETTE @@ -91,6 +90,7 @@ def codegen() -> str: ).read_text() for key, palette in asdict(PALETTE).items(): + print(f"- {key}") text = template_text text = text.replace("", key) for color in palette["colors"]: @@ -98,8 +98,10 @@ def codegen() -> str: f"<{color}>", palette["colors"][color]["hex"].replace("#", ""), ) - with (CATPPUCCIN_STYLE_DIRECTORY / f"{key}.mplstyle").open("w") as f: + style_path = CATPPUCCIN_STYLE_DIRECTORY / f"{key}.mplstyle" + with style_path.open("w", newline="\n") as f: f.write(text) + print("matplotlib styles generation complete") # Generate matplotlib assets for the docs import matplotlib as mpl @@ -107,18 +109,23 @@ def codegen() -> str: import catppuccin # This loads the styles in matplotlib # noqa: F401 + print("generating matplotlib asset images") for palette_name in asdict(PALETTE): + print(f"- {palette_name}") mpl.style.use(palette_name) palette_path = Path.cwd() / "assets" / palette_name palette_path.mkdir(exist_ok=True, parents=True) # Plot palette separately + print(" - palette") fig = plot_palette(palette_name) fig.savefig(palette_path / "palette.png", dpi=DPI) # Plot examples for filename, plot_function in example_plots.items(): + print(f" - {filename}") fig = plot_function() fig.savefig(palette_path / f"{filename}.png", dpi=DPI) plt.close() + print("matplotlib asset image generation complete") diff --git a/catppuccin/extras/matplotlib_styles/_catppuccin_template.txt b/catppuccin/extras/matplotlib_styles/_catppuccin_template.txt index 600be9f..4ba20af 100644 --- a/catppuccin/extras/matplotlib_styles/_catppuccin_template.txt +++ b/catppuccin/extras/matplotlib_styles/_catppuccin_template.txt @@ -32,7 +32,7 @@ grid.color: # Boxplots: Overlay 0 boxplot.flierprops.color: -boxplot.flierprops.markerfacecolor: +boxplot.flierprops.markerfacecolor: boxplot.flierprops.markeredgecolor: boxplot.boxprops.color: boxplot.whiskerprops.color: diff --git a/pyproject.toml b/pyproject.toml index f578c05..a996fa1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,9 +26,9 @@ gh-pages = ["tinycss2>=1.2.1"] [dependency-groups] dev = [ "mypy>=1.15.0", - "pytest>=8.3.4", + "pytest>=8.3.5", "pytest-cov>=6.0.0", - "ruff>=0.9.7", + "ruff>=0.9.9", "types-pygments>=2.19.0.20250219", "types-colorama>=0.4.15.20240205", ] @@ -49,6 +49,10 @@ ignore = [ "S101", # assert "PLR2004", # magic-value-comparison ] +"build.py" = [ + "T201", # print + "S603", # subprocess-without-shell-equals-true +] [tool.mypy] strict = true diff --git a/uv.lock b/uv.lock index 29ae815..4fae76e 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 1 requires-python = ">=3.9.0" resolution-markers = [ "python_full_version >= '3.10'", @@ -7,7 +8,7 @@ resolution-markers = [ [[package]] name = "catppuccin" -version = "2.3.4" +version = "2.4.1" source = { editable = "." } [package.optional-dependencies] @@ -42,13 +43,14 @@ requires-dist = [ { name = "rich", marker = "extra == 'rich'", specifier = ">=13.7.0" }, { name = "tinycss2", marker = "extra == 'gh-pages'", specifier = ">=1.2.1" }, ] +provides-extras = ["matplotlib", "pygments", "rich", "gh-pages"] [package.metadata.requires-dev] dev = [ { name = "mypy", specifier = ">=1.15.0" }, - { name = "pytest", specifier = ">=8.3.4" }, + { name = "pytest", specifier = ">=8.3.5" }, { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "ruff", specifier = ">=0.9.7" }, + { name = "ruff", specifier = ">=0.9.9" }, { name = "types-colorama", specifier = ">=0.4.15.20240205" }, { name = "types-pygments", specifier = ">=2.19.0.20250219" }, ] @@ -991,7 +993,7 @@ wheels = [ [[package]] name = "pytest" -version = "8.3.4" +version = "8.3.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -1001,9 +1003,9 @@ dependencies = [ { name = "pluggy" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, ] [[package]] @@ -1047,27 +1049,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.9.7" +version = "0.9.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/39/8b/a86c300359861b186f18359adf4437ac8e4c52e42daa9eedc731ef9d5b53/ruff-0.9.7.tar.gz", hash = "sha256:643757633417907510157b206e490c3aa11cab0c087c912f60e07fbafa87a4c6", size = 3669813 } +sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/f3/3a1d22973291226df4b4e2ff70196b926b6f910c488479adb0eeb42a0d7f/ruff-0.9.7-py3-none-linux_armv6l.whl", hash = "sha256:99d50def47305fe6f233eb8dabfd60047578ca87c9dcb235c9723ab1175180f4", size = 11774588 }, - { url = "https://files.pythonhosted.org/packages/8e/c9/b881f4157b9b884f2994fd08ee92ae3663fb24e34b0372ac3af999aa7fc6/ruff-0.9.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d59105ae9c44152c3d40a9c40d6331a7acd1cdf5ef404fbe31178a77b174ea66", size = 11746848 }, - { url = "https://files.pythonhosted.org/packages/14/89/2f546c133f73886ed50a3d449e6bf4af27d92d2f960a43a93d89353f0945/ruff-0.9.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f313b5800483770bd540cddac7c90fc46f895f427b7820f18fe1822697f1fec9", size = 11177525 }, - { url = "https://files.pythonhosted.org/packages/d7/93/6b98f2c12bf28ab9def59c50c9c49508519c5b5cfecca6de871cf01237f6/ruff-0.9.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042ae32b41343888f59c0a4148f103208bf6b21c90118d51dc93a68366f4e903", size = 11996580 }, - { url = "https://files.pythonhosted.org/packages/8e/3f/b3fcaf4f6d875e679ac2b71a72f6691a8128ea3cb7be07cbb249f477c061/ruff-0.9.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87862589373b33cc484b10831004e5e5ec47dc10d2b41ba770e837d4f429d721", size = 11525674 }, - { url = "https://files.pythonhosted.org/packages/f0/48/33fbf18defb74d624535d5d22adcb09a64c9bbabfa755bc666189a6b2210/ruff-0.9.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a17e1e01bee0926d351a1ee9bc15c445beae888f90069a6192a07a84af544b6b", size = 12739151 }, - { url = "https://files.pythonhosted.org/packages/63/b5/7e161080c5e19fa69495cbab7c00975ef8a90f3679caa6164921d7f52f4a/ruff-0.9.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7c1f880ac5b2cbebd58b8ebde57069a374865c73f3bf41f05fe7a179c1c8ef22", size = 13416128 }, - { url = "https://files.pythonhosted.org/packages/4e/c8/b5e7d61fb1c1b26f271ac301ff6d9de5e4d9a9a63f67d732fa8f200f0c88/ruff-0.9.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e63fc20143c291cab2841dbb8260e96bafbe1ba13fd3d60d28be2c71e312da49", size = 12870858 }, - { url = "https://files.pythonhosted.org/packages/da/cb/2a1a8e4e291a54d28259f8fc6a674cd5b8833e93852c7ef5de436d6ed729/ruff-0.9.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91ff963baed3e9a6a4eba2a02f4ca8eaa6eba1cc0521aec0987da8d62f53cbef", size = 14786046 }, - { url = "https://files.pythonhosted.org/packages/ca/6c/c8f8a313be1943f333f376d79724260da5701426c0905762e3ddb389e3f4/ruff-0.9.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88362e3227c82f63eaebf0b2eff5b88990280fb1ecf7105523883ba8c3aaf6fb", size = 12550834 }, - { url = "https://files.pythonhosted.org/packages/9d/ad/f70cf5e8e7c52a25e166bdc84c082163c9c6f82a073f654c321b4dff9660/ruff-0.9.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0372c5a90349f00212270421fe91874b866fd3626eb3b397ede06cd385f6f7e0", size = 11961307 }, - { url = "https://files.pythonhosted.org/packages/52/d5/4f303ea94a5f4f454daf4d02671b1fbfe2a318b5fcd009f957466f936c50/ruff-0.9.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d76b8ab60e99e6424cd9d3d923274a1324aefce04f8ea537136b8398bbae0a62", size = 11612039 }, - { url = "https://files.pythonhosted.org/packages/eb/c8/bd12a23a75603c704ce86723be0648ba3d4ecc2af07eecd2e9fa112f7e19/ruff-0.9.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0c439bdfc8983e1336577f00e09a4e7a78944fe01e4ea7fe616d00c3ec69a3d0", size = 12168177 }, - { url = "https://files.pythonhosted.org/packages/cc/57/d648d4f73400fef047d62d464d1a14591f2e6b3d4a15e93e23a53c20705d/ruff-0.9.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:115d1f15e8fdd445a7b4dc9a30abae22de3f6bcabeb503964904471691ef7606", size = 12610122 }, - { url = "https://files.pythonhosted.org/packages/49/79/acbc1edd03ac0e2a04ae2593555dbc9990b34090a9729a0c4c0cf20fb595/ruff-0.9.7-py3-none-win32.whl", hash = "sha256:e9ece95b7de5923cbf38893f066ed2872be2f2f477ba94f826c8defdd6ec6b7d", size = 9988751 }, - { url = "https://files.pythonhosted.org/packages/6d/95/67153a838c6b6ba7a2401241fd8a00cd8c627a8e4a0491b8d853dedeffe0/ruff-0.9.7-py3-none-win_amd64.whl", hash = "sha256:3770fe52b9d691a15f0b87ada29c45324b2ace8f01200fb0c14845e499eb0c2c", size = 11002987 }, - { url = "https://files.pythonhosted.org/packages/63/6a/aca01554949f3a401991dc32fe22837baeaccb8a0d868256cbb26a029778/ruff-0.9.7-py3-none-win_arm64.whl", hash = "sha256:b075a700b2533feb7a01130ff656a4ec0d5f340bb540ad98759b8401c32c2037", size = 10177763 }, + { url = "https://files.pythonhosted.org/packages/bc/c3/2c4afa9ba467555d074b146d9aed0633a56ccdb900839fb008295d037b89/ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367", size = 10027252 }, + { url = "https://files.pythonhosted.org/packages/33/d1/439e58487cf9eac26378332e25e7d5ade4b800ce1eec7dc2cfc9b0d7ca96/ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7", size = 10840721 }, + { url = "https://files.pythonhosted.org/packages/50/44/fead822c38281ba0122f1b76b460488a175a9bd48b130650a6fb6dbcbcf9/ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d", size = 10161439 }, + { url = "https://files.pythonhosted.org/packages/11/ae/d404a2ab8e61ddf6342e09cc6b7f7846cce6b243e45c2007dbe0ca928a5d/ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a", size = 10336264 }, + { url = "https://files.pythonhosted.org/packages/6a/4e/7c268aa7d84cd709fb6f046b8972313142cffb40dfff1d2515c5e6288d54/ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe", size = 9908774 }, + { url = "https://files.pythonhosted.org/packages/cc/26/c618a878367ef1b76270fd027ca93692657d3f6122b84ba48911ef5f2edc/ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c", size = 11428127 }, + { url = "https://files.pythonhosted.org/packages/d7/9a/c5588a93d9bfed29f565baf193fe802fa676a0c837938137ea6cf0576d8c/ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be", size = 12133187 }, + { url = "https://files.pythonhosted.org/packages/3e/ff/e7980a7704a60905ed7e156a8d73f604c846d9bd87deda9cabfa6cba073a/ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590", size = 11602937 }, + { url = "https://files.pythonhosted.org/packages/24/78/3690444ad9e3cab5c11abe56554c35f005b51d1d118b429765249095269f/ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb", size = 13771698 }, + { url = "https://files.pythonhosted.org/packages/6e/bf/e477c2faf86abe3988e0b5fd22a7f3520e820b2ee335131aca2e16120038/ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0", size = 11249026 }, + { url = "https://files.pythonhosted.org/packages/f7/82/cdaffd59e5a8cb5b14c408c73d7a555a577cf6645faaf83e52fe99521715/ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17", size = 10220432 }, + { url = "https://files.pythonhosted.org/packages/fe/a4/2507d0026225efa5d4412b6e294dfe54725a78652a5c7e29e6bd0fc492f3/ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1", size = 9874602 }, + { url = "https://files.pythonhosted.org/packages/d5/be/f3aab1813846b476c4bcffe052d232244979c3cd99d751c17afb530ca8e4/ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57", size = 10851212 }, + { url = "https://files.pythonhosted.org/packages/8b/45/8e5fd559bea0d2f57c4e12bf197a2fade2fac465aa518284f157dfbca92b/ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e", size = 11327490 }, + { url = "https://files.pythonhosted.org/packages/42/55/e6c90f13880aeef327746052907e7e930681f26a164fe130ddac28b08269/ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1", size = 10227912 }, + { url = "https://files.pythonhosted.org/packages/35/b2/da925693cb82a1208aa34966c0f36cb222baca94e729dd22a587bc22d0f3/ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1", size = 11355632 }, + { url = "https://files.pythonhosted.org/packages/31/d8/de873d1c1b020d668d8ec9855d390764cb90cf8f6486c0983da52be8b7b7/ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf", size = 10435860 }, ] [[package]]