From ad46502e58d232695e4a7d3030452738f50db171 Mon Sep 17 00:00:00 2001 From: veit Date: Thu, 16 Jul 2026 11:57:30 +0200 Subject: [PATCH 1/9] * :construction_worker::wrench::memo: Switch to prek * Remove pre-commit --- .github/workflows/ci.yml | 19 +++++++++++-------- CHANGELOG.rst | 8 +++++++- docs/document/sphinx/test.rst | 16 ++++++++-------- docs/packs/apps.rst | 6 +++--- docs/packs/dataprep/pyproject.toml | 2 +- docs/packs/distribution.rst | 2 +- docs/packs/templating/cruft.rst | 4 ++-- docs/test/tox.rst | 2 +- pyproject.toml | 2 +- 9 files changed, 35 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73304148..903992f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,19 +12,22 @@ concurrency: permissions: {} jobs: - pre-commit: - name: pre-commit + prek: + name: prek + # External pull requests should be checked, but not our own internal pull + # requests again, as these are already checked by the push on the branch. + # Without this if condition, the checks would be performed twice, as + # internal pull requests correspond to both the push and pull_request + # events. + if: + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name != github.repository runs-on: ubuntu-latest steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 - - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: ~/.cache/pre-commit - key: pre-commit|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }} - - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 + - uses: j178/prek-action@e98a699c41eb69ab013a45817a0406469a748f8d # v2.0.5 docs: name: Build docs and check links diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 56122d5a..c6544291 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,13 @@ emergencies when we need to start branches for older versions. `Unreleased `_ --------------------------------------------------------------------------------------- +Changed +~~~~~~~ + +* 👷🔧📝 Switch to prek + + * Remove pre-commit + `25.1.0 `_ ---------------------------------------------------------------------------------- @@ -35,7 +42,6 @@ Added Changed ~~~~~~~ - * 📝 Update cookiecutter templates * Add badges diff --git a/docs/document/sphinx/test.rst b/docs/document/sphinx/test.rst index 60d24f70..79be059c 100644 --- a/docs/document/sphinx/test.rst +++ b/docs/document/sphinx/test.rst @@ -144,8 +144,8 @@ reST formatting Whether the :doc:`Sphinx ` documentation is written in valid :doc:`rest` format can be checked with `sphinx-lint `_. We usually include this in our -:doc:`pre-commit -` configuration: +:doc:`prek ` +configuration: .. code-block:: yaml :caption: .pre-commit-config.yaml @@ -194,10 +194,10 @@ Code formatting The formatting of code blocks can be checked with `blacken-docs `_, which uses :doc:`Python4DataScience:productive/qa/black`. We usually integrate the library -via the :doc:`pre-commit -` framework: +via :doc:`prek `: .. code-block:: yaml + :caption: .pre-commit-config.yaml - repo: https://github.com/adamchainz/blacken-docs rev: 7ae9389351f4090e3993de28015a05a18ca6b8a7 # v1.12.1 @@ -310,8 +310,8 @@ You should then update your :ref:`.gitignore ` file if necessary: styles/* -You can configure Vale for the :doc:`pre-commit -` framework with: +You can configure Vale for :doc:`prek +` with: .. code-block:: yaml :caption: .pre-commit-config.yaml @@ -381,8 +381,8 @@ example with commands = interrogate --quiet --fail-under 95 src tests -You can also use ``interrogate`` with :doc:`pre-commit -`: +You can also use ``interrogate`` with :doc:`prek +`: .. code-block:: yaml :caption: .pre-commit-config.yaml diff --git a/docs/packs/apps.rst b/docs/packs/apps.rst index 07cbf5f7..429df465 100644 --- a/docs/packs/apps.rst +++ b/docs/packs/apps.rst @@ -149,9 +149,8 @@ specific version. $ uv sync --exclude-newer-package "{PACKAGE}=P0D" .. tip:: - You can also use the - :doc:`Python4DataScience:productive/git/advanced/hooks/pre-commit` to - regularly update your :file:`uv.lock` file: + You can also use :doc:`Python4DataScience:productive/git/advanced/hooks/prek` + to regularly update your :file:`uv.lock` file: .. code-block:: yaml :caption: .pre-commit-config.yaml @@ -160,6 +159,7 @@ specific version. rev: 6a280ba12b7901e47757c868c8c13c6a624c9ecb # 0.11.7 hooks: - id: uv-lock + args: ["--exclude-newer = 'P3D'", "--quiet"] Restrict platform and Python versions ------------------------------------- diff --git a/docs/packs/dataprep/pyproject.toml b/docs/packs/dataprep/pyproject.toml index 70a5363d..9bf086b8 100644 --- a/docs/packs/dataprep/pyproject.toml +++ b/docs/packs/dataprep/pyproject.toml @@ -31,7 +31,7 @@ License-File = [ "LICENSE" ] [dependency-groups] dev = [ - "pre-commit", + "prek", { include-group = "docs" }, { include-group = "tests" }, ] diff --git a/docs/packs/distribution.rst b/docs/packs/distribution.rst index e2b26092..9a33e20f 100644 --- a/docs/packs/distribution.rst +++ b/docs/packs/distribution.rst @@ -317,7 +317,7 @@ Dependency groups Recursive dependency groups are also possible. For example, for ``dev`` you can take over all dependencies from ``docs`` and ``test`` in addition to -``pre-commit``: +``prek``: .. literalinclude:: dataprep/pyproject.toml :language: toml diff --git a/docs/packs/templating/cruft.rst b/docs/packs/templating/cruft.rst index 5cc0b244..cfa9f301 100644 --- a/docs/packs/templating/cruft.rst +++ b/docs/packs/templating/cruft.rst @@ -79,8 +79,8 @@ Checking a project To see if a project has missed a template update, you can easily call ``cruft check``. If the project is out of date, an error and exit code 1 will be returned. ``cruft check`` can also be added to -:doc:`Python4DataScience:productive/git/advanced/hooks/pre-commit` and CI -pipelines to ensure projects don’t become unintentionally stale. +:doc:`Python4DataScience:productive/git/advanced/hooks/prek` and CI pipelines to +ensure projects don’t become unintentionally stale. Linking an existing project --------------------------- diff --git a/docs/test/tox.rst b/docs/test/tox.rst index 1b89c26a..b7d15c1b 100644 --- a/docs/test/tox.rst +++ b/docs/test/tox.rst @@ -370,7 +370,7 @@ We can also call individual tests with tox by making another change so that [tool.tox] requires = [ "tox>=4" ] env_list = [ - "pre-commit", + "prek", "docs", "py3{10-14}", "py{13-14}t", diff --git a/pyproject.toml b/pyproject.toml index 160fbbb1..17c82d95 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ urls.Homepage = "https://github.com/veit/python-basics-tutorial/" [dependency-groups] dev = [ "codespell", - "pre-commit", + "prek", "vale", { include-group = "docs" }, ] From b2b4d623037584c9c2e7eb44c2b2fb7980ba50b4 Mon Sep 17 00:00:00 2001 From: veit Date: Fri, 17 Jul 2026 22:09:18 +0200 Subject: [PATCH 2/9] :memo: Update tox config --- docs/test/tox.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/test/tox.rst b/docs/test/tox.rst index b7d15c1b..35b1ab2f 100644 --- a/docs/test/tox.rst +++ b/docs/test/tox.rst @@ -61,6 +61,10 @@ In the ``[tool.tox.env_run_base]`` section, ``dependency_groups`` specifies ``tests``. This tells tox that the corresponding libraries should be installed in this environment. Finally, ``commands`` instructs tox to run ``pytest``. +The configuration for a specific environment could be added using +:samp:`tool.tox.env.{ENV_NAME}`, and the base configuration for packages using +:samp:`tool.tox.env_pkg_base`. + Executing tox ------------- From 60fb47f0ab22a4baa6cf21b89b00f19c8aa869b1 Mon Sep 17 00:00:00 2001 From: veit Date: Wed, 22 Jul 2026 13:37:01 +0200 Subject: [PATCH 3/9] :memo: Add pip secure installs --- docs/libs/install.rst | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/libs/install.rst b/docs/libs/install.rst index c9fa25ab..91d12116 100644 --- a/docs/libs/install.rst +++ b/docs/libs/install.rst @@ -141,6 +141,28 @@ or (.venv) $ python -m pip install "pandas>=2" +However, ``pip`` does not usually carry out any checks to protect against +tampering and allows arbitrary code from the distributions to be executed. You +can, however, use ``pip`` in a way that ensures more secure installation +mechanisms: + +``--require-hashes`` + enables hash verification mode. + + This ensures that hashes have been provided in the requirements file. It is + also a convenient way to create a list of hashes yourself, as it displays + the hashes of the downloaded packages. However, only the preferred archive + is downloaded for each package, so you may still need to add hashes for + alternative archives using :samp:`pip hash {PACKAGE_NAME}` – for example, if + different operating system variants are available. + +``--only-binary :all:`` + prevents source code from being provided. + +.. seealso:: + * `Secure installs `_ + * `pip hash `_ + Proxy server ~~~~~~~~~~~~ From ac454f51f01b886111a69949e6624738a7659212 Mon Sep 17 00:00:00 2001 From: veit Date: Fri, 24 Jul 2026 09:20:13 +0200 Subject: [PATCH 4/9] :memo: Add shot-scraper video --- docs/document/shot-scraper.rst | 73 +++++++++++++++++++++++----------- docs/document/storyboard.yml | 34 ++++++++++++++++ 2 files changed, 84 insertions(+), 23 deletions(-) create mode 100644 docs/document/storyboard.yml diff --git a/docs/document/shot-scraper.rst b/docs/document/shot-scraper.rst index 42d74e57..72be6a1d 100644 --- a/docs/document/shot-scraper.rst +++ b/docs/document/shot-scraper.rst @@ -1,8 +1,8 @@ shot-scraper ============ -`shot-scraper `_ is a tool -to automate the process of updating screenshots. +`shot-scraper `_ is a tool to +automate the process of updating screenshots. Installation ------------ @@ -15,50 +15,77 @@ Installation .. note:: The second line installs the required browser. +.. seealso:: + `shot-scraper Installation + `_ + Use --- -shot-scraper can be used in two ways +shot-scraper can be used in several ways #. …for single screenshots on the command line: .. code-block:: console - $ shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -o ~/Downloads/clean-prep.png + $ uv run shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -o ~/Downloads/clean-prep.png - …or with additional options, e.g. for JavaScript and CSS selectors: + …or with additional options, for example for JavaScript and CSS selectors: - .. code-block:: + .. code-block:: console - $ shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -s '#overview' -o ~/Downloads/clean-prep.png + $ uv run shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -s '#overview' -o ~/Downloads/clean-prep.png #. …for a set of screenshots configured in a YAML file: .. code-block:: yaml - - url: https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html - output: ~/Downloads/clean-prep.png - - url: https://www.example.org/ - width: 736 - quality: 40 - output: example.jpg + - url: https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html + output: ~/Downloads/clean-prep.png + - url: https://www.example.org/ + width: 736 + quality: 40 + output: example.jpg Afterwards ``shot-scraper multi`` can be used, for example: .. code-block:: console - $ shot-scraper multi shots.yaml - Screenshot of 'https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html' written to '~(Downloads/clean-prep.png' - Screenshot of 'https://www.example.org/' written to 'example.jpg' + $ shot-scraper multi shots.yaml + Screenshot of 'https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html' written to '~(Downloads/clean-prep.png' + Screenshot of 'https://www.example.org/' written to 'example.jpg' + + .. seealso:: + * `Taking multiple screenshots + `_ + +#. …for videos: + + The ``shot-scraper video`` command captures a WebM video based on a + :doc:`Python4DataScience:data-processing/serialisation-formats/yaml/index` + storyboard. Storyboards describe the video as a sequence of scenes. Each + scene can open a page, wait for content, perform actions and pause between + steps, for example: + + .. literalinclude:: storyboard.yml + :caption: storyboard.yml + :language: yaml + + Then run the following command: + + .. code-block:: console + + $ uv run shot-scraper video storyboard.yml + + This opens ``url``, records the scenes and saves the video as + :file:`demo.webm`. + + As long as `FFmpeg `_ is installed, you can use the + ``--mp4`` option to convert the recorded WebM video to MP4 as well. .. seealso:: - * In the `README.md - `_ file you - will find a complete overview of the possible options. - * In the shot-scraper-demo repository you will find a much more - comprehensive `shots.yaml - `_ - file. + * `Recording videos + `_ GitHub Actions -------------- diff --git a/docs/document/storyboard.yml b/docs/document/storyboard.yml new file mode 100644 index 00000000..697a888e --- /dev/null +++ b/docs/document/storyboard.yml @@ -0,0 +1,34 @@ +output: demo.webm +url: https://python-basics-tutorial.readthedocs.io/en/latest/ + +viewport: + width: 1280 + height: 720 + +cursor: true +wait_for: "text=Python für Data Science" + +scenes: +- name: Home + do: + - pause: 1 + +- name: Introduction + do: + - click: ".sidebar-tree a[href='intro.html']" + - wait_for: 'h1:has-text("Introduction")' + - screenshot: intro.png + - pause: 1 + +- name: Search + do: + - click: "input.sidebar-search" + - type: + into: "input.sidebar-search" + text: "shot-scraper" + delay_ms: 25 + - press: + selector: "input.sidebar-search" + key: Enter + - wait_for: "text=Search Results" + - pause: 2 From 311e564a0f224fb99ac897174d7b5e3a9668c0ea Mon Sep 17 00:00:00 2001 From: veit Date: Sun, 26 Jul 2026 19:09:09 +0200 Subject: [PATCH 5/9] :memo: Update zizmor section --- docs/packs/publish.rst | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/packs/publish.rst b/docs/packs/publish.rst index d01db010..d3c937c8 100644 --- a/docs/packs/publish.rst +++ b/docs/packs/publish.rst @@ -410,8 +410,9 @@ zizmor ~~~~~~ `zizmor `_ can detect and resolve many security issues -in typical GitHub Actions CI/CD configurations. zizmor is designed to integrate -with GitHub Actions. A typical GitHub Action we use for zizmor looks like this: ++in typical GitHub Actions CI/CD configurations, such as ++:ref:`token_exfiltration`. zizmor is designed to integrate with GitHub Actions. ++A typical GitHub Action we’ve created for zizmor looks like this: .. code-block:: yaml :caption: .github/workflows/zizmor.yml @@ -447,6 +448,22 @@ with GitHub Actions. A typical GitHub Action we use for zizmor looks like this: with: persona: pedantic +However, you can also use zizmor as a pre-commit check to identify issues before +they are pushed: + +.. code-block:: yaml + :caption: .pre-commit-config.yaml + + - repo: https://github.com/zizmorcore/zizmor-pre-commit + rev: 067260dc5fe6ea86b7551bfd6f8b3ba4e6c93129 # v1.28.0 + hooks: + - id: zizmor + +zizmor also features a `VS Code integration +`_ and +can be run as an LSP server (``zizmor --lsp``) to provide feedback in any +editor. + .. _add_2fa: 2FA for all development accounts From 39b1fb6f79584bf05074919c5476b3bd11f6d00f Mon Sep 17 00:00:00 2001 From: veit Date: Sun, 26 Jul 2026 19:24:31 +0200 Subject: [PATCH 6/9] :pencil2: Add anchor --- docs/packs/publish.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/packs/publish.rst b/docs/packs/publish.rst index d3c937c8..72e4308f 100644 --- a/docs/packs/publish.rst +++ b/docs/packs/publish.rst @@ -368,6 +368,8 @@ requires neither a password nor a token. Only the following steps are required: username: __token__ password: ${{ secrets.PYPI_TOKEN }} +.. _package-attestations: + Since 14 November 2024, :term:`PyPI` also supports :pep:`740` with `Digital Attestations `_. PyPI uses the `in-toto Attestation Framework `_ to From 1d7b38711d44a10d333d4e4c531f534f00848a6b Mon Sep 17 00:00:00 2001 From: veit Date: Mon, 3 Aug 2026 10:37:33 +0200 Subject: [PATCH 7/9] :memo: Add pytest-leak-finder --- CHANGELOG.rst | 5 +++++ docs/test/pytest/plugins.rst | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c6544291..8d1b8527 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,11 @@ emergencies when we need to start branches for older versions. `Unreleased `_ --------------------------------------------------------------------------------------- +Added +~~~~~ + +* 📝 Add pytest-leak-finder + Changed ~~~~~~~ diff --git a/docs/test/pytest/plugins.rst b/docs/test/pytest/plugins.rst index 230ad528..204e4568 100644 --- a/docs/test/pytest/plugins.rst +++ b/docs/test/pytest/plugins.rst @@ -146,6 +146,24 @@ usual sequence of a test: .. image:: https://raster.shields.io/github/license/tonybaloney/pytest-freethreaded :alt: License :target: https://github.com/tonybaloney/pytest-freethreaded?tab=MIT-1-ov-file#readme +`pytest-leak-finder `_ + for binary search of test artefacts. + + .. image:: https://raster.shields.io/github/stars/mgaitan/pytest-leak-finder + :alt: Stars + :target: https://github.com/mgaitan/pytest-leak-finder/stargazers + + .. image:: https://raster.shields.io/github/contributors/mgaitan/pytest-leak-finder + :alt: Contributors + :target: https://github.com/mgaitan/pytest-leak-finder/graphs/contributors + + .. image:: https://raster.shields.io/github/commit-activity/y/mgaitan/pytest-leak-finder + :alt: Commit activity + :target: https://github.com/mgaitan/pytest-leak-finder/graphs/commit-activity + + .. image:: https://raster.shields.io/github/license/mgaitan/pytest-leak-finder + :alt: License + :target: https://github.com/mgaitan/pytest-leak-finder?tab=MIT-1-ov-file … modified output ~~~~~~~~~~~~~~~~~ From ca5f4eedecac525704dbbeb04e11b89166fd5685 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 18:20:41 +0000 Subject: [PATCH 8/9] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c → v6.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/3e8a8703264a2f4a69428a0aa4dcb512790b2c8c...v6.0.0) - [github.com/tox-dev/pyproject-fmt: cf78bb920f358be6dea099e6b1fd6f67bccb0955 → v2.26.0](https://github.com/tox-dev/pyproject-fmt/compare/cf78bb920f358be6dea099e6b1fd6f67bccb0955...v2.26.0) - [github.com/abravalheri/validate-pyproject: 4b2e70d08cb2ccd26d1fba73588de41c7a5d50b7 → v0.25](https://github.com/abravalheri/validate-pyproject/compare/4b2e70d08cb2ccd26d1fba73588de41c7a5d50b7...v0.25) - [github.com/sphinx-contrib/sphinx-lint: c883505f64b59c3c5c9375191e4ad9f98e727ccd → v1.0.2](https://github.com/sphinx-contrib/sphinx-lint/compare/c883505f64b59c3c5c9375191e4ad9f98e727ccd...v1.0.2) - [github.com/pycqa/isort: 7f321d375f31a2f03833bc9a548e8783f2b5c420 → 9.0.0b1](https://github.com/pycqa/isort/compare/7f321d375f31a2f03833bc9a548e8783f2b5c420...9.0.0b1) - [github.com/psf/black-pre-commit-mirror: 4160603246a6b365d4a2af661c6d71b0a0f50478 → 26.5.1](https://github.com/psf/black-pre-commit-mirror/compare/4160603246a6b365d4a2af661c6d71b0a0f50478...26.5.1) - [github.com/adamchainz/blacken-docs: fda77690955e9b63c6687d8806bafd56a526e45f → 1.20.0](https://github.com/adamchainz/blacken-docs/compare/fda77690955e9b63c6687d8806bafd56a526e45f...1.20.0) - [github.com/codespell-project/codespell: 2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a → v2.4.3](https://github.com/codespell-project/codespell/compare/2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a...v2.4.3) --- .pre-commit-config.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 44c97e90..0fe23482 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0 + rev: v6.0.0 # v6.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -15,38 +15,38 @@ repos: - id: check-added-large-files args: ['--maxkb=1024'] - repo: https://github.com/tox-dev/pyproject-fmt - rev: cf78bb920f358be6dea099e6b1fd6f67bccb0955 # v2.25.2 + rev: v2.26.0 # v2.25.2 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject - rev: 4b2e70d08cb2ccd26d1fba73588de41c7a5d50b7 # v0.25 + rev: v0.25 # v0.25 hooks: - id: validate-pyproject - repo: https://github.com/sphinx-contrib/sphinx-lint - rev: c883505f64b59c3c5c9375191e4ad9f98e727ccd # v1.0.2 + rev: v1.0.2 # v1.0.2 hooks: - id: sphinx-lint types: [rst] - repo: https://github.com/pycqa/isort - rev: 7f321d375f31a2f03833bc9a548e8783f2b5c420 # 9.0.0b1 + rev: 9.0.0b1 # 9.0.0b1 hooks: - id: isort additional_dependencies: ["toml"] entry: isort --profile=black name: isort (python) - repo: https://github.com/psf/black-pre-commit-mirror - rev: 4160603246a6b365d4a2af661c6d71b0a0f50478 # 26.5.1 + rev: 26.5.1 # 26.5.1 hooks: - id: black - repo: https://github.com/adamchainz/blacken-docs - rev: fda77690955e9b63c6687d8806bafd56a526e45f # 1.20.0 + rev: 1.20.0 # 1.20.0 hooks: - id: blacken-docs args: [--line-length=79] additional_dependencies: - black - repo: https://github.com/codespell-project/codespell - rev: 2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a # v2.4.2 + rev: v2.4.3 # v2.4.2 hooks: - id: codespell - repo: local From 21ba867b9c1eb030948f685546945b312288632f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 18:21:28 +0000 Subject: [PATCH 9/9] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- docs/packs/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/packs/pyproject.toml b/docs/packs/pyproject.toml index 0fc77403..b61c7212 100644 --- a/docs/packs/pyproject.toml +++ b/docs/packs/pyproject.toml @@ -1,7 +1,7 @@ [tool.cibuildwheel] -test-requires = "pytest" -test-command = "pytest {project}/tests" build-verbosity = 1 +test-command = "pytest {project}/tests" +test-requires = "pytest" # support Universal2 for Apple Silicon: macos.archs = [ "auto", "universal2" ] macos.test-skip = [ "*universal2:arm64" ]