diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 50566ee..645b4ac 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,18 +3,22 @@ exclude: ^.*\.lock$ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: + - id: check-yaml + - id: check-added-large-files + - id: check-json + - id: check-ast + - id: check-merge-conflict + - id: debug-statements + - id: mixed-line-ending - id: trailing-whitespace - id: end-of-file-fixer - - repo: https://github.com/python-poetry/poetry - rev: 1.8.0 - hooks: - - id: poetry-check - - id: poetry-lock - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.5.1 + rev: v0.9.4 hooks: - id: ruff - args: [ '--fix', '--select', 'I'] + types_or: [ python, pyi ] + args: [ --fix ] - id: ruff-format + types_or: [ python, pyi ] diff --git a/conda/recipe.yaml b/conda/recipe.yaml index 933d553..58a562e 100644 --- a/conda/recipe.yaml +++ b/conda/recipe.yaml @@ -61,4 +61,3 @@ about: extra: recipe-maintainers: - tayden - diff --git a/docs/beginner_guide/execution.md b/docs/beginner_guide/execution.md index a48b26e..7b4a70c 100644 --- a/docs/beginner_guide/execution.md +++ b/docs/beginner_guide/execution.md @@ -23,7 +23,7 @@ It is typical of many CLI tools to also have a `--help` option that can be used To get help documentation for the `kom` tool, you can type `kom --help` into your terminal. ??? tip "Shorthand flags" - You can also use the shorthand flags `-h` to get help, e.g. `kom -h`. This is common for many CLI tools. + You can also use the shorthand flags `-h` to get help, e.g. `kom -h`. This is common for many CLI tools. Options will be shown in the help documentation with both the long form (`--help`) and the shorthand form (`-h`). ```console @@ -35,12 +35,12 @@ This will show you a list of the subcommands available to you, as well as a brie ### Processing an Image ??? note "A note on mussel detection" - The Kelp-O-Matic tool is designed to detect both kelp and mussels. The following information was written for kelp - detection, but the same information applies for mussels. All you have to do to find mussels instead of kelp is use + The Kelp-O-Matic tool is designed to detect both kelp and mussels. The following information was written for kelp + detection, but the same information applies for mussels. All you have to do to find mussels instead of kelp is use the `kom find-mussels` subcommand instead of `kom find-kelp` in the following steps. #### Subcommands and Options -To process an image, you will need to use the `kom find-kelp` subcommand. This subcommand is used to detect kelp in an +To process an image, you will need to use the `kom find-kelp` subcommand. This subcommand is used to detect kelp in an image. Like we did for `kom`, we can also get help for subcommands: ```console @@ -82,31 +82,31 @@ The various options available to you are detailed in the `--help` documentation. The options are flags that can be used to enable or disable certain features of the tool, or they can take arguments to customize the behavior of the tool. !!! example "An Example Command" - + === "Windows" ```console kom find-kelp --species --crop-size 2048 .\some\image_with_kelp.tif .\some\output.tif ``` - In this example, we are running the `find-kelp` subcommand with the `--species` option and a - `--crop-size` of 2048. The input image is located at `.\some\image_with_kelp.tif`. + In this example, we are running the `find-kelp` subcommand with the `--species` option and a + `--crop-size` of 2048. The input image is located at `.\some\image_with_kelp.tif`. The output will be saved to `.\some\output.tif`. - + === "MacOS/Linux" ```console kom find-kelp --species --crop-size 2048 ./some/image_with_kelp.tif ./some/output.tif ``` - In this example, we are running the `find-kelp` subcommand with the `--species` option and a - `--crop-size` of 2048. The input image is located at `./some/image_with_kelp.tif`. + In this example, we are running the `find-kelp` subcommand with the `--species` option and a + `--crop-size` of 2048. The input image is located at `./some/image_with_kelp.tif`. The output will be saved to `./some/output.tif`. ##### Executing the Command -Once you have constructed your command, execute it by pressing ++enter++. +Once you have constructed your command, execute it by pressing ++enter++. -Wait for the progress bar to reach 100%, then open the results in an image processing or spatial analysis software such as QGIS or ArcGIS. +Wait for the progress bar to reach 100%, then open the results in an image processing or spatial analysis software such as QGIS or ArcGIS. Review the results for errors and edit as needed. **Part 3 Kelp Segmentation is now complete!** diff --git a/docs/beginner_guide/index.md b/docs/beginner_guide/index.md index fad9062..be0ddf8 100644 --- a/docs/beginner_guide/index.md +++ b/docs/beginner_guide/index.md @@ -1,6 +1,6 @@ # Beginner Guide -This document outlines step-by-step how to execute the Kelp-O-Matic tool for those with little to no experience with +This document outlines step-by-step how to execute the Kelp-O-Matic tool for those with little to no experience with executing commands from the Terminal or Command Line. 1. [Terminal Crash Course](./terminal_crash_course.md) diff --git a/docs/beginner_guide/install_env_setup.md b/docs/beginner_guide/install_env_setup.md index f3e6ed3..06d9d5c 100644 --- a/docs/beginner_guide/install_env_setup.md +++ b/docs/beginner_guide/install_env_setup.md @@ -6,8 +6,8 @@ guide. ??? question "Why UV" - `uv` is a Python environment manager that is easy to use and works on Windows, MacOS, and Linux. - It is a good choice for beginners and experienced users alike. It's extremely fast and lightweight, and provides a + `uv` is a Python environment manager that is easy to use and works on Windows, MacOS, and Linux. + It is a good choice for beginners and experienced users alike. It's extremely fast and lightweight, and provides a simple way to manage Python environments and install packages. ## UV Virtual Environment Setup @@ -26,8 +26,8 @@ guide. ??? question "What's a Virtual Environment" - A virtual environment is a self-contained directory that contains a Python installation for a particular version - of Python, plus a number of additional packages. It allows you to work on a specific project without affecting + A virtual environment is a self-contained directory that contains a Python installation for a particular version + of Python, plus a number of additional packages. It allows you to work on a specific project without affecting other projects or the system Python installation. It's a good practice to create a new virtual environment for each project you work on. This way, you can install the @@ -58,7 +58,7 @@ active. ## Install Kelp-O-Matic -Now that you have your virtual environment set up, you can install Kelp-O-Matic and its dependencies very easily with +Now that you have your virtual environment set up, you can install Kelp-O-Matic and its dependencies very easily with `uv`. 1. Install Kelp-O-Matic using the following command: @@ -68,15 +68,15 @@ Now that you have your virtual environment set up, you can install Kelp-O-Matic !!! important - The `kom` command will be available only when the virtual environment is activated. If you close your terminal, + The `kom` command will be available only when the virtual environment is activated. If you close your terminal, be sure to navigate to the location where you created the virtual environment and activate it again before running `kom`. ??? question "What's `uv pip`?" - `uv` has a built-in package manager called `pip` that you can use to install Python packages. When not using `uv`, + `uv` has a built-in package manager called `pip` that you can use to install Python packages. When not using `uv`, Python comes with a package manager called `pip`. `uv pip` is just a faster version of that default package manager. ## Next Steps -You're now ready to process some imagery, hooray! Head over to the next section, -[Running the Segmentation tool](./execution.md), to learn how to run the segmentation tool \ No newline at end of file +You're now ready to process some imagery, hooray! Head over to the next section, +[Running the Segmentation tool](./execution.md), to learn how to run the segmentation tool diff --git a/docs/beginner_guide/terminal_crash_course.md b/docs/beginner_guide/terminal_crash_course.md index 61a93e2..72e0147 100644 --- a/docs/beginner_guide/terminal_crash_course.md +++ b/docs/beginner_guide/terminal_crash_course.md @@ -17,7 +17,7 @@ depending on your operating system, so choose the tab below based on which is re application that appears. === "MacOS/Linux" - On MacOS and Linux, the default terminal is called Terminal. To open Terminal, search for "Terminal" in the search bar + On MacOS and Linux, the default terminal is called Terminal. To open Terminal, search for "Terminal" in the search bar and click on the application that appears. ### Nagivating around @@ -43,7 +43,7 @@ depending on your operating system, so choose the tab below based on which is re | ------- | ----------- | | `cd [some path]` | Change directory | | `ls [some path]` | List files and folders in the current directory | - + #### Specifying Paths @@ -52,7 +52,7 @@ depending on your operating system, so choose the tab below based on which is re - Using `..` is interpreted as "the parent directory" of my current location. - Using `.` is interpreted as "the current directory". - Using `~` is interpreted as the user's home directory. (e.g. `C:\Users\McLovin`, if that is your username) - - You can use relative paths to navigate to folders in relation to your current location, like ` cd .\Documents` + - You can use relative paths to navigate to folders in relation to your current location, like ` cd .\Documents` - You can also use absolute paths to navigate, like `cd C:\Users\McLovin\Documents`. - Use ++tab++ to autocomplete file and folder names. It is **very strongly** recommended to use this to avoid typos and save time typing long paths. - e.g. `cd C:\Users\McLovin\Docu` then press ++tab++ to autocomplete to `cd C:\Users\McLovin\Documents`. Pressing ++tab++ again will cycle through all possible completions. @@ -62,7 +62,7 @@ depending on your operating system, so choose the tab below based on which is re - Using `..` is interpreted as "the parent directory" of my current location. - Using `.` is interpreted as "the current directory". - Using `~` is interpreted as the user's home directory. (e.g. `/home/mclovin`, if that is your username) - - You can use relative paths to navigate to folders in relation to your current location, like ` cd ./documents` + - You can use relative paths to navigate to folders in relation to your current location, like ` cd ./documents` - You can also use absolute paths to navigate, like `cd /home/mclovin/documents`. Absolute paths start from the root directory `/`. - Use ++tab++ to autocomplete file and folder names. It is **very strongly** recommended to use this to avoid typos and save time typing long paths. - e.g. `cd /home/mclovin/docu` then press ++tab++ to autocomplete to `cd /home/mclovin/documents`. Pressing ++tab++ again will cycle through all possible completions. @@ -101,15 +101,15 @@ depending on your operating system, so choose the tab below based on which is re | `cd /home/mclovin/documents` | Move to a folder called `documents` inside the `mclovin` home directory | !!! warning "Spaces in Paths" - If a folder or file name has a space in it, you need to enclose the path in quotes. - For example, if you have a folder called `My Documents`, you would need to use `cd "My Documents"`. - It's a good idea to avoid spaces in folder and file names to make your life easier. Many people use + If a folder or file name has a space in it, you need to enclose the path in quotes. + For example, if you have a folder called `My Documents`, you would need to use `cd "My Documents"`. + It's a good idea to avoid spaces in folder and file names to make your life easier. Many people use underscores `_` or hyphens `-` instead of spaces. -You did it! You now know enough to navigate around the terminal. There are many commands you can use -in the terminal, but these are the most important ones to get you started. You're now going to copy and paste some -commands to set up the Kelp-O-Matic tool, detailed in the next section. This is going to add a new command to your +You did it! You now know enough to navigate around the terminal. There are many commands you can use +in the terminal, but these are the most important ones to get you started. You're now going to copy and paste some +commands to set up the Kelp-O-Matic tool, detailed in the next section. This is going to add a new command to your terminal that you can use to run the Kelp-O-Matic tool. ### Next Steps diff --git a/docs/index.md b/docs/index.md index 85c1d2e..3131062 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,7 +25,7 @@ ## Getting Started -Please see the [beginner guide](beginner_guide/index.md) if you are new to using command line tools. Otherwise, see the +Please see the [beginner guide](beginner_guide/index.md) if you are new to using command line tools. Otherwise, see the [installation](installation.md) and the [CLI](cli.md) or [Python API](python_lib.md) documentation. ## Features @@ -38,15 +38,15 @@ Please see the [beginner guide](beginner_guide/index.md) if you are new to using ## Contribute -Please file a bug report using our -[GitHub Issue Tracker :material-github:](https://github.com/HakaiInstitute/kelp-o-matic/issues) if you encounter any +Please file a bug report using our +[GitHub Issue Tracker :material-github:](https://github.com/HakaiInstitute/kelp-o-matic/issues) if you encounter any problems. Comments and questions are also appreciated! ## License -Kelp-O-Matic is released under the +Kelp-O-Matic is released under the [MIT license](https://raw.githubusercontent.com/tayden/kelp-o-matic/main/LICENSE.txt). ## Contact diff --git a/kelp_o_matic/cli.py b/kelp_o_matic/cli.py index 378d4c3..0707ea6 100644 --- a/kelp_o_matic/cli.py +++ b/kelp_o_matic/cli.py @@ -10,7 +10,9 @@ find_mussels as find_mussels_, ) -cli = typer.Typer(context_settings={"help_option_names": ["-h", "--help"]}, add_completion=False) +cli = typer.Typer( + context_settings={"help_option_names": ["-h", "--help"]}, add_completion=False +) @cli.command() diff --git a/pyproject.toml b/pyproject.toml index 7e32302..c2de6e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,14 +24,14 @@ kom = "kelp_o_matic.cli:cli" [dependency-groups] dev = [ - "pre-commit>=3.3.3", - "ruff>=0.0.272", - "pytest>=7.3.2", + "pre-commit>=4.1.0", + "ruff>=0.9.5", + "pytest>=8.3.4", ] docs = [ - "mkdocs>=1.5.3,<2", - "mkdocs-material>=9.5.2,<10", - "mkdocstrings-python>=1.7.5,<2", + "mkdocs>=1.6.1,<2", + "mkdocs-material>=9.6.3,<10", + "mkdocstrings-python>=1.14.6,<2", ] [tool.uv] diff --git a/uv.lock b/uv.lock index 8f98022..b8e0667 100644 --- a/uv.lock +++ b/uv.lock @@ -25,20 +25,20 @@ wheels = [ [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, + { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, ] [[package]] @@ -185,11 +185,11 @@ wheels = [ [[package]] name = "fsspec" -version = "2024.12.0" +version = "2025.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/11/de70dee31455c546fbc88301971ec03c328f3d1138cfba14263f651e9551/fsspec-2024.12.0.tar.gz", hash = "sha256:670700c977ed2fb51e0d9f9253177ed20cbde4a3e5c0283cc5385b5870c8533f", size = 291600 } +sdist = { url = "https://files.pythonhosted.org/packages/b5/79/68612ed99700e6413de42895aa725463e821a6b3be75c87fcce1b4af4c70/fsspec-2025.2.0.tar.gz", hash = "sha256:1c24b16eaa0a1798afa0337aa0db9b256718ab2a89c425371f5628d22c3b6afd", size = 292283 } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/86/5486b0188d08aa643e127774a99bac51ffa6cf343e3deb0583956dca5b22/fsspec-2024.12.0-py3-none-any.whl", hash = "sha256:b520aed47ad9804237ff878b504267a3b0b441e97508bd6d2d8774e3db85cee2", size = 183862 }, + { url = "https://files.pythonhosted.org/packages/e2/94/758680531a00d06e471ef649e4ec2ed6bf185356a7f9fbfbb7368a40bd49/fsspec-2025.2.0-py3-none-any.whl", hash = "sha256:9de2ad9ce1f85e1931858535bc882543171d197001a0a5eb2ddc04f1781ab95b", size = 184484 }, ] [[package]] @@ -293,14 +293,14 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ - { name = "pre-commit", specifier = ">=3.3.3" }, - { name = "pytest", specifier = ">=7.3.2" }, - { name = "ruff", specifier = ">=0.0.272" }, + { name = "pre-commit", specifier = ">=4.1.0" }, + { name = "pytest", specifier = ">=8.3.4" }, + { name = "ruff", specifier = ">=0.9.5" }, ] docs = [ - { name = "mkdocs", specifier = ">=1.5.3,<2" }, - { name = "mkdocs-material", specifier = ">=9.5.2,<10" }, - { name = "mkdocstrings-python", specifier = ">=1.7.5,<2" }, + { name = "mkdocs", specifier = ">=1.6.1,<2" }, + { name = "mkdocs-material", specifier = ">=9.6.3,<10" }, + { name = "mkdocstrings-python", specifier = ">=1.14.6,<2" }, ] [[package]] @@ -454,7 +454,7 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.5.50" +version = "9.6.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, @@ -469,9 +469,9 @@ dependencies = [ { name = "regex" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c7/16/c48d5a28bc4a67c49808180b6009d4d1b4c0753739ffee3cc37046ab29d7/mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825", size = 3923354 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/1e/65b4fda4debf5e337b2ad4e692423dba4f5c77f49c4dee170c47a7dbac25/mkdocs_material-9.6.3.tar.gz", hash = "sha256:c87f7d1c39ce6326da5e10e232aed51bae46252e646755900f4b0fc9192fa832", size = 3942608 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/b5/1bf29cd744896ae83bd38c72970782c843ba13e0240b1a85277bd3928637/mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385", size = 8645274 }, + { url = "https://files.pythonhosted.org/packages/11/a4/e0da0bc6a7dbfda6a786427f82a0caa4dd1f163249a5a5e5dccbb50c5f1e/mkdocs_material-9.6.3-py3-none-any.whl", hash = "sha256:1125622067e26940806701219303b27c0933e04533560725d97ec26fd16a39cf", size = 8688709 }, ] [[package]] @@ -485,35 +485,35 @@ wheels = [ [[package]] name = "mkdocstrings" -version = "0.27.0" +version = "0.28.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "click" }, { name = "jinja2" }, { name = "markdown" }, { name = "markupsafe" }, { name = "mkdocs" }, { name = "mkdocs-autorefs" }, - { name = "platformdirs" }, + { name = "mkdocs-get-deps" }, { name = "pymdown-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/5a/5de70538c2cefae7ac3a15b5601e306ef3717290cb2aab11d51cbbc2d1c0/mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657", size = 94830 } +sdist = { url = "https://files.pythonhosted.org/packages/86/4b/70522427768a4637ffac376140f362dc3d159364fb64e698667e51053d57/mkdocstrings-0.28.0.tar.gz", hash = "sha256:df20afef1eafe36ba466ae20732509ecb74237653a585f5061937e54b553b4e0", size = 3392797 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/10/4c27c3063c2b3681a4b7942f8dbdeb4fa34fecb2c19b594e7345ebf4f86f/mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332", size = 30658 }, + { url = "https://files.pythonhosted.org/packages/75/c3/e5a319d4de0867c1b59ff22abb93bf898f9812e934ab75dcf7fe94e85bb6/mkdocstrings-0.28.0-py3-none-any.whl", hash = "sha256:84cf3dc910614781fe0fee46ce8006fde7df6cc7cca2e3f799895fb8a9170b39", size = 4700952 }, ] [[package]] name = "mkdocstrings-python" -version = "1.13.0" +version = "1.14.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "griffe" }, { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/ae/32703e35d74040051c672400fd9f5f2b48a6ea094f5071dd8a0e3be35322/mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c", size = 185697 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/fd/3cfa0fc2a724e16262f2de63e13365e726426c44a74fcc3e86b31ff3f1fa/mkdocstrings_python-1.14.6.tar.gz", hash = "sha256:3fb6589491614422d781dacca085c0c5a53a7063af37a2fea5864e24e378b03e", size = 422060 } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/23/d02d86553327296c3bf369d444194ea83410cce8f0e690565264f37f3261/mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97", size = 112254 }, + { url = "https://files.pythonhosted.org/packages/29/e4/b4f88e4edd914831b65caa34806012cc00167a7f2dd62e4e407113957b0f/mkdocstrings_python-1.14.6-py3-none-any.whl", hash = "sha256:e0ca11b49ac0f23070afb566245f4ff80ea1700e03c9dbc143d70dbf1cae074e", size = 448699 }, ] [[package]] @@ -862,15 +862,15 @@ wheels = [ [[package]] name = "pymdown-extensions" -version = "10.14.2" +version = "10.14.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/aa/7b/de388047c577e43dc45ce35c23b9b349ec3df8c7023c3e3c4d413a850982/pymdown_extensions-10.14.2.tar.gz", hash = "sha256:7a77b8116dc04193f2c01143760a43387bd9dc4aa05efacb7d838885a7791253", size = 846777 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/44/e6de2fdc880ad0ec7547ca2e087212be815efbc9a425a8d5ba9ede602cbb/pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b", size = 846846 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/a3/61527d80d84e9fd4d97649322e83bd7efde8200fc07fe34469c8c2bd0d91/pymdown_extensions-10.14.2-py3-none-any.whl", hash = "sha256:f45bc5892410e54fd738ab8ccd736098b7ff0cb27fdb4bf24d0a0c6584bc90e1", size = 264459 }, + { url = "https://files.pythonhosted.org/packages/eb/f5/b9e2a42aa8f9e34d52d66de87941ecd236570c7ed2e87775ed23bbe4e224/pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9", size = 264467 }, ] [[package]] @@ -1101,27 +1101,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.9.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c0/17/529e78f49fc6f8076f50d985edd9a2cf011d1dbadb1cdeacc1d12afc1d26/ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7", size = 3599458 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/f8/3fafb7804d82e0699a122101b5bee5f0d6e17c3a806dcbc527bb7d3f5b7a/ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706", size = 11668400 }, - { url = "https://files.pythonhosted.org/packages/2e/a6/2efa772d335da48a70ab2c6bb41a096c8517ca43c086ea672d51079e3d1f/ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf", size = 11628395 }, - { url = "https://files.pythonhosted.org/packages/dc/d7/cd822437561082f1c9d7225cc0d0fbb4bad117ad7ac3c41cd5d7f0fa948c/ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b", size = 11090052 }, - { url = "https://files.pythonhosted.org/packages/9e/67/3660d58e893d470abb9a13f679223368ff1684a4ef40f254a0157f51b448/ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137", size = 11882221 }, - { url = "https://files.pythonhosted.org/packages/79/d1/757559995c8ba5f14dfec4459ef2dd3fcea82ac43bc4e7c7bf47484180c0/ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e", size = 11424862 }, - { url = "https://files.pythonhosted.org/packages/c0/96/7915a7c6877bb734caa6a2af424045baf6419f685632469643dbd8eb2958/ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec", size = 12626735 }, - { url = "https://files.pythonhosted.org/packages/0e/cc/dadb9b35473d7cb17c7ffe4737b4377aeec519a446ee8514123ff4a26091/ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b", size = 13255976 }, - { url = "https://files.pythonhosted.org/packages/5f/c3/ad2dd59d3cabbc12df308cced780f9c14367f0321e7800ca0fe52849da4c/ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a", size = 12752262 }, - { url = "https://files.pythonhosted.org/packages/c7/17/5f1971e54bd71604da6788efd84d66d789362b1105e17e5ccc53bba0289b/ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214", size = 14401648 }, - { url = "https://files.pythonhosted.org/packages/30/24/6200b13ea611b83260501b6955b764bb320e23b2b75884c60ee7d3f0b68e/ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231", size = 12414702 }, - { url = "https://files.pythonhosted.org/packages/34/cb/f5d50d0c4ecdcc7670e348bd0b11878154bc4617f3fdd1e8ad5297c0d0ba/ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b", size = 11859608 }, - { url = "https://files.pythonhosted.org/packages/d6/f4/9c8499ae8426da48363bbb78d081b817b0f64a9305f9b7f87eab2a8fb2c1/ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6", size = 11485702 }, - { url = "https://files.pythonhosted.org/packages/18/59/30490e483e804ccaa8147dd78c52e44ff96e1c30b5a95d69a63163cdb15b/ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c", size = 12067782 }, - { url = "https://files.pythonhosted.org/packages/3d/8c/893fa9551760b2f8eb2a351b603e96f15af167ceaf27e27ad873570bc04c/ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0", size = 12483087 }, - { url = "https://files.pythonhosted.org/packages/23/15/f6751c07c21ca10e3f4a51ea495ca975ad936d780c347d9808bcedbd7182/ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402", size = 9852302 }, - { url = "https://files.pythonhosted.org/packages/12/41/2d2d2c6a72e62566f730e49254f602dfed23019c33b5b21ea8f8917315a1/ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e", size = 10850051 }, - { url = "https://files.pythonhosted.org/packages/c6/e6/3d6ec3bc3d254e7f005c543a661a41c3e788976d0e52a1ada195bd664344/ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41", size = 10078251 }, +version = "0.9.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/74/6c359f6b9ed85b88df6ef31febce18faeb852f6c9855651dfb1184a46845/ruff-0.9.5.tar.gz", hash = "sha256:11aecd7a633932875ab3cb05a484c99970b9d52606ce9ea912b690b02653d56c", size = 3634177 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/4b/82b7c9ac874e72b82b19fd7eab57d122e2df44d2478d90825854f9232d02/ruff-0.9.5-py3-none-linux_armv6l.whl", hash = "sha256:d466d2abc05f39018d53f681fa1c0ffe9570e6d73cde1b65d23bb557c846f442", size = 11681264 }, + { url = "https://files.pythonhosted.org/packages/27/5c/f5ae0a9564e04108c132e1139d60491c0abc621397fe79a50b3dc0bd704b/ruff-0.9.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38840dbcef63948657fa7605ca363194d2fe8c26ce8f9ae12eee7f098c85ac8a", size = 11657554 }, + { url = "https://files.pythonhosted.org/packages/2a/83/c6926fa3ccb97cdb3c438bb56a490b395770c750bf59f9bc1fe57ae88264/ruff-0.9.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d56ba06da53536b575fbd2b56517f6f95774ff7be0f62c80b9e67430391eeb36", size = 11088959 }, + { url = "https://files.pythonhosted.org/packages/af/a7/42d1832b752fe969ffdbfcb1b4cb477cb271bed5835110fb0a16ef31ab81/ruff-0.9.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7cb2a01da08244c50b20ccfaeb5972e4228c3c3a1989d3ece2bc4b1f996001", size = 11902041 }, + { url = "https://files.pythonhosted.org/packages/53/cf/1fffa09fb518d646f560ccfba59f91b23c731e461d6a4dedd21a393a1ff1/ruff-0.9.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:96d5c76358419bc63a671caac70c18732d4fd0341646ecd01641ddda5c39ca0b", size = 11421069 }, + { url = "https://files.pythonhosted.org/packages/09/27/bb8f1b7304e2a9431f631ae7eadc35550fe0cf620a2a6a0fc4aa3d736f94/ruff-0.9.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deb8304636ed394211f3a6d46c0e7d9535b016f53adaa8340139859b2359a070", size = 12625095 }, + { url = "https://files.pythonhosted.org/packages/d7/ce/ab00bc9d3df35a5f1b64f5117458160a009f93ae5caf65894ebb63a1842d/ruff-0.9.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df455000bf59e62b3e8c7ba5ed88a4a2bc64896f900f311dc23ff2dc38156440", size = 13257797 }, + { url = "https://files.pythonhosted.org/packages/88/81/c639a082ae6d8392bc52256058ec60f493c6a4d06d5505bccface3767e61/ruff-0.9.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de92170dfa50c32a2b8206a647949590e752aca8100a0f6b8cefa02ae29dce80", size = 12763793 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/0a3d8f56d1e49af466dc770eeec5c125977ba9479af92e484b5b0251ce9c/ruff-0.9.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d28532d73b1f3f627ba88e1456f50748b37f3a345d2be76e4c653bec6c3e393", size = 14386234 }, + { url = "https://files.pythonhosted.org/packages/04/70/e59c192a3ad476355e7f45fb3a87326f5219cc7c472e6b040c6c6595c8f0/ruff-0.9.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c746d7d1df64f31d90503ece5cc34d7007c06751a7a3bbeee10e5f2463d52d2", size = 12437505 }, + { url = "https://files.pythonhosted.org/packages/55/4e/3abba60a259d79c391713e7a6ccabf7e2c96e5e0a19100bc4204f1a43a51/ruff-0.9.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11417521d6f2d121fda376f0d2169fb529976c544d653d1d6044f4c5562516ee", size = 11884799 }, + { url = "https://files.pythonhosted.org/packages/a3/db/b0183a01a9f25b4efcae919c18fb41d32f985676c917008620ad692b9d5f/ruff-0.9.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b9d71c3879eb32de700f2f6fac3d46566f644a91d3130119a6378f9312a38e1", size = 11527411 }, + { url = "https://files.pythonhosted.org/packages/0a/e4/3ebfcebca3dff1559a74c6becff76e0b64689cea02b7aab15b8b32ea245d/ruff-0.9.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2e36c61145e70febcb78483903c43444c6b9d40f6d2f800b5552fec6e4a7bb9a", size = 12078868 }, + { url = "https://files.pythonhosted.org/packages/ec/b2/5ab808833e06c0a1b0d046a51c06ec5687b73c78b116e8d77687dc0cd515/ruff-0.9.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2f71d09aeba026c922aa7aa19a08d7bd27c867aedb2f74285a2639644c1c12f5", size = 12524374 }, + { url = "https://files.pythonhosted.org/packages/e0/51/1432afcc3b7aa6586c480142caae5323d59750925c3559688f2a9867343f/ruff-0.9.5-py3-none-win32.whl", hash = "sha256:134f958d52aa6fdec3b294b8ebe2320a950d10c041473c4316d2e7d7c2544723", size = 9853682 }, + { url = "https://files.pythonhosted.org/packages/b7/ad/c7a900591bd152bb47fc4882a27654ea55c7973e6d5d6396298ad3fd6638/ruff-0.9.5-py3-none-win_amd64.whl", hash = "sha256:78cc6067f6d80b6745b67498fb84e87d32c6fc34992b52bffefbdae3442967d6", size = 10865744 }, + { url = "https://files.pythonhosted.org/packages/75/d9/fde7610abd53c0c76b6af72fc679cb377b27c617ba704e25da834e0a0608/ruff-0.9.5-py3-none-win_arm64.whl", hash = "sha256:18a29f1a005bddb229e580795627d297dfa99f16b30c7039e73278cf6b5f9fa9", size = 10064595 }, ] [[package]]