diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index 2fec7c4..9499ff3 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -19,8 +19,10 @@ jobs: with: node-version: "latest" - run: "pip install catppuccin[pygments,gh-pages]" + - run: "mkdir -p gh-pages/docs/assets/ && cp assets/pepperjack.webp gh-pages/docs/assets/" + - run: "uv run pdoc catppuccin --no-include-undocumented --favicon https://catppuccin.com/favicon.png --logo https://python.catppuccin.com/docs/assets/pepperjack.webp --logo-link / --template-directory pdoc --output-directory gh-pages/docs" - run: "scripts/build-gh-pages" - - run: "npx lightningcss-cli --minify ./gh-pages/pygments/*.css --output-dir ./gh-pages/pygments/" + - run: "npx lightningcss-cli --minify gh-pages/pygments/*.css --output-dir gh-pages/pygments/" - uses: "peaceiris/actions-gh-pages@v4" with: enable_jekyll: false diff --git a/README.md b/README.md index e83c524..addc4c4 100644 --- a/README.md +++ b/README.md @@ -15,109 +15,15 @@ Install with `pip` or your preferred dependency management tool. -```bash -pip install catppuccin -``` - -## Usage - -Get access to the palette with the `catppuccin.PALETTE` constant: - -```python -from catppuccin import PALETTE - -PALETTE.latte.colors.mauve.hex -# '#8839ef' -PALETTE.mocha.colors.teal.rgb -# RGB(r=148, g=226, b=213) -``` - -The `Palette` data structure matches [the palette JSON](https://github.com/catppuccin/palette/blob/main/palette.json). - -### Iteration - -Both `Palette` and `FlavorColors` can be iterated to yield flavors and colors respectively: - -```python -for flavor in PALETTE: - print(flavor.name) - -# Latte -# Frappé -# Macchiato -# Mocha - -for color in PALETTE.latte.colors: - print(f"{color.name}: {color.hex}") - -# Rosewater: #f2d5cf -# Flamingo: #eebebe -# Pink: #f4b8e4 -# ... -# Base: #303446 -# Mantle: #292c3c -# Crust: #232634 -``` - -### dataclasses - -`Palette`, `Flavor`, `Color` et cetera are all [`dataclasses`](https://docs.python.org/3/library/dataclasses.html), -so you can also inspect and iterate their fields using methods from the dataclass module. - -For example, to list all color names and their hex codes: - -```python -from dataclasses import fields -from catppuccin import PALETTE - -flavor = PALETTE.frappe -for field in fields(flavor.colors): - color = getattr(flavor.colors, field.name) - print(f"{field.name}: {color.hex}") - -# rosewater: #f2d5cf -# flamingo: #eebebe -# pink: #f4b8e4 -# ... -# base: #303446 -# mantle: #292c3c -# crust: #232634 ``` - -## Pygments Styles - -This package provides a Pygments style for each of the four Catppuccin flavors. - -Install Catppuccin with the `pygments` feature to include the relevant dependencies: - -```bash -pip install catppuccin[pygments] -``` - -The styles are registered as importlib entrypoints, which allows Pygments to -find them by name: - -```python -from pygments.styles import get_style_by_name - -get_style_by_name("catppuccin-frappe") -# catppuccin.extras.pygments.FrappeStyle +pip install catppuccin ``` -The following style names are available: - -- `catppuccin-latte` -- `catppuccin-frappe` -- `catppuccin-macchiato` -- `catppuccin-mocha` +## Documentation -They can also be accessed by directly importing them: +For an API reference and usage examples, [see our online documentation](https://python.catppuccin.com/docs). -```python -from catppuccin.extras.pygments import MacchiatoStyle -``` - -### IPython +## IPython Theme A minimal configuration: @@ -131,65 +37,12 @@ and ensuring `catppuccin[pygments]` is installed in the same environment will give you Catppuccin Mocha syntax highlighting in the REPL. See [here](https://github.com/backwardspy/dots/blob/f6991570d6691212e27e266517656192f910ccbf/dot_config/ipython/profile_default/ipython_config.py) for an example of a more complete configuration. -## Matplotlib - -The library tries to register styles and colormaps if `matplotlib` is installed. -See the examples below for some use cases: - -1. Load a style, using `mpl.style.use` - - ```python - import catppuccin - import matplotlib as mpl - import matplotlib.pyplot as plt - - mpl.style.use(catppuccin.PALETTE.mocha.identifier) - plt.plot([0,1,2,3], [1,2,3,4]) - plt.show() - ``` - -1. Mix it with different stylesheets! - - ```python - import catppuccin - import matplotlib as mpl - import matplotlib.pyplot as plt - - mpl.style.use(["ggplot", catppuccin.PALETTE.mocha.identifier]) - plt.plot([0,1,2,3], [1,2,3,4]) - plt.show() - ``` - -1. Load individual colors +Available IPython themes: - ```python - import matplotlib.pyplot as plt - import catppuccin - from catppuccin.extras.matplotlib import load_color - - color = load_color(catppuccin.PALETTE.latte.identifier, "peach") - plt.plot([0,1,2,3], [1,2,3,4], color=color) - plt.show() - ``` - -1. Define custom colormaps - - ```python - import matplotlib.pyplot as plt - import numpy as np - import catppuccin - from catppuccin.extras.matplotlib import get_colormap_from_list - - cmap = get_colormap_from_list( - catppuccin.PALETTE.frappe.identifier, - ["red", "peach", "yellow", "green"], - ) - rng = np.random.default_rng() - data = rng.integers(2, size=(30, 30)) - - plt.imshow(data, cmap=cmap) - plt.show() - ``` +- `catppuccin-latte` +- `catppuccin-frappe` +- `catppuccin-macchiato` +- `catppuccin-mocha` ## Contribution @@ -205,7 +58,7 @@ instructions](https://docs.astral.sh/uv/getting-started/installation/). Install the project's dependencies including extras: -```bash +``` uv sync --all-extras ``` @@ -215,7 +68,7 @@ uv sync --all-extras To update after downloading a new palette JSON file: -```console +``` uv run build.py ``` @@ -232,8 +85,8 @@ Tests are run with [`pytest`](https://docs.pytest.org/en/stable/). To run tests and display coverage: -```console -$ pytest --cov catppuccin +``` +pytest --cov catppuccin ``` ##### Type Checking @@ -242,8 +95,8 @@ Type checking is performed by [`mypy`](https://www.mypy-lang.org/). To run type checks: -```console -$ mypy . +``` +mypy . ``` ##### Lints and Formatting @@ -252,14 +105,14 @@ Code linting and formatting is done by [`ruff`](https://docs.astral.sh/ruff/). To lint the code: -```console -$ ruff check +``` +ruff check ``` To format the code: -```console -$ ruff format +``` +ruff format ``` ## 💝 Thanks to diff --git a/assets/pepperjack.webp b/assets/pepperjack.webp new file mode 100644 index 0000000..4680daf Binary files /dev/null and b/assets/pepperjack.webp differ diff --git a/catppuccin/__init__.py b/catppuccin/__init__.py index af89d48..352123a 100644 --- a/catppuccin/__init__.py +++ b/catppuccin/__init__.py @@ -1,10 +1,93 @@ -"""🐍 Soothing pastel theme for Python.""" +"""🐍 Soothing pastel theme for Python. -import importlib.util +## Basic Usage + +Get access to the palette with the `catppuccin.PALETTE` constant: + +```python +from catppuccin import PALETTE + +PALETTE.latte.colors.mauve.hex +# '#8839ef' +PALETTE.mocha.colors.teal.rgb +# RGB(r=148, g=226, b=213) +``` + +The `Palette` data structure matches [the palette +JSON](https://github.com/catppuccin/palette/blob/main/palette.json). + +## Iteration + +Both `Palette` and `FlavorColors` can be iterated to yield flavors and colors +respectively: + +```python +for flavor in PALETTE: + print(flavor.name) + +# Latte +# Frappé +# Macchiato +# Mocha + +for color in PALETTE.latte.colors: + print(f"{color.name}: {color.hex}") + +# Rosewater: #f2d5cf +# Flamingo: #eebebe +# Pink: #f4b8e4 +# ... +# Base: #303446 +# Mantle: #292c3c +# Crust: #232634 +``` + +## Dataclasses -from catppuccin.palette import PALETTE +`Palette`, `Flavor`, `Color` et cetera are all +[`dataclasses`](https://docs.python.org/3/library/dataclasses.html), +so you can also inspect and iterate their fields using methods from the +dataclass module. + +For example, to list all color names and their hex codes: + +```python +from dataclasses import fields +from catppuccin import PALETTE + +flavor = PALETTE.frappe +for field in fields(flavor.colors): + color = getattr(flavor.colors, field.name) + print(f"{field.name}: {color.hex}") + +# rosewater: #f2d5cf +# flamingo: #eebebe +# pink: #f4b8e4 +# ... +# base: #303446 +# mantle: #292c3c +# crust: #232634 +``` + +## Types + +This package is fully type annotated with data structures located in [the models +module](./catppuccin/models.html). + +## Integrations + +This package includes optional support for several libraries. Click a link below +to see the documentation for that integration. + +- [matplotlib](./catppuccin/extras/matplotlib.html) +- [pygments](./catppuccin/extras/pygments.html) +- [rich](./catppuccin/extras/rich_ctp.html) + +""" + +import importlib.util -__all__ = ["PALETTE"] +from catppuccin.palette import PALETTE as PALETTE # Attempt to register styles and colormaps if matplotlib is available if importlib.util.find_spec("matplotlib") is not None: diff --git a/catppuccin/extras/matplotlib.py b/catppuccin/extras/matplotlib.py index 8352453..52934d1 100644 --- a/catppuccin/extras/matplotlib.py +++ b/catppuccin/extras/matplotlib.py @@ -3,6 +3,64 @@ The following code was ported from [catppuccin/matplotlib](https://github.com/catppuccin/matplotlib). Thanks to [Bram de Wilde](https://github.com/brambozz) for the original source code and for allowing this port. + +The library tries to register styles and colormaps if `matplotlib` is installed. +See the examples below for some use cases: + +1. Load a style, using `mpl.style.use` + + ```python + import catppuccin + import matplotlib as mpl + import matplotlib.pyplot as plt + + mpl.style.use(catppuccin.PALETTE.mocha.identifier) + plt.plot([0,1,2,3], [1,2,3,4]) + plt.show() + ``` + +1. Mix it with different stylesheets! + + ```python + import catppuccin + import matplotlib as mpl + import matplotlib.pyplot as plt + + mpl.style.use(["ggplot", catppuccin.PALETTE.mocha.identifier]) + plt.plot([0,1,2,3], [1,2,3,4]) + plt.show() + ``` + +1. Load individual colors + + ```python + import matplotlib.pyplot as plt + import catppuccin + from catppuccin.extras.matplotlib import load_color + + color = load_color(catppuccin.PALETTE.latte.identifier, "peach") + plt.plot([0,1,2,3], [1,2,3,4], color=color) + plt.show() + ``` + +1. Define custom colormaps + + ```python + import matplotlib.pyplot as plt + import numpy as np + import catppuccin + from catppuccin.extras.matplotlib import get_colormap_from_list + + cmap = get_colormap_from_list( + catppuccin.PALETTE.frappe.identifier, + ["red", "peach", "yellow", "green"], + ) + rng = np.random.default_rng() + data = rng.integers(2, size=(30, 30)) + + plt.imshow(data, cmap=cmap) + plt.show() + ``` """ from __future__ import annotations @@ -36,7 +94,7 @@ def _register_colormap_list() -> None: """Register the included color maps in the `matplotlib` colormap library.""" for palette_name in asdict(PALETTE): cmap = get_colormap_from_list(palette_name, DEFAULT_COLORMAP_COLORS) - mpl.colormaps.register(cmap=cmap, name=palette_name) + mpl.colormaps.register(cmap=cmap, name=palette_name, force=True) def get_colormap_from_list( diff --git a/catppuccin/extras/pygments.py b/catppuccin/extras/pygments.py index dc883c5..e5c508f 100644 --- a/catppuccin/extras/pygments.py +++ b/catppuccin/extras/pygments.py @@ -1,5 +1,37 @@ # ruff: noqa: ERA001 -"""Pygments styles for all Catppuccin flavors.""" +"""Pygments styles for all Catppuccin flavors. + +This package provides a Pygments style for each of the four Catppuccin flavors. + +Install Catppuccin with the `pygments` feature to include the relevant dependencies: + +``` +pip install catppuccin[pygments] +``` + +The styles are registered as importlib entrypoints, which allows Pygments to +find them by name: + +```python +from pygments.styles import get_style_by_name + +get_style_by_name("catppuccin-frappe") +# catppuccin.extras.pygments.FrappeStyle +``` + +The following style names are available: + +- `catppuccin-latte` +- `catppuccin-frappe` +- `catppuccin-macchiato` +- `catppuccin-mocha` + +They can also be accessed by directly importing them: + +```python +from catppuccin.extras.pygments import MacchiatoStyle +``` +""" from __future__ import annotations diff --git a/catppuccin/extras/rich_ctp.py b/catppuccin/extras/rich_ctp.py index cc625aa..9ead70f 100644 --- a/catppuccin/extras/rich_ctp.py +++ b/catppuccin/extras/rich_ctp.py @@ -1,4 +1,21 @@ -"""Rich themes for all Catppuccin flavors.""" +"""Rich themes for all Catppuccin flavors. + +Install Catppuccin with the `rich` feature to include the relevant dependencies: + +``` +pip install catppuccin[rich] +``` + +Pass one of the four flavors as your `Console` theme: + +```python +from rich.console import Console +from catppuccin.extras.rich_ctp import latte, frappe, macchiato, mocha + +c = Console(theme=mocha) +c.print("Hello", style="yellow") +``` +""" from rich.theme import Theme diff --git a/catppuccin/models.py b/catppuccin/models.py index d2f90ac..b4befa7 100644 --- a/catppuccin/models.py +++ b/catppuccin/models.py @@ -3,14 +3,19 @@ from collections.abc import Iterator from dataclasses import dataclass +__all__ = ["Palette", "Flavor", "FlavorColors", "Color", "RGB", "HSL"] + @dataclass(frozen=True) class RGB: """Color represented as red, green, and blue (all 0-255).""" r: int + """@public""" g: int + """@public""" b: int + """@public""" @dataclass(frozen=True) @@ -18,8 +23,11 @@ class HSL: """Color represented as hue (0-359), saturation (0-1), and lightness (0-1).""" h: float + """@public""" s: float + """@public""" l: float # noqa: E741 + """@public""" @dataclass(frozen=True) @@ -27,12 +35,24 @@ class Color: """A single color in the Catppuccin palette.""" name: str + """A human-readable name such as `Pink` or `Surface0`.""" identifier: str + """The lowercase key used to identify the color. This differs from `name` in + that it's intended for machine usage rather than presentation.""" accent: bool + """Whether the color is considered an accent color. Accent colors are the + first 14 colors in the palette, also called the analogous colours. The + remaining 12 non-accent colors are also referred to as the monochromatic + colors.""" order: int + """Order of the color in the palette spec.""" hex: str + """The color represented as a six-digit hex string with a leading hash (#).""" rgb: RGB + """The color represented as individual red, green, and blue channels. (0-255)""" hsl: HSL + """The color represented as individual hue (0-359), saturation (0-1), and + lightness (0-1) channels.""" @dataclass(frozen=True) @@ -43,31 +63,57 @@ class FlavorColors: """ rosewater: Color + """@public""" flamingo: Color + """@public""" pink: Color + """@public""" mauve: Color + """@public""" red: Color + """@public""" maroon: Color + """@public""" peach: Color + """@public""" yellow: Color + """@public""" green: Color + """@public""" teal: Color + """@public""" sky: Color + """@public""" sapphire: Color + """@public""" blue: Color + """@public""" lavender: Color + """@public""" text: Color + """@public""" subtext1: Color + """@public""" subtext0: Color + """@public""" overlay2: Color + """@public""" overlay1: Color + """@public""" overlay0: Color + """@public""" surface2: Color + """@public""" surface1: Color + """@public""" surface0: Color + """@public""" base: Color + """@public""" mantle: Color + """@public""" crust: Color + """@public""" def __iter__(self) -> Iterator[Color]: """Iterate over colors in the flavor.""" @@ -109,25 +155,36 @@ class Flavor: """ name: str + """A human-readable name such as `Latte` or `Mocha`.""" identifier: str + """The lowercase key used to identify the flavor. This differs from `name` + in that it's intended for machine usage rather than presentation""" order: int + """Order of the flavor in the palette spec.""" dark: bool + """Whether this flavor is dark or light oriented. Latte is light, the other + three flavors are dark.""" colors: FlavorColors + """@public""" @dataclass(frozen=True) class Palette: """The top-level type that encompasses the Catppuccin palette data structure. - Primarily used via the PALETTE constant. + Primarily used via the `PALETTE` constant. Can be iterated over, in which case the flavors are yielded in the canonical order: Latte, Frappé, Macchiato, Mocha. """ latte: Flavor + """The light flavor.""" frappe: Flavor + """The lightest dark flavor.""" macchiato: Flavor + """The medium dark flavor.""" mocha: Flavor + """The darkest dark flavor.""" def __iter__(self) -> Iterator[Flavor]: """Iterate over flavors in the palette.""" diff --git a/pdoc/syntax-highlighting.css b/pdoc/syntax-highlighting.css new file mode 100644 index 0000000..ff61d0d --- /dev/null +++ b/pdoc/syntax-highlighting.css @@ -0,0 +1 @@ +@import url(https://python.catppuccin.com/pygments/catppuccin-latte.css); diff --git a/pdoc/theme.css b/pdoc/theme.css new file mode 100644 index 0000000..202967f --- /dev/null +++ b/pdoc/theme.css @@ -0,0 +1,31 @@ +@import url("https://cdn.jsdelivr.net/npm/@catppuccin/palette@1.7.1/css/catppuccin.min.css"); +:root { + --ctp-text: var(--ctp-latte-text); + --ctp-subtext0: var(--ctp-latte-subtext0); + --ctp-base: var(--ctp-latte-base); + --ctp-mantle: var(--ctp-latte-mantle); + --ctp-crust: var(--ctp-latte-crust); + --ctp-mauve: var(--ctp-latte-mauve); + --ctp-yellow: var(--ctp-latte-yellow); + --ctp-sky: var(--ctp-latte-sky); + --ctp-blue: var(--ctp-latte-blue); + + --pdoc-background: var(--ctp-base); +} + +.pdoc { + --text: var(--ctp-text); + --muted: var(--ctp-subtext0); + --link: var(--ctp-blue); + --link-hover: var(--ctp-sky); + --code: var(--ctp-mantle); + --active: var(--ctp-crust); + + --accent: var(--ctp-mantle); + --accent2: var(--ctp-crust); + + --nav-hover: rgba(0, 0, 0, 0.03); + --name: var(--ctp-text); + --def: var(--ctp-mauve); + --annotation: var(--ctp-mauve); +} diff --git a/pyproject.toml b/pyproject.toml index a996fa1..b0b669c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,25 +21,28 @@ catppuccin-mocha = "catppuccin.extras.pygments:MochaStyle" matplotlib = ["matplotlib>=3.8.4"] pygments = ["pygments>=2.17.2"] rich = ["rich>=13.7.0"] -gh-pages = ["tinycss2>=1.2.1"] +gh-pages = ["tinycss2>=1.2.1", "pdoc>=15.0.1"] [dependency-groups] dev = [ "mypy>=1.15.0", "pytest>=8.3.5", "pytest-cov>=6.0.0", - "ruff>=0.9.9", - "types-pygments>=2.19.0.20250219", + "ruff>=0.11.0", + "types-pygments>=2.19.0.20250305", "types-colorama>=0.4.15.20240205", ] [tool.ruff.lint] select = ["ALL"] ignore = [ - "D203", # one-blank-line-before class, incompatible with D211 - "D213", # multi-line-summary-second-line, incompatible with D212 - "ISC001", # single-line-implicit-string-concatenation, incompatible with formatter - "COM812", # missing-trailing-comma, incompatible with formatter + "D203", # one-blank-line-before class, incompatible with D211 + "D213", # multi-line-summary-second-line, incompatible with D212 + "ISC001", # single-line-implicit-string-concatenation, incompatible with formatter + "COM812", # missing-trailing-comma, incompatible with formatter + "RUF022", # unsorted-dunder-all, __all__ order affects documentation + "TC006", # runtime-cast-value, stylistic choice + "PLC0414", # useless-import-alias, incompatible with unused-import (F401) ] [tool.ruff.lint.per-file-ignores] diff --git a/uv.lock b/uv.lock index 4fae76e..f810f0d 100644 --- a/uv.lock +++ b/uv.lock @@ -13,6 +13,7 @@ source = { editable = "." } [package.optional-dependencies] gh-pages = [ + { name = "pdoc" }, { name = "tinycss2" }, ] matplotlib = [ @@ -39,6 +40,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.8.4" }, + { name = "pdoc", marker = "extra == 'gh-pages'", specifier = ">=15.0.1" }, { name = "pygments", marker = "extra == 'pygments'", specifier = ">=2.17.2" }, { name = "rich", marker = "extra == 'rich'", specifier = ">=13.7.0" }, { name = "tinycss2", marker = "extra == 'gh-pages'", specifier = ">=1.2.1" }, @@ -50,9 +52,9 @@ dev = [ { name = "mypy", specifier = ">=1.15.0" }, { name = "pytest", specifier = ">=8.3.5" }, { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "ruff", specifier = ">=0.9.9" }, + { name = "ruff", specifier = ">=0.11.0" }, { name = "types-colorama", specifier = ">=0.4.15.20240205" }, - { name = "types-pygments", specifier = ">=2.19.0.20250219" }, + { name = "types-pygments", specifier = ">=2.19.0.20250305" }, ] [[package]] @@ -372,6 +374,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, ] +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + [[package]] name = "kiwisolver" version = "1.4.7" @@ -577,6 +591,74 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, ] +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, + { url = "https://files.pythonhosted.org/packages/a7/ea/9b1530c3fdeeca613faeb0fb5cbcf2389d816072fab72a71b45749ef6062/MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a", size = 14344 }, + { url = "https://files.pythonhosted.org/packages/4b/c2/fbdbfe48848e7112ab05e627e718e854d20192b674952d9042ebd8c9e5de/MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff", size = 12389 }, + { url = "https://files.pythonhosted.org/packages/f0/25/7a7c6e4dbd4f867d95d94ca15449e91e52856f6ed1905d58ef1de5e211d0/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13", size = 21607 }, + { url = "https://files.pythonhosted.org/packages/53/8f/f339c98a178f3c1e545622206b40986a4c3307fe39f70ccd3d9df9a9e425/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144", size = 20728 }, + { url = "https://files.pythonhosted.org/packages/1a/03/8496a1a78308456dbd50b23a385c69b41f2e9661c67ea1329849a598a8f9/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29", size = 20826 }, + { url = "https://files.pythonhosted.org/packages/e6/cf/0a490a4bd363048c3022f2f475c8c05582179bb179defcee4766fb3dcc18/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0", size = 21843 }, + { url = "https://files.pythonhosted.org/packages/19/a3/34187a78613920dfd3cdf68ef6ce5e99c4f3417f035694074beb8848cd77/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0", size = 21219 }, + { url = "https://files.pythonhosted.org/packages/17/d8/5811082f85bb88410ad7e452263af048d685669bbbfb7b595e8689152498/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178", size = 20946 }, + { url = "https://files.pythonhosted.org/packages/7c/31/bd635fb5989440d9365c5e3c47556cfea121c7803f5034ac843e8f37c2f2/MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f", size = 15063 }, + { url = "https://files.pythonhosted.org/packages/b3/73/085399401383ce949f727afec55ec3abd76648d04b9f22e1c0e99cb4bec3/MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a", size = 15506 }, +] + [[package]] name = "matplotlib" version = "3.9.4" @@ -886,6 +968,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, ] +[[package]] +name = "pdoc" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/16/1b542af6f18a27de059f722c487a596681127897b6d31f78e46d6e5bf2fe/pdoc-15.0.1.tar.gz", hash = "sha256:3b08382c9d312243ee6c2a1813d0ff517a6ab84d596fa2c6c6b5255b17c3d666", size = 154174 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/4d/60d856a1b12fbf6ac1539efccfa138e57c6b88675c9867d84bbb46455cc1/pdoc-15.0.1-py3-none-any.whl", hash = "sha256:fd437ab8eb55f9b942226af7865a3801e2fb731665199b74fd9a44737dbe20f9", size = 144186 }, +] + [[package]] name = "pillow" version = "11.1.0" @@ -1049,27 +1145,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.9.9" +version = "0.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 } +sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } wheels = [ - { 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 }, + { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, + { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, + { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, + { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, + { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, + { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, + { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, + { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, + { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, + { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, + { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, + { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, + { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, + { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, + { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, + { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, + { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, ] [[package]] @@ -1152,24 +1248,14 @@ wheels = [ [[package]] name = "types-pygments" -version = "2.19.0.20250219" +version = "2.19.0.20250305" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "types-docutils" }, - { name = "types-setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/7a/04c95c518bf90f38645e24b2d6d8e0c85a8cfb8735bfb3756e10a506c687/types_pygments-2.19.0.20250219.tar.gz", hash = "sha256:a4a279338c96f3d4f2eb2c4d7c6c5593c88108b185bb5c664f943f781170cd14", size = 18463 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/7f/c5d2558a29d675fbf146e48879cd3e179a9bfd3c34a54c1954bf6940d749/types_Pygments-2.19.0.20250219-py3-none-any.whl", hash = "sha256:5e3e1f660665b3a2ea946dda794b8d5b05772d789181704b523d646e8a7f4382", size = 25599 }, ] - -[[package]] -name = "types-setuptools" -version = "75.8.0.20250225" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1f/ad/0747cfa03acc6cbeee3ce15704ac65fb4c7444f3cd5596c34d581e7366a7/types_setuptools-75.8.0.20250225.tar.gz", hash = "sha256:6038f7e983d55792a5f90d8fdbf5d4c186026214a16bb65dd6ae83c624ae9636", size = 48448 } +sdist = { url = "https://files.pythonhosted.org/packages/e6/be/88f777c75022b111f9e9fe4cdb430bf92892fe90188b0fd037601ded2ea1/types_pygments-2.19.0.20250305.tar.gz", hash = "sha256:044c50e80ecd4128c00a7268f20355e16f5c55466d3d49dfda09be920af40b4b", size = 18521 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/f2/6259d7d302d66a1df119baac81a06649c2cf5fa0a671278c408d43711cee/types_setuptools-75.8.0.20250225-py3-none-any.whl", hash = "sha256:94c86b439cc60bcc68c1cda3fd2c301f007f8f9502f4fbb54c66cb5ce9b875af", size = 71839 }, + { url = "https://files.pythonhosted.org/packages/6f/c6/b6d3ad345b76425e46d25a2da1758603d80c3a59405bdcbbbaa86d8c8070/types_pygments-2.19.0.20250305-py3-none-any.whl", hash = "sha256:ca88aae5ec426f9b107c0f7adc36dc096d2882d930a49f679eaf4b8b643db35d", size = 25638 }, ] [[package]]