Abdo
77d61d7c38
chore: Update Briefcase ( #5138 )
...
## Linked issue
Related to fixes submitted upstream in #4765
## Summary / motivation
Bump Briefcase and update the templates for some changes:
- The option to create a Windows desktop shortcut is shown in the page
where the installation path is set instead of its own page.
- The minimum Windows build number is set in pyproject.toml and enforced
both at build time and install time.
- The MSI installer shows required disk space.
## How to test
Run `./tools/ninja installer:package` on Windows and give the installer
a quick test.
2026-07-11 20:56:00 +03:00
Abdo
643187a050
Shift editor control to TypeScript ( #4029 )
...
Closes https://github.com/ankitects/anki/issues/3830
---------
Co-authored-by: Fernando Lins <fernandolins@users.noreply.github.com >
2026-07-03 21:56:43 +03:00
Abdo
3b50783d82
chore: Bump complexipy ( #5058 )
...
For a Windows fix: https://github.com/rohaquinlop/complexipy/pull/177
2026-06-23 17:19:15 +03:00
Abdo
8f39ce82d5
chore: Sync with the 26.05 branch ( #5041 )
...
This syncs security fixes and translation/version updates from the 26.05
branch.
Related: #5039
---------
Co-authored-by: Andrew Sanchez <andrewsanchez@users.noreply.github.com >
Co-authored-by: Damien Elmes <gpg@ankiweb.net >
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-19 16:36:51 +03:00
Andrew Sanchez
fb0215a2c1
Prototype unified Mintlify docs site ( #4882 )
...
## Summary
- add a generated `docs-site/` Mintlify proof of concept for a unified
Anki docs site
- migrate the desktop manual, AnkiMobile docs, FAQs, add-on docs,
translation docs, release notes, legacy docs, and repo-local Sphinx/MyST
developer docs into the POC tree
- add a migration helper that preserves mdBook ordering, handles common
MDX incompatibilities, and regenerates the landing-page-inspired
Mintlify styling
- apply minimal styling based on the current Anki landing page: Anki
logo, Hanken Grotesk, blue primary color, subtle surfaces, and compact
nav treatment
## Validation
- `uv run --with ty ty check tools/mintlify_poc_migrate.py`
- `source ~/.nvm/nvm.sh && nvm use 22.15.0 && mint validate`
- previewed locally with `mint dev --port 3000` and checked the home
page/developer docs in browser
## Notes
This is intentionally a draft POC. It does not remove the existing
Sphinx or mdBook docs flows yet; it demonstrates what bringing the
sources into this repo and building from a single Mintlify root could
look like.
---------
Co-authored-by: Andrew Sanchez <andrewsanchez@users.noreply.github.com >
Co-authored-by: Luc Mcgrady <lucmcgrady@gmail.com >
Co-authored-by: Abdo <abdo@abdnh.net >
2026-06-12 16:27:33 +03:00
Abdo
f5d9b9ef3c
chore: Integrate Complexipy for complexity analysis ( #4942 )
...
## Linked issue
Closes #4815
## Summary
This adds [Complexipy](https://github.com/rohaquinlop/complexipy ) for
detecting complex Python code:
- The `check:complexity` Ninja actions use a high threshold (50) for now
to avoid failing on existing complex code.
- `just complexipy-diff` is intended for linting new code in PR CI and
uses 15 as the threshold. See
https://rohaquinlop.github.io/complexipy/usage-guide/#ratchet-mode
## How to test
- Run `./ninja check:complexity` locally and confirm it passes.
- Test diff mode: `just complexipy-diff main`.
2026-06-04 19:29:37 +03:00
Fernando Lins
da64f03307
chore(deps): consolidated security updates (Dependabot batch) ( #4934 )
...
## Summary
Consolidates 8 open Dependabot PRs into a single security-focused batch.
### Addressed advisories
- GHSA: tar (Cargo)
[#296 ](https://github.com/ankitects/anki/security/dependabot/296 )
- @tootallnate/once
[#295 ](https://github.com/ankitects/anki/security/dependabot/295 )
- ws [#293 ](https://github.com/ankitects/anki/security/dependabot/293 )
- openssl
[#292 ](https://github.com/ankitects/anki/security/dependabot/292 )
- idna [#291 ](https://github.com/ankitects/anki/security/dependabot/291 )
- devalue
[#287 ](https://github.com/ankitects/anki/security/dependabot/287 )/[#239 ](https://github.com/ankitects/anki/security/dependabot/239 )/[#217 ](https://github.com/ankitects/anki/security/dependabot/217 )/[#216 ](https://github.com/ankitects/anki/security/dependabot/216 )
- postcss
[#275 ](https://github.com/ankitects/anki/security/dependabot/275 )
- svelte
[#286 ](https://github.com/ankitects/anki/security/dependabot/286 )/[#288 ](https://github.com/ankitects/anki/security/dependabot/288 )/[#289 ](https://github.com/ankitects/anki/security/dependabot/289 )
- lodash-es
[#258 ](https://github.com/ankitects/anki/security/dependabot/258 )/[#259 ](https://github.com/ankitects/anki/security/dependabot/259 )
- @sveltejs/kit
[#294 ](https://github.com/ankitects/anki/security/dependabot/294 )
### Sources
Merged from PRs: #4914 , #4887 , #4867 , #4866 , #4865 , #4846 , #4744 , #4892 .
### Not addressed — rand (Cargo)
[#268 ](https://github.com/ankitects/anki/security/dependabot/268 )
PR #4741 (rand 0.9.4 → 0.10.1) was excluded because `fsrs 5.2.0` still
depends on `rand 0.9.4`. The rand 0.10 API changes (`Rng` → `RngExt`)
cause a compile error at the `PostSchedulingFn` boundary. This will be
unblocked when fsrs is upgraded.
### Not addressed (transitive — follow-up)
- urllib3
[#284 ](https://github.com/ankitects/anki/security/dependabot/284 )/[#283 ](https://github.com/ankitects/anki/security/dependabot/283 )
- GitPython
[#282 ](https://github.com/ankitects/anki/security/dependabot/282 )
- ip-address
[#276 ](https://github.com/ankitects/anki/security/dependabot/276 )
- pytest
[#266 ](https://github.com/ankitects/anki/security/dependabot/266 )
- Pygments
[#256 ](https://github.com/ankitects/anki/security/dependabot/256 )
- brace-expansion
[#255 ](https://github.com/ankitects/anki/security/dependabot/255 )/[#158 ](https://github.com/ankitects/anki/security/dependabot/158 )
- picomatch
[#253 ](https://github.com/ankitects/anki/security/dependabot/253 )/[#252 ](https://github.com/ankitects/anki/security/dependabot/252 )
- tar (npm)
[#238 ](https://github.com/ankitects/anki/security/dependabot/238 )/[#235 ](https://github.com/ankitects/anki/security/dependabot/235 )/[#209 ](https://github.com/ankitects/anki/security/dependabot/209 )
- immutable
[#231 ](https://github.com/ankitects/anki/security/dependabot/231 )
- minimatch
[#227 ](https://github.com/ankitects/anki/security/dependabot/227 )/[#226 ](https://github.com/ankitects/anki/security/dependabot/226 )/[#221 ](https://github.com/ankitects/anki/security/dependabot/221 )
- fabric
[#211 ](https://github.com/ankitects/anki/security/dependabot/211 )
These need manual `yarn.lock` resolutions / `uv.lock` overrides.
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-03 15:10:39 -03:00
Abdo
0073124811
chore: Bump anki-audio to 0.2.1 ( #4947 )
...
## Linked issue
#4918 #4949
## Summary
Bump anki-audio to 0.2.1 for the macOS hotfix.
## Steps to reproduce (before)
Audio playback/recording on macOS was broken (see issue).
## How to test (after)
Confirm audio is working now.
2026-06-03 19:03:36 +03:00
Abdo
1822a7c76c
feat: Bump anki-audio package ( #4913 )
...
## Linked issue
Closes #4699
## Summary
This bumps `anki-audio` to the newly published 0.2.0 release.
## How to test
Confirm audio recording & playback is working by using the record button
in the editor.
2026-05-29 22:52:19 +03:00
Abdo
1394540217
test: Add tests for build_installer.py ( #4868 )
...
## Linked issue
Closes #4859
## Summary
Add tests for the build_installer.py script with 100% coverage.
## How to test
Run `just test-py --coverage --html` and browse coverage data.
2026-05-21 07:10:27 +03:00
Fernando Lins
2ea8e5731a
feat: add Python test coverage ( #4841 )
...
## Linked issue
Closes #4838
## Summary/motivation
Adds `coverage.py`-based test coverage for both Python test suites
(`pylib` and `qt`). Introduces `just test-py --coverage` and `just
test-py --coverage --html`, plus the `just test --coverage`.
Coverage reports are written to `out/coverage/`.
## How to test
```sh
# Existing behavior unchanged
just test-py
# Terminal summary + enforces thresholds
just test-py --coverage
# Terminal summary + HTML reports under out/coverage/
just test-py --coverage --html
# Umbrella (Python only for now)
just test --coverage
just test --coverage --html
```
### Checklist (minimum)
- [x] I ran `./ninja check` or an equivalent relevant check locally.
### Details
- `coverage` dependency pinned to >=7.13.5 in pyproject.toml.
- The `coverage` umbrella recipe currently delegates to Python only for
now
## Before / after behavior
Before: no `just test-py`, no coverage support.
After: `just test-py` runs Python tests via ninja; `just test-py
--coverage`
runs them with `coverage.py` and enforces minimum line coverage.
---------
Co-authored-by: Abdo <abdo@abdnh.net >
2026-05-15 21:34:38 -03:00
dependabot[bot]
1f0fc05f93
chore(deps): bump the python-minor-patch group across 1 directory with 16 updates ( #4829 )
...
Bumps the python-minor-patch group with 16 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [pre-commit](https://github.com/pre-commit/pre-commit ) | `4.5.1` |
`4.6.0` |
| [mypy](https://github.com/python/mypy ) | `1.16.1` | `1.17.1` |
| [ruff](https://github.com/astral-sh/ruff ) | `0.12.1` | `0.13.3` |
| [wheel](https://github.com/pypa/wheel ) | `0.46.3` | `0.47.0` |
| [hatchling](https://github.com/pypa/hatch ) | `1.27.0` | `1.29.0` |
| [types-requests](https://github.com/python/typeshed ) |
`2.32.4.20250611` | `2.33.0.20260503` |
| [types-markdown](https://github.com/python/typeshed ) |
`3.8.0.20250415` | `3.10.2.20260408` |
|
[sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme )
| `1.1.4` | `1.2.0` |
| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi ) |
`3.6.0` | `3.8.0` |
|
[sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid )
| `2.0.1` | `2.0.2` |
| [markdown](https://github.com/Python-Markdown/markdown ) | `3.8.2` |
`3.10.2` |
| [orjson](https://github.com/ijl/orjson ) | `3.10.18` | `3.11.8` |
| [typing-extensions](https://github.com/python/typing_extensions ) |
`4.14.0` | `4.15.0` |
| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/ ) |
`4.13.4` | `4.14.3` |
| [flask-cors](https://github.com/corydolphin/flask-cors ) | `6.0.1` |
`6.0.2` |
| [jsonschema](https://github.com/python-jsonschema/jsonschema ) |
`4.24.0` | `4.26.0` |
Updates `pre-commit` from 4.5.1 to 4.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pre-commit/pre-commit/releases ">pre-commit's
releases</a>.</em></p>
<blockquote>
<h2>pre-commit v4.6.0</h2>
<h3>Features</h3>
<ul>
<li><code>pre-commit hook-impl</code>: allow <code>--hook-dir</code> to
be missing to enable easier usage with <code>git</code> 2.54+ git hooks.
<ul>
<li><a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3662 ">#3662</a>
PR by <a
href="https://github.com/asottile "><code>@asottile</code></a>.</li>
</ul>
</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>pre-commit hook-impl</code>: <code>--hook-type</code> is
required.
<ul>
<li><a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3661 ">#3661</a>
PR by <a
href="https://github.com/asottile "><code>@asottile</code></a>.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md ">pre-commit's
changelog</a>.</em></p>
<blockquote>
<h1>4.6.0 - 2026-04-21</h1>
<h3>Features</h3>
<ul>
<li><code>pre-commit hook-impl</code>: allow <code>--hook-dir</code> to
be missing to enable easier
usage with <code>git</code> 2.54+ git hooks.
<ul>
<li><a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3662 ">#3662</a>
PR by <a
href="https://github.com/asottile "><code>@asottile</code></a>.</li>
</ul>
</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>pre-commit hook-impl</code>: <code>--hook-type</code> is
required.
<ul>
<li><a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3661 ">#3661</a>
PR by <a
href="https://github.com/asottile "><code>@asottile</code></a>.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f35134b050 "><code>f35134b</code></a>
v4.6.0</li>
<li><a
href="2a51ffcb81 "><code>2a51ffc</code></a>
Merge pull request <a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3662 ">#3662</a>
from pre-commit/hook-impl-optional-hook-dir</li>
<li><a
href="d7dee322ab "><code>d7dee32</code></a>
make --hook-dir optional for hook-impl</li>
<li><a
href="965aeb1c68 "><code>965aeb1</code></a>
Merge pull request <a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3661 ">#3661</a>
from pre-commit/hook-impl-required</li>
<li><a
href="2eacc064aa "><code>2eacc06</code></a>
--hook-type is required for hook-impl</li>
<li><a
href="f5678bf4ac "><code>f5678bf</code></a>
Merge pull request <a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3657 ">#3657</a>
from pre-commit/pre-commit-ci-update-config</li>
<li><a
href="054cc5bd6b "><code>054cc5b</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li><a
href="5c0f3024d2 "><code>5c0f302</code></a>
Merge pull request <a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3652 ">#3652</a>
from pre-commit/pre-commit-ci-update-config</li>
<li><a
href="a5d9114267 "><code>a5d9114</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li><a
href="129a1f5ca1 "><code>129a1f5</code></a>
Merge pull request <a
href="https://redirect.github.com/pre-commit/pre-commit/issues/3641 ">#3641</a>
from pre-commit/mxr-patch-1</li>
<li>Additional commits viewable in <a
href="https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `mypy` from 1.16.1 to 1.17.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md ">mypy's
changelog</a>.</em></p>
<blockquote>
<h3>Mypy 1.17.1</h3>
<ul>
<li>Retain <code>None</code> as constraints bottom if no bottoms were
provided (Stanislav Terliakov, PR <a
href="https://redirect.github.com/python/mypy/pull/19485 ">19485</a>)</li>
<li>Fix "ignored exception in <code>hasattr</code>" in dmypy
(Stanislav Terliakov, PR <a
href="https://redirect.github.com/python/mypy/pull/19428 ">19428</a>)</li>
<li>Prevent a crash when InitVar is redefined with a method in a
subclass (Stanislav Terliakov, PR <a
href="https://redirect.github.com/python/mypy/pull/19453 ">19453</a>)</li>
</ul>
<h3>Mypy 1.17</h3>
<ul>
<li>Optionally check that match is exhaustive (<code>--enable-error-code
exhaustive-match</code>) (Donal Burns, PR <a
href="https://redirect.github.com/python/mypy/pull/19144 ">19144</a>)</li>
<li>Further improvements to attribute resolution and protocol subtyping
(Ivan Levkivskyi)</li>
<li>Fixes to nondeterministic type checking (Shantanu)</li>
<li>Remove support for targeting Python 3.8 (Marc Mueller)</li>
<li>Initial support for Python 3.14 (Marc Mueller)</li>
<li>Stricter checking of <code>type: ignore</code> comments — must now
specify error code(s)</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.16.1...v1.17.1 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `ruff` from 0.12.1 to 0.13.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases ">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.13.3</h2>
<p>Released on 2025-10-02.</p>
<h3>Preview features</h3>
<ul>
<li>Display diffs for <code>ruff format --check</code> and add support
for different output formats (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20443 ">#20443</a>)</li>
<li>[<code>pyflakes</code>] Handle some common submodule import
situations for <code>unused-import</code> (<code>F401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20200 ">#20200</a>)</li>
<li>[<code>ruff</code>] Do not flag <code>%r</code> +
<code>repr()</code> combinations (<code>RUF065</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20600 ">#20600</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>cli</code>] Add conflict between <code>--add-noqa</code> and
<code>--diff</code> options (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20642 ">#20642</a>)</li>
<li>[<code>pylint</code>] Exempt required imports from
<code>PLR0402</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20381 ">#20381</a>)</li>
<li>[<code>pylint</code>] Fix missing <code>max-nested-blocks</code> in
settings display (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20574 ">#20574</a>)</li>
<li>[<code>pyupgrade</code>] Prevent infinite loop with
<code>I002</code> and <code>UP026</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20634 ">#20634</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-simplify</code>] Improve help message clarity
(<code>SIM105</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20548 ">#20548</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/TaKO8Ki "><code>@TaKO8Ki</code></a></li>
<li><a href="https://github.com/ntBre "><code>@ntBre</code></a></li>
<li><a href="https://github.com/dylwil3 "><code>@dylwil3</code></a></li>
<li><a
href="https://github.com/MichaReiser "><code>@MichaReiser</code></a></li>
<li><a
href="https://github.com/danparizher "><code>@danparizher</code></a></li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.12.1...0.13.3 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `wheel` from 0.46.3 to 0.47.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/wheel/releases ">wheel's
releases</a>.</em></p>
<blockquote>
<h2>0.47.0</h2>
<ul>
<li>Added the <code>wheel info</code> subcommand to display metadata
about wheel files without unpacking them (<a
href="https://redirect.github.com/pypa/wheel/issues/639 ">#639</a>)</li>
<li>Fixed <code>WheelFile</code> raising <code>Missing RECORD
file</code> when the wheel filename contains uppercase characters (e.g.
<code>Django-3.2.5.whl</code>) but the <code>.dist-info</code> directory
inside uses normalized lowercase naming (<a
href="https://redirect.github.com/pypa/wheel/issues/411 ">#411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/wheel/blob/main/docs/news.rst ">wheel's
changelog</a>.</em></p>
<blockquote>
<h1>Release Notes</h1>
<p><strong>0.47.0 (2026-04-22)</strong></p>
<ul>
<li>Added the <code>wheel info</code> subcommand to display metadata
about wheel files without
unpacking them (<code>[#639 ](https://github.com/pypa/wheel/issues/639 )
<https://github.com/pypa/wheel/issues/639> ;</code>_)</li>
<li>Fixed <code>WheelFile</code> raising <code>Missing RECORD
file</code> when the wheel filename contains
uppercase characters (e.g. <code>Django-3.2.5.whl</code>) but the
<code>.dist-info</code> directory
inside uses normalized lowercase naming
(<code>[#411 ](https://github.com/pypa/wheel/issues/411 )
<https://github.com/pypa/wheel/issues/411> ;</code>_)</li>
</ul>
<p><strong>0.46.3 (2026-01-22)</strong></p>
<ul>
<li>Fixed <code>ImportError: cannot import name '_setuptools_logging'
from 'wheel'</code> when
installed alongside an old version of setuptools and running the
<code>bdist_wheel</code>
command (<code>[#676 ](https://github.com/pypa/wheel/issues/676 )
<https://github.com/pypa/wheel/issues/676> ;</code>_)</li>
</ul>
<p><strong>0.46.2 (2026-01-22)</strong></p>
<ul>
<li>Restored the <code>bdist_wheel</code> command for compatibility with
<code>setuptools</code> older than
v70.1</li>
<li>Importing <code>wheel.bdist_wheel</code> now emits a
<code>FutureWarning</code> instead of a
<code>DeprecationWarning</code></li>
<li>Fixed <code>wheel unpack</code> potentially altering the permissions
of files outside of the
destination tree with maliciously crafted wheels (CVE-2026-24049)</li>
</ul>
<p><strong>0.46.1 (2025-04-08)</strong></p>
<ul>
<li>Temporarily restored the <code>wheel.macosx_libfile</code> module
(<code>[#659 ](https://github.com/pypa/wheel/issues/659 )
<https://github.com/pypa/wheel/issues/659> ;</code>_)</li>
</ul>
<p><strong>0.46.0 (2025-04-03)</strong></p>
<ul>
<li>Dropped support for Python 3.8</li>
<li>Removed the <code>bdist_wheel</code> setuptools command
implementation and entry point.
The <code>wheel.bdist_wheel</code> module is now just an alias to
<code>setuptools.command.bdist_wheel</code>, emitting a deprecation
warning on import.</li>
<li>Removed vendored <code>packaging</code> in favor of a run-time
dependency on it</li>
<li>Made the <code>wheel.metadata</code> module private (with a
deprecation warning if it's
imported</li>
<li>Made the <code>wheel.cli</code> package private (no deprecation
warning)</li>
<li>Fixed an exception when calling the <code>convert</code> command
with an empty description
field</li>
</ul>
<p><strong>0.45.1 (2024-11-23)</strong></p>
<ul>
<li>Fixed pure Python wheels converted from eggs and wininst files
having the ABI tag in
the file name</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="efd83a750f "><code>efd83a7</code></a>
Created a new release</li>
<li><a
href="bb69216d35 "><code>bb69216</code></a>
Reordered the changelog entries</li>
<li><a
href="d5a1763ce9 "><code>d5a1763</code></a>
fix(wheelfile): resolve .dist-info path case-insensitively when reading
wheel...</li>
<li><a
href="5718957928 "><code>5718957</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pypa/wheel/issues/685 ">#685</a>)</li>
<li><a
href="625806845a "><code>6258068</code></a>
chore: log_level is better than log_cli_level (<a
href="https://redirect.github.com/pypa/wheel/issues/684 ">#684</a>)</li>
<li><a
href="2975debc78 "><code>2975deb</code></a>
Require tox >= 4.22</li>
<li><a
href="47674ba770 "><code>47674ba</code></a>
chore: add check-sdist to checks (<a
href="https://redirect.github.com/pypa/wheel/issues/681 ">#681</a>)</li>
<li><a
href="56223f6f8d "><code>56223f6</code></a>
<code>__package__</code> → <code>__spec__.parent</code> (<a
href="https://redirect.github.com/pypa/wheel/issues/679 ">#679</a>)</li>
<li><a
href="0ce509e02d "><code>0ce509e</code></a>
Added the wheel info subcommand (<a
href="https://redirect.github.com/pypa/wheel/issues/669 ">#669</a>)</li>
<li><a
href="39039c0f34 "><code>39039c0</code></a>
Improved the index page</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/wheel/compare/0.46.3...0.47.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `hatchling` from 1.27.0 to 1.29.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/hatch/releases ">hatchling's
releases</a>.</em></p>
<blockquote>
<h2>Hatchling v1.29.0</h2>
<p><em><strong>Fixed:</strong></em></p>
<ul>
<li>Source Date Epoch no longer fails when set to date before 1980.</li>
</ul>
<h2>Hatchling v1.28.0</h2>
<p><em><strong>Changed:</strong></em></p>
<ul>
<li>Drop support for Python 3.9</li>
</ul>
<p><em><strong>Added:</strong></em></p>
<ul>
<li>Add <code>sbom-files</code> option and <code>sbom_files</code> build
data to the <code>wheel</code> build target for including Software Bill
of Materials files.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1a74daa6f5 "><code>1a74daa</code></a>
Noqa release command to unblock GHA for PRs</li>
<li><a
href="78065f4c54 "><code>78065f4</code></a>
For Immutable Releases (<a
href="https://redirect.github.com/pypa/hatch/issues/2188 ">#2188</a>)</li>
<li><a
href="592c0a9c8c "><code>592c0a9</code></a>
release Hatchling v1.29.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2186 ">#2186</a>)</li>
<li><a
href="874059b82d "><code>874059b</code></a>
Prerelease doc updates. (<a
href="https://redirect.github.com/pypa/hatch/issues/2183 ">#2183</a>)</li>
<li><a
href="0e31bb64ec "><code>0e31bb6</code></a>
Immutable releases ci (<a
href="https://redirect.github.com/pypa/hatch/issues/2182 ">#2182</a>)</li>
<li><a
href="f400be159b "><code>f400be1</code></a>
Support a SOURCE_DATE_EPOCH prior to 1980 (<a
href="https://redirect.github.com/pypa/hatch/issues/1999 ">#1999</a>)</li>
<li><a
href="47b55ce0a9 "><code>47b55ce</code></a>
Fixing failing tests for changes in Rich markdown rendering (<a
href="https://redirect.github.com/pypa/hatch/issues/2172 ">#2172</a>)</li>
<li><a
href="cc4acd6686 "><code>cc4acd6</code></a>
Add a note guiding users to include SBOM files in the source
distribution (<a
href="https://redirect.github.com/pypa/hatch/issues/2 ">#2</a>...</li>
<li><a
href="9068758886 "><code>9068758</code></a>
Fix <a
href="https://redirect.github.com/pypa/hatch/issues/2164 ">#2164</a>
keep_env type error for hatch shell (<a
href="https://redirect.github.com/pypa/hatch/issues/2165 ">#2165</a>)</li>
<li><a
href="bc31cfccc1 "><code>bc31cfc</code></a>
Fix warning and tests with packaging 26.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2159 ">#2159</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/hatch/compare/hatchling-v1.27.0...hatchling-v1.29.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `types-requests` from 2.32.4.20250611 to 2.33.0.20260503
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/python/typeshed/commits ">compare view</a></li>
</ul>
</details>
<br />
Updates `types-markdown` from 3.8.0.20250415 to 3.10.2.20260408
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/python/typeshed/commits ">compare view</a></li>
</ul>
</details>
<br />
Updates `sphinx-book-theme` from 1.1.4 to 1.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/executablebooks/sphinx-book-theme/releases ">sphinx-book-theme's
releases</a>.</em></p>
<blockquote>
<h2>v1.2.0 -- 2026-03-09</h2>
<ul>
<li>Jupyterlite button - patched, merged version of <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655 ">#655</a>
by <a
href="https://github.com/matthew-brett "><code>@matthew-brett</code></a>
in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914 ">executablebooks/sphinx-book-theme#914</a></li>
<li>[ENH] Show source text on GitLab projects by <a
href="https://github.com/tymcauley "><code>@tymcauley</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916 ">executablebooks/sphinx-book-theme#916</a></li>
<li>Fix typo in docs by <a
href="https://github.com/user27182 "><code>@user27182</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913 ">executablebooks/sphinx-book-theme#913</a></li>
<li>prepare for latest pydata and python releases by <a
href="https://github.com/choldgraf "><code>@choldgraf</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920 ">executablebooks/sphinx-book-theme#920</a></li>
<li>Ignore PendingDeprecationWarning about parser_name deprecation with
Docutils 0.22 by <a
href="https://github.com/mitya57 "><code>@mitya57</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919 ">executablebooks/sphinx-book-theme#919</a></li>
<li>CI: adding cronjob by <a
href="https://github.com/bsipocz "><code>@bsipocz</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926 ">executablebooks/sphinx-book-theme#926</a></li>
<li>DOC: Fix margin directive documentation by <a
href="https://github.com/melissawm "><code>@melissawm</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930 ">executablebooks/sphinx-book-theme#930</a></li>
<li>MAINT: adding sphinx9 and python3.14 support and bumping minimum
sphinx to 7 and python to 3.11 by <a
href="https://github.com/bsipocz "><code>@bsipocz</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927 ">executablebooks/sphinx-book-theme#927</a></li>
</ul>
<p><strong>Full Changelog</strong>:
<a
href="https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2 ">https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2 </a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/executablebooks/sphinx-book-theme/blob/main/CHANGELOG.md ">sphinx-book-theme's
changelog</a>.</em></p>
<blockquote>
<h2>v1.2.0 -- 2026-03-09</h2>
<ul>
<li>Jupyterlite button - patched, merged version of <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655 ">#655</a>
by <a
href="https://github.com/matthew-brett "><code>@matthew-brett</code></a>
in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914 ">executablebooks/sphinx-book-theme#914</a></li>
<li>[ENH] Show source text on GitLab projects by <a
href="https://github.com/tymcauley "><code>@tymcauley</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916 ">executablebooks/sphinx-book-theme#916</a></li>
<li>Fix typo in docs by <a
href="https://github.com/user27182 "><code>@user27182</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913 ">executablebooks/sphinx-book-theme#913</a></li>
<li>prepare for latest pydata and python releases by <a
href="https://github.com/choldgraf "><code>@choldgraf</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920 ">executablebooks/sphinx-book-theme#920</a></li>
<li>Ignore PendingDeprecationWarning about parser_name deprecation with
Docutils 0.22 by <a
href="https://github.com/mitya57 "><code>@mitya57</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919 ">executablebooks/sphinx-book-theme#919</a></li>
<li>CI: adding cronjob by <a
href="https://github.com/bsipocz "><code>@bsipocz</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926 ">executablebooks/sphinx-book-theme#926</a></li>
<li>DOC: Fix margin directive documentation by <a
href="https://github.com/melissawm "><code>@melissawm</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930 ">executablebooks/sphinx-book-theme#930</a></li>
<li>MAINT: adding sphinx9 and python3.14 support and bumping minimum
sphinx to 7 and python to 3.11 by <a
href="https://github.com/bsipocz "><code>@bsipocz</code></a> in <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927 ">executablebooks/sphinx-book-theme#927</a></li>
</ul>
<p><strong>Full Changelog</strong>:
<a
href="https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2 ">https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2 </a></p>
<h2>v1.1.2 -- 2024-02-13</h2>
<p>(<a
href="https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.1...3da24da74f6042599fe6c9e2d612f5cbdef42280 ">full
changelog</a>)</p>
<h3>Enhancements made</h3>
<ul>
<li>ENH: bump version <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/818 ">#818</a>
(<a href="https://github.com/agoose77 "><code>@agoose77</code></a>)</li>
</ul>
<h3>Bugs fixed</h3>
<ul>
<li>FIX: correct event-handler signature <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/817 ">#817</a>
(<a href="https://github.com/agoose77 "><code>@agoose77</code></a>)</li>
</ul>
<h3>Contributors to this release</h3>
<p>(<a
href="https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2024-02-13&to=2024-02-13&type=c ">GitHub
contributors page for this release</a>)</p>
<p><a
href="https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2024-02-13..2024-02-13&type=Issues "><code>@agoose77</code></a></p>
<h2>v1.1.1 -- 2024-02-13</h2>
<p>(<a
href="https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.0...9335ab99b0bc77b826cb2c5afcef3432f14e8780 ">full
changelog</a>)</p>
<h3>Enhancements made</h3>
<ul>
<li>ENH: bump version for 1.1.1 <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/815 ">#815</a>
(<a href="https://github.com/agoose77 "><code>@agoose77</code></a>)</li>
</ul>
<h3>Bugs fixed</h3>
<ul>
<li>FIX: use <code>config-inited</code> event to register config <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/814 ">#814</a>
(<a href="https://github.com/agoose77 "><code>@agoose77</code></a>)</li>
</ul>
<h3>Other merged PRs</h3>
<ul>
<li>Build(deps): Bump actions/setup-python from 4 to 5 <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/803 ">#803</a>
(<a
href="https://github.com/dependabot "><code>@dependabot</code></a>)</li>
<li>[pre-commit.ci] pre-commit autoupdate <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/pull/801 ">#801</a>
(<a
href="https://github.com/pre-commit-ci "><code>@pre-commit-ci</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="30f968ff99 "><code>30f968f</code></a>
Release v1.2.0</li>
<li><a
href="b78d24f610 "><code>b78d24f</code></a>
Finalizing changelog for v1.2.0</li>
<li><a
href="0415925b13 "><code>0415925</code></a>
MAINT: ignore bots in release notes</li>
<li><a
href="5797d88ca3 "><code>5797d88</code></a>
Merge pull request <a
href="https://redirect.github.com/executablebooks/sphinx-book-theme/issues/927 ">#927</a>
from bsipocz/MAINT_sphinx_dev</li>
<li><a
href="f23d0946c7 "><code>f23d094</code></a>
CI: Adding workaround for autodoc typehint parsing issue</li>
<li><a
href="8747e975f9 "><code>8747e97</code></a>
MAINT: dropping sphinx<7 and python<3.11 support</li>
<li><a
href="ffac4dee87 "><code>ffac4de</code></a>
MAINT: using python 3.12 for RTD</li>
<li><a
href="cb587276c9 "><code>cb58727</code></a>
MAINT: min pin for ablog due to sphinx9 incompatibility</li>
<li><a
href="8cc45e4ef5 "><code>8cc45e4</code></a>
CI: ignore linkchecking URLs where anchors throw 403</li>
<li><a
href="d521920234 "><code>d521920</code></a>
MAINT: adding sphinx9 and python 3.14 to testing</li>
<li>Additional commits viewable in <a
href="https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `sphinx-autoapi` from 3.6.0 to 3.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/readthedocs/sphinx-autoapi/releases ">sphinx-autoapi's
releases</a>.</em></p>
<blockquote>
<h2>v3.8.0</h2>
<h1>Features</h1>
<ul>
<li>Autodoc-style directives can access members excluded by
autoapi_options</li>
</ul>
<h1>Misc</h1>
<ul>
<li><a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553 ">#553</a></li>
</ul>
<h2>v3.7.0</h2>
<h1>Features</h1>
<ul>
<li>Added autoapi.import warning for when AutoAPI directives are given
non-existent objects</li>
<li>Adding autoapi_follow_symlinks, which allows api to traverse into
symlinked directories when generating the API documentation.</li>
<li>Drop support for Python 3.9 and officially support Python 3.14</li>
<li>Support rendering PEP-695 type parameters</li>
</ul>
<h1>Bugfixes</h1>
<ul>
<li>Render typing_extensions.TypeAlias like other type aliases (<a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520 ">#520</a>)</li>
<li>Fix PythonFunction.overloads typing when source code overload(s) do
not provide a return type (<a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523 ">#523</a>)</li>
</ul>
<h1>Misc</h1>
<ul>
<li>Fix deprecation warnings raised by astroid and sphinx</li>
<li>Handling case where match returns None to fix mypy unit test.</li>
</ul>
<h2>v3.6.1</h2>
<h1>Bugfixes</h1>
<ul>
<li>Update the supported versions of astroid. Fix the breaking change to
Import and pass in the AstroidManager to the AstroidBuilder (<a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536 ">#536</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst ">sphinx-autoapi's
changelog</a>.</em></p>
<blockquote>
<h2>v3.8.0 (2026-03-07)</h2>
<p>Features
^^^^^^^^</p>
<ul>
<li>Autodoc-style directives can access members excluded by
autoapi_options</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553 ">#553</a></li>
</ul>
<h2>v3.7.0 (2026-02-10)</h2>
<p>Features
^^^^^^^^</p>
<ul>
<li>Added autoapi.import warning for when AutoAPI directives are given
non-existent objects</li>
<li>Adding <code>autoapi_follow_symlinks</code>, which allows api to
traverse into symlinked directories when generating the API
documentation.</li>
<li>Drop support for Python 3.9 and officially support Python 3.14</li>
<li>Support rendering PEP-695 type parameters</li>
</ul>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Render typing_extensions.TypeAlias like other type aliases (<a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520 ">#520</a>)</li>
<li>Fix <code>PythonFunction.overloads</code> typing when source code
overload(s) do not provide a return type (<a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523 ">#523</a>)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li>Fix deprecation warnings raised by astroid and sphinx</li>
<li>Handling case where match returns None to fix mypy unit test.</li>
</ul>
<h2>v3.6.1 (2025-10-06)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Update the supported versions of astroid.
Fix the breaking change to Import and pass in the AstroidManager to the
AstroidBuilder (<a
href="https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536 ">#536</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="75cbffdea0 "><code>75cbffd</code></a>
Version 3.8.0</li>
<li><a
href="7838cf6937 "><code>7838cf6</code></a>
Bump the github-actions group with 2 updates</li>
<li><a
href="f1cdd30233 "><code>f1cdd30</code></a>
Attempt to fix macos-latest build</li>
<li><a
href="34bb24ccc9 "><code>34bb24c</code></a>
Autodoc-style directives can access members excluded by
autoapi_options</li>
<li><a
href="ccb2e898cb "><code>ccb2e89</code></a>
astroid requirement is consistent across all versions of Python</li>
<li><a
href="0917ed2d4a "><code>0917ed2</code></a>
Version 3.7.0</li>
<li><a
href="394beb4532 "><code>394beb4</code></a>
Add warning for missing import</li>
<li><a
href="96cd74d1a0 "><code>96cd74d</code></a>
Update changelog</li>
<li><a
href="c248b85d66 "><code>c248b85</code></a>
Render typing_extensions.TypeAlias like other type aliases</li>
<li><a
href="a2f49c9689 "><code>a2f49c9</code></a>
Fix deprecation warnings raised by astroid and sphinx</li>
<li>Additional commits viewable in <a
href="https://github.com/readthedocs/sphinx-autoapi/compare/v3.6.0...v3.8.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `sphinxcontrib-mermaid` from 2.0.1 to 2.0.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mgaitan/sphinxcontrib-mermaid/blob/master/CHANGELOG.md ">sphinxcontrib-mermaid's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>Unreleased</h2>
<ul>
<li>Add <code>mermaid_dark_theme</code> and
<code>mermaid_light_theme</code> config options for configurable theme
switching</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="19be468202 "><code>19be468</code></a>
Merge pull request <a
href="https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/240 ">#240</a>
from timkpaine/tkp/hatch</li>
<li><a
href="e1f9eccc13 "><code>e1f9ecc</code></a>
Switch to hatchling</li>
<li><a
href="42aa20a010 "><code>42aa20a</code></a>
Merge pull request <a
href="https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/239 ">#239</a>
from timkpaine/tkp/202</li>
<li><a
href="2db5b555ff "><code>2db5b55</code></a>
bump to 2.0.2</li>
<li><a
href="25c7ef7b8f "><code>25c7ef7</code></a>
Merge pull request <a
href="https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/237 ">#237</a>
from kartben/local_paths</li>
<li><a
href="e98c6f8b88 "><code>e98c6f8</code></a>
increase test coverage for _use_local options</li>
<li><a
href="1422b452a5 "><code>1422b45</code></a>
Resolve local Mermaid/ELK/ZenUML/D3 JS paths under html_static_path</li>
<li><a
href="d6d874c4fb "><code>d6d874c</code></a>
Merge pull request <a
href="https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/236 ">#236</a>
from jensens/configurable-theme</li>
<li><a
href="bce597640b "><code>bce5976</code></a>
Document mermaid_dark_theme and mermaid_light_theme config options</li>
<li><a
href="12bb2ac696 "><code>12bb2ac</code></a>
Add mermaid_dark_theme and mermaid_light_theme config options</li>
<li>See full diff in <a
href="https://github.com/mgaitan/sphinxcontrib-mermaid/compare/2.0.1...2.0.2 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `markdown` from 3.8.2 to 3.10.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Python-Markdown/markdown/releases ">markdown's
releases</a>.</em></p>
<blockquote>
<h2>Release 3.10.2</h2>
<h3>Fixed</h3>
<ul>
<li>Fix a regression related to comment handling (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1590 ">#1590</a>).</li>
<li>More reliable fix for <code></</code> (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1593 ">#1593</a>).</li>
</ul>
<h2>Release 3.10.1</h2>
<h3>Fixed</h3>
<ul>
<li>Ensure nested elements inside inline comments are properly unescaped
(<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1571 ">#1571</a>).</li>
<li>Make the docs build successfully with mkdocstrings-python 2.0 (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1575 ">#1575</a>).</li>
<li>Fix infinite loop when multiple bogus or unclosed HTML comments
appear in input (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1578 ">#1578</a>).</li>
<li>Fix another infinite loop when handling bad comments (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1586 ">#1586</a>).</li>
</ul>
<h2>Release 3.10.0</h2>
<h3>Changed</h3>
<ul>
<li>Officially support Python 3.14 and PyPy 3.11 and drop support for
Python 3.9
and PyPy 3.9.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix an HTML comment parsing case in some Python versions that can
cause an
infinite loop (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1554 ">#1554</a>).</li>
<li>Revert the default behavior of <code>USE_DEFINITION_ORDER</code> (to
<code>True</code>). The new
behavior introduced in 3.9.0 is experimental and results are
inconsistent.
It should not have been made the default behavior (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1561 ">#1561</a>).</li>
</ul>
<h2>Release 3.9.0</h2>
<h3>Changed</h3>
<ul>
<li>Footnotes are now ordered by the occurrence of their references in
the
document. A new configuration option for the footnotes extension,
<code>USE_DEFINITION_ORDER</code>, has been added to support restoring
the previous
behavior of ordering footnotes by the occurrence of definitions (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1367 ">#1367</a>).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Ensure inline processing iterates through elements in document order
(<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1546 ">#1546</a>).</li>
<li>Fix handling of incomplete HTML tags in code spans in Python 3.14
(<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1547 ">#1547</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md ">markdown's
changelog</a>.</em></p>
<blockquote>
<h2>[3.10.2] - 2026-02-09</h2>
<h3>Fixed</h3>
<ul>
<li>Fix a regression related to comment handling (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1590 ">#1590</a>).</li>
<li>More reliable fix for <code></</code> (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1593 ">#1593</a>).</li>
</ul>
<h2>[3.10.1] - 2026-01-21</h2>
<h3>Fixed</h3>
<ul>
<li>Ensure nested elements inside inline comments are properly unescaped
(<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1571 ">#1571</a>).</li>
<li>Make the docs build successfully with mkdocstrings-python 2.0 (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1575 ">#1575</a>).</li>
<li>Fix infinite loop when multiple bogus or unclosed HTML comments
appear in input (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1578 ">#1578</a>).</li>
<li>Fix another infinite loop when handling bad comments (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1586 ">#1586</a>).</li>
</ul>
<h2>[3.10.0] - 2025-11-03</h2>
<h3>Changed</h3>
<ul>
<li>Officially support Python 3.14 and PyPy 3.11 and drop support for
Python 3.9
and PyPy 3.9.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix an HTML comment parsing case in some Python versions that can
cause an
infinite loop (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1554 ">#1554</a>).</li>
<li>Revert the default behavior of <code>USE_DEFINITION_ORDER</code> (to
<code>True</code>). The new
behavior introduced in 3.9.0 is experimental and results are
inconsistent.
It should not have been made the default behavior (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1561 ">#1561</a>).</li>
</ul>
<h2>[3.9.0] - 2025-09-04</h2>
<h3>Changed</h3>
<ul>
<li>Footnotes are now ordered by the occurrence of their references in
the
document. A new configuration option for the footnotes extension,
<code>USE_DEFINITION_ORDER</code>, has been added to support restoring
the previous
behavior of ordering footnotes by the occurrence of definitions (<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1367 ">#1367</a>).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Ensure inline processing iterates through elements in document order
(<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1546 ">#1546</a>).</li>
<li>Fix handling of incomplete HTML tags in code spans in Python 3.14
(<a
href="https://redirect.github.com/Python-Markdown/markdown/issues/1547 ">#1547</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e7a0efb3a7 "><code>e7a0efb</code></a>
Bump version to 3.10.2</li>
<li><a
href="630183336b "><code>6301833</code></a>
Document HTML sanitation policy</li>
<li><a
href="7f29f1a69d "><code>7f29f1a</code></a>
More reliable fix for <code></</code></li>
<li><a
href="c4386475a6 "><code>c438647</code></a>
Fix regression of special comments</li>
<li><a
href="e5fa5b86e8 "><code>e5fa5b8</code></a>
Bump version to 3.10.1</li>
<li><a
href="f9253495f5 "><code>f925349</code></a>
More HTML fixes</li>
<li><a
href="9933a0a469 "><code>9933a0a</code></a>
Revert "Allow reference links with backticks"</li>
<li><a
href="07dfa4eb43 "><code>07dfa4e</code></a>
Allow reference links with backticks</li>
<li><a
href="fb6b27a6ff "><code>fb6b27a</code></a>
Fix infinite loop when text contains multiple unclosed comments</li>
<li><a
href="89112c293f "><code>89112c2</code></a>
Make the docs build successfully with mkdocstrings-python 2.0</li>
<li>Additional commits viewable in <a
href="https://github.com/Python-Markdown/markdown/compare/3.8.2...3.10.2 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `orjson` from 3.10.18 to 3.11.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ijl/orjson/releases ">orjson's
releases</a>.</em></p>
<blockquote>
<h2>3.11.8</h2>
<h3>Changed</h3>
<ul>
<li>Build and compatibility improvements.</li>
</ul>
<h2>3.11.7</h2>
<h3>Changed</h3>
<ul>
<li>Use a faster library to serialize <code>float</code>. Users with
byte-exact regression
tests should note positive exponents are now written using a
<code>+</code>, e.g.,
<code>1.2e+30</code> instead of <code>1.2e30</code>. Both formats are
spec-compliant.</li>
<li>ABI compatibility with CPython 3.15 alpha 5 free-threading.</li>
</ul>
<h2>3.11.6</h2>
<h3>Changed</h3>
<ul>
<li>orjson now includes code licensed under the Mozilla Public License
2.0 (MPL-2.0).</li>
<li>Drop support for Python 3.9.</li>
<li>ABI compatibility with CPython 3.15 alpha 5.</li>
<li>Build now depends on Rust 1.89 or later instead of 1.85.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix sporadic crash serializing deeply nested <code>list</code> of
<code>dict</code>.</li>
</ul>
<h2>3.11.5</h2>
<h3>Changed</h3>
<ul>
<li>Show simple error message instead of traceback when attempting to
build on unsupported Python versions.</li>
</ul>
<h2>3.11.4</h2>
<h3>Changed</h3>
<ul>
<li>ABI compatibility with CPython 3.15 alpha 1.</li>
<li>Publish PyPI wheels for 3.14 and manylinux i686, manylinux arm7,
manylinux ppc64le, manylinux s390x.</li>
<li>Build now requires a C compiler.</li>
</ul>
<h2>3.11.3</h2>
<h3>Fixed</h3>
<ul>
<li>Fix PyPI project metadata when using maturin 1.9.2 or later.</li>
</ul>
<h2>3.11.2</h2>
<h3>Fixed</h3>
<ul>
<li>Fix build using Rust 1.89 on amd64.</li>
</ul>
<h3>Changed</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ijl/orjson/blob/master/CHANGELOG.md ">orjson's
changelog</a>.</em></p>
<blockquote>
<h2>3.11.8 - 2026-03-31</h2>
<h3>Changed</h3>
<ul>
<li>Build and compatibility improvements.</li>
</ul>
<h2>3.11.7 - 2026-02-02</h2>
<h3>Changed</h3>
<ul>
<li>Use a faster library to serialize <code>float</code>. Users with
byte-exact regression
tests should note positive exponents are now written using a
<code>+</code>, e.g.,
<code>1.2e+30</code> instead of <code>1.2e30</code>. Both formats are
spec-compliant.</li>
<li>ABI compatibility with CPython 3.15 alpha 5 free-threading.</li>
</ul>
<h2>3.11.6 - 2026-01-29</h2>
<h3>Changed</h3>
<ul>
<li>orjson now includes code licensed under the Mozilla Public License
2.0 (MPL-2.0).</li>
<li>Drop support for Python 3.9.</li>
<li>ABI compatibility with CPython 3.15 alpha 5.</li>
<li>Build now depends on Rust 1.89 or later instead of 1.85.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix sporadic crash serializing deeply nested <code>list</code> of
<code>dict</code>.</li>
</ul>
<h2>3.11.5 - 2025-12-06</h2>
<h3>Changed</h3>
<ul>
<li>Show simple error message instead of traceback when attempting to
build on unsupported Python versions.</li>
</ul>
<h2>3.11.4 - 2025-10-24</h2>
<h3>Changed</h3>
<ul>
<li>ABI compatibility with CPython 3.15 alpha 1.</li>
<li>Publish PyPI wheels for 3.14 and manylinux i686, manylinux arm7,
manylinux ppc64le, manylinux s390x.</li>
<li>Build now requires a C compiler.</li>
</ul>
<h2>3.11.3 - 2025-08-26</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5cbb3d0398 "><code>5cbb3d0</code></a>
3.11.8</li>
<li><a
href="4195d7f263 "><code>4195d7f</code></a>
writer::half</li>
<li><a
href="d00641b694 "><code>d00641b</code></a>
writer::uuid</li>
<li><a
href="c84d9b4ba4 "><code>c84d9b4</code></a>
build and compatibility misc</li>
<li><a
href="4547234b68 "><code>4547234</code></a>
ffi::numpy</li>
<li><a
href="0d4a5ad1f1 "><code>0d4a5ad</code></a>
datetime PyRef idiom</li>
<li><a
href="e93a13d372 "><code>e93a13d</code></a>
Cross-compile avoids maturin v1.12 build-details.json error</li>
<li><a
href="ec2b066cae "><code>ec2b066</code></a>
3.11.7</li>
<li><a
href="1ca01f78cf "><code>1ca01f7</code></a>
zmij</li>
<li><a
href="1716a226bd "><code>1716a22</code></a>
cargo update</li>
<li>Additional commits viewable in <a
href="https://github.com/ijl/orjson/compare/3.10.18...3.11.8 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `typing-extensions` from 4.14.0 to 4.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python/typing_extensions/releases ">typing-extensions's
releases</a>.</em></p>
<blockquote>
<h2>4.15.0</h2>
<p>No user-facing changes since 4.15.0rc1.</p>
<p>New features since 4.14.1:</p>
<ul>
<li>Add the <code>@typing_extensions.disjoint_base</code> decorator, as
specified
in PEP 800. Patch by Jelle Zijlstra.</li>
<li>Add <code>typing_extensions.type_repr</code>, a backport of
<a
href="https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr "><code>annotationlib.type_repr</code></a>,
introduced in Python 3.14 (CPython PR <a
href="https://redirect.github.com/python/cpython/pull/124551 ">#124551</a>,
originally by Jelle Zijlstra). Patch by Semyon Moroz.</li>
<li>Fix behavior of type params in
<code>typing_extensions.evaluate_forward_ref</code>. Backport of
CPython PR <a
href="https://redirect.github.com/python/cpython/pull/137227 ">#137227</a>
by Jelle Zijlstra.</li>
</ul>
<h2>4.15.0rc1</h2>
<ul>
<li>Add the <code>@typing_extensions.disjoint_base</code> decorator, as
specified
in PEP 800. Patch by Jelle Zijlstra.</li>
<li>Add <code>typing_extensions.type_repr</code>, a backport of
<a
href="https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr "><code>annotationlib.type_repr</code></a>,
introduced in Python 3.14 (CPython PR <a
href="https://redirect.github.com/python/cpython/pull/124551 ">#124551</a>,
originally by Jelle Zijlstra). Patch by Semyon Moroz.</li>
<li>Fix behavior of type params in
<code>typing_extensions.evaluate_forward_ref</code>. Backport of
CPython PR <a
href="https://redirect.github.com/python/cpython/pull/137227 ">#137227</a>
by Jelle Zijlstra.</li>
</ul>
<h2>4.14.1</h2>
<h1>Release 4.14.1 (July 4, 2025)</h1>
<ul>
<li>Fix usage of <code>typing_extensions.TypedDict</code> nested inside
other types
(e.g., <code>typing.Type[typing_extensions.TypedDict]</code>). This is
not allowed by the
type system but worked on older versions, so we maintain support.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/typing_extensions/blob/main/CHANGELOG.md ">typing-extensions's
changelog</a>.</em></p>
<blockquote>
<h1>Release 4.15.0 (August 25, 2025)</h1>
<p>No user-facing changes since 4.15.0rc1.</p>
<h1>Release 4.15.0rc1 (August 18, 2025)</h1>
<ul>
<li>Add the <code>@typing_extensions.disjoint_base</code> decorator, as
specified
in PEP 800. Patch by Jelle Zijlstra.</li>
<li>Add <code>typing_extensions.type_repr</code>, a backport of
<a
href="https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr "><code>annotationlib.type_repr</code></a>,
introduced in Python 3.14 (CPython PR <a
href="https://redirect.github.com/python/cpython/pull/124551 ">#124551</a>,
originally by Jelle Zijlstra). Patch by Semyon Moroz.</li>
<li>Fix behavior of type params in
<code>typing_extensions.evaluate_forward_ref</code>. Backport of
CPython PR <a
href="https://redirect.github.com/python/cpython/pull/137227 ">#137227</a>
by Jelle Zijlstra.</li>
</ul>
<h1>Release 4.14.1 (July 4, 2025)</h1>
<ul>
<li>Fix usage of <code>typing_extensions.TypedDict</code> nested inside
other types
(e.g., <code>typing.Type[typing_extensions.TypedDict]</code>). This is
not allowed by the
type system but worked on older versions, so we maintain support.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9d1637e264 "><code>9d1637e</code></a>
Prepare release 4.15.0 (<a
href="https://redirect.github.com/python/typing_extensions/issues/658 ">#658</a>)</li>
<li><a
href="4bd67c5be5 "><code>4bd67c5</code></a>
Coverage: exclude some noise (<a
href="https://redirect.github.com/python/typing_extensions/issues/656 ">#656</a>)</li>
<li><a
href="e589a26da7 "><code>e589a26</code></a>
Coverage: add detailed report to job summary (<a
href="https://redirect.github.com/python/typing_extensions/issues/655 ">#655</a>)</li>
<li><a
href="67d37fed12 "><code>67d37fe</code></a>
Coverage: Implement fail_under (<a
href="https://redirect.github.com/python/typing_extensions/issues/654 ">#654</a>)</li>
<li><a
href="e9ae26f528 "><code>e9ae26f</code></a>
Don't delete previous coverage comment (<a
href="https://redirect.github.com/python/typing_extensions/issues/653 ">#653</a>)</li>
<li><a
href="ac80bb728a "><code>ac80bb7</code></a>
Add Coverage workflow (<a href="https://redirect.gith ...
_Description has been truncated_
zsh:1: command not found: dump_zsh_state
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com >
2026-05-13 11:53:14 -03:00
dependabot[bot]
81abe9e0ad
chore(deps): bump pip from 26.0.1 to 26.1 ( #4783 )
...
Bumps [pip](https://github.com/pypa/pip ) from 26.0.1 to 26.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/pip/blob/main/NEWS.rst ">pip's
changelog</a>.</em></p>
<blockquote>
<h1>26.1 (2026-04-26)</h1>
<h2>Deprecations and Removals</h2>
<ul>
<li>Drop support for Python 3.9.
(<code>[#13795 ](https://github.com/pypa/pip/issues/13795 )
<https://github.com/pypa/pip/issues/13795> ;</code>_)</li>
</ul>
<h2>Features</h2>
<ul>
<li>Add experimental support to read requirements from standardized
pylock.toml files (<code>-r pylock.toml</code>).
(<code>[#13876 ](https://github.com/pypa/pip/issues/13876 )
<https://github.com/pypa/pip/issues/13876> ;</code>_)</li>
<li>Allow <code>--uploaded-prior-to</code> to accept a duration in days
(e.g., <code>P3D</code> for 3 days ago).
(<code>[#13674 ](https://github.com/pypa/pip/issues/13674 )
<https://github.com/pypa/pip/issues/13674> ;</code>_)</li>
</ul>
<h2>Enhancements</h2>
<ul>
<li>Speed up dependency resolution when there are complex conflicts.
(<code>[#13859 ](https://github.com/pypa/pip/issues/13859 )
<https://github.com/pypa/pip/issues/13859> ;</code>_)</li>
<li>Reduce memory usage when resolving large dependency trees.
(<code>[#13843 ](https://github.com/pypa/pip/issues/13843 )
<https://github.com/pypa/pip/issues/13843> ;</code>_)</li>
<li>Emit a deprecation warning when pip imports an unexpected module
after
installation of a distribution has started.
(<code>[#13912 ](https://github.com/pypa/pip/issues/13912 )
<https://github.com/pypa/pip/issues/13912> ;</code>_)</li>
<li>Allow URL constraints to apply to requirements with extras.
(<code>[#12018 ](https://github.com/pypa/pip/issues/12018 )
<https://github.com/pypa/pip/issues/12018> ;</code>_)</li>
<li>Allow unpinned requirements to use hashes from constraints.
Constraints
like <code>{name}=={version} --hash=...</code> feeds into hash
verification for
a corresponding requirement.
(<code>[#9243 ](https://github.com/pypa/pip/issues/9243 )
<https://github.com/pypa/pip/issues/9243> ;</code>_)</li>
<li>Improve conflict reports that involve direct URLs.
(<code>[#13932 ](https://github.com/pypa/pip/issues/13932 )
<https://github.com/pypa/pip/issues/13932> ;</code>_)</li>
<li>Show all errors instead of first error for faulty
<code>dependency_groups</code> definitions.
(<code>[#13917 ](https://github.com/pypa/pip/issues/13917 )
<https://github.com/pypa/pip/issues/13917> ;</code>_)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>Fix recovery hint for missing RECORD file to use
<code>--ignore-installed</code>
instead of <code>--force-reinstall</code>.
(<code>[#12645 ](https://github.com/pypa/pip/issues/12645 )
<https://github.com/pypa/pip/issues/12645> ;</code>_)</li>
<li>Fix misleading error message when a constraint file cannot be
opened. (<code>[#13226 ](https://github.com/pypa/pip/issues/13226 )
<https://github.com/pypa/pip/issues/13226> ;</code>_)</li>
<li>Show the filename rather than the full URL when downloading files
from non-PyPI indexes in non-verbose mode.
(<code>[#13494 ](https://github.com/pypa/pip/issues/13494 )
<https://github.com/pypa/pip/issues/13494> ;</code>_)</li>
<li>Remove the adjacent <code>__pycache__</code> directory when a .py
file is removed.
(<code>[#13725 ](https://github.com/pypa/pip/issues/13725 )
<https://github.com/pypa/pip/issues/13725> ;</code>_)</li>
<li>Force UTF-8 encoding for :pep:<code>723</code> metadata.
(<code>[#13861 ](https://github.com/pypa/pip/issues/13861 )
<https://github.com/pypa/pip/issues/13861> ;</code>_)</li>
<li>Minor performance improvement when filtering candidates during
resolution. (<code>[#13916 ](https://github.com/pypa/pip/issues/13916 )
<https://github.com/pypa/pip/issues/13916> ;</code>_)</li>
<li>Fix a hang on Windows when stdout is closed during verbose output.
(<code>[#13927 ](https://github.com/pypa/pip/issues/13927 )
<https://github.com/pypa/pip/issues/13927> ;</code>_)</li>
<li>Common path prefixes are determined by path segment, not character
by character. (<code>[#13847 ](https://github.com/pypa/pip/issues/13847 )
<https://github.com/pypa/pip/issues/13847> ;</code>_)</li>
<li>Fix installing <code>.tar.gz</code> source distributions that look
like a zip file.
(<code>[#13867 ](https://github.com/pypa/pip/issues/13867 )
<https://github.com/pypa/pip/issues/13867> ;</code>_)</li>
</ul>
<h2>Vendored Libraries</h2>
<ul>
<li>Upgrade certifi to 2026.2.25</li>
<li>Upgrade packaging to 26.2</li>
<li>Upgrade requests to 2.33.1</li>
<li>Upgrade tomli to 2.3.1</li>
<li>Upgrade urllib3 to 2.6.3</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="90b2b3e0f7 "><code>90b2b3e</code></a>
Bump for release</li>
<li><a
href="193f289a62 "><code>193f289</code></a>
Update AUTHORS.txt</li>
<li><a
href="63c3709071 "><code>63c3709</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/pip/issues/13876 ">#13876</a> from
sbidoul/install-from-pylock-reqs-sbi</li>
<li><a
href="e5fe7023ff "><code>e5fe702</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/pip/issues/13949 ">#13949</a> from
pypa/revert-13888-resolver-editable-links</li>
<li><a
href="122a14a8cd "><code>122a14a</code></a>
Revert "Allow editable installs to satisfy direct-URL dependencies
(<a
href="https://redirect.github.com/pypa/pip/issues/13888 ">#13888</a>)"</li>
<li><a
href="c3352524aa "><code>c335252</code></a>
-r pylock.toml: add pip-wheel -r pylock.toml test</li>
<li><a
href="ba2fc12b7f "><code>ba2fc12</code></a>
-r pylock.toml: proper error with remote pylock.toml containing
directory ent...</li>
<li><a
href="747c4ae888 "><code>747c4ae</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/pip/issues/13948 ">#13948</a> from
ichard26/reword-news</li>
<li><a
href="3517841c5e "><code>3517841</code></a>
-r pylock: refine filename pylock-ness test</li>
<li><a
href="2f7ad8caee "><code>2f7ad8c</code></a>
-r pylock.toml: fix crash with pip wheel and pip lock</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/pip/compare/26.0.1...26.1 ">compare
view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com >
2026-05-13 10:44:44 -03:00
dependabot[bot]
68518d59a3
chore(deps): bump types-decorator from 5.2.0.20250324 to 5.2.0.20260408 ( #4730 )
...
Bumps [types-decorator](https://github.com/python/typeshed ) from
5.2.0.20250324 to 5.2.0.20260408.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/python/typeshed/commits ">compare view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-13 10:07:43 -03:00
Andrew Sanchez
428406d8a6
Release infrastructure improvements ( #4802 )
...
- Run CI automatically on `release/**` branches
- Update just recipes: require `--ref`, add `--version` to prepare, add
`testpypi`/`pypi` recipes
- Document release branch workflow and update releasing docs
- Add `sphinxcontrib-mermaid` for Sphinx doc rendering
2026-05-09 17:34:18 -04:00
dependabot[bot]
b5ed5e86b5
chore(deps): bump gitpython from 3.1.47 to 3.1.49 ( #4786 )
...
Bumps [gitpython](https://github.com/gitpython-developers/GitPython )
from 3.1.47 to 3.1.49.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gitpython-developers/GitPython/releases ">gitpython's
releases</a>.</em></p>
<blockquote>
<h2>3.1.49 - Security</h2>
<h2>What's Changed</h2>
<ul>
<li>reject control chars in written values in configuration by <a
href="https://github.com/Byron "><code>@Byron</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2137 ">gitpython-developers/GitPython#2137</a></li>
<li>Improve pure Python rev-parse coverage and behavior by <a
href="https://github.com/Copilot "><code>@Copilot</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2136 ">gitpython-developers/GitPython#2136</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/gitpython-developers/GitPython/compare/3.1.48...3.1.49 ">https://github.com/gitpython-developers/GitPython/compare/3.1.48...3.1.49 </a></p>
<h2>3.1.48 - Security</h2>
<p>Accidentally deleted the previous GH release, it did mention the
advisory this fixes.</p>
<h2>What's Changed</h2>
<ul>
<li>prevent out-of-repo access when manipulating references. by <a
href="https://github.com/Byron "><code>@Byron</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2134 ">gitpython-developers/GitPython#2134</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/gitpython-developers/GitPython/compare/3.1.47...3.1.48 ">https://github.com/gitpython-developers/GitPython/compare/3.1.47...3.1.48 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="aee2fd5c13 "><code>aee2fd5</code></a>
bump version to 3.1.49</li>
<li><a
href="1c4ea96e47 "><code>1c4ea96</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2136 ">#2136</a>
from gitpython-developers/copilot/create-reproducing...</li>
<li><a
href="6cf7ac33d4 "><code>6cf7ac3</code></a>
Address rev-parse review feedback</li>
<li><a
href="b049a13105 "><code>b049a13</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2137 ">#2137</a>
from gitpython-developers/fix-config-injection</li>
<li><a
href="bdbdf4bba0 "><code>bdbdf4b</code></a>
Fix rev-parse CI issues</li>
<li><a
href="d7ce6fc191 "><code>d7ce6fc</code></a>
Improve pure Python rev-parse coverage and behavior (<a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2135 ">#2135</a>)</li>
<li><a
href="8e24503b42 "><code>8e24503</code></a>
avoid duplicate validation in set_value</li>
<li><a
href="c417af469f "><code>c417af4</code></a>
reject control chars in written values in configuration</li>
<li><a
href="5a15361e0e "><code>5a15361</code></a>
a new release with safer reference creation</li>
<li><a
href="dbfa264764 "><code>dbfa264</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2134 ">#2134</a>
from gitpython-developers/validate-ref-creation</li>
<li>Additional commits viewable in <a
href="https://github.com/gitpython-developers/GitPython/compare/3.1.47...3.1.49 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ankitects/anki/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 12:07:49 -03:00
Abdo
cd2f15b4ee
feat: Enable Windows ARM64 support for Briefcase ( #4798 )
...
## Linked issue
#4678
## Summary
This enables native Windows ARM64 builds for Briefcase. Depends on #4797
## How to test
- Run `./tools/ninja installer` in a Windows ARM64 machine.
- Check the architecture of the installer under `./out/installer/dist`
by going to Properties > Compatibility and confirming emulation settings
are disabled.
- Install the package and confirm Anki.exe is a native binary.
- Open Anki, go to the [debug
console](https://docs.ankiweb.net/misc.html#debug-console ) and run the
following code to check the architecture of the Python build:
```python
import platform
print(platform.machine(), platform.python_compiler())
```
2026-05-08 16:58:40 +03:00
Abdo
5c96654319
chore: Bump Briefcase to 0.4.2 ( #4797 )
...
## Linked issue
#4770 #4678
## Summary
Upgrade Briefcase to 0.4.2. Mainly brings Windows ARM support (deferred
to a later PR - this only deals with dependency/syntactic changes):
- Update our custom zip format plugin.
- Update the Windows template with the latest upstream changes.
- Remove the jinja2 dependency. Briefcase options can also be set
dynamically using the `-C` flag, so rendering a template is unnecessary.
#4770 talks about handling dynamic metadata using the hatchling build
system (which is supported in Briefcase 0.4.2), but using the `-C` flag
is simpler.
## How to test
Run `./ninja installer:build` and `./ninja installer:package` and
confirm the build is working.
2026-05-08 15:19:23 +03:00
Andrew Sanchez
5a9b54e938
Briefcase Installer ( #4629 )
...
migrates Anki Desktop packaging from the legacy
NSIS/uv-based installer to [BeeWare
Briefcase](https://briefcase.readthedocs.io/ ). This branch integrates
work from many related issues and PRs to deliver cross-platform native
installers (MSI on Windows, .app on macOS, PyInstaller on Linux) with
code signing, notarization, and file association support.
## Integrated PRs
- #4585 — Set up Briefcase
- #4596 — Add Briefcase icons
- #4598 — Handle Briefcase file associations
- #4601 — Add Briefcase app permissions
- #4609 — Customize Briefcase's MSI installer
- #4616 — Set up Briefcase code signing and notarization
- #4618 — Fix Briefcase packaging for x86 Macs
- #4623 — Customize Briefcase's Linux template
- #4627 — List required Debian packages for Briefcase installer
- #4630 — Update Briefcase's Windows template
- #4631 — Rewrite Linux install/uninstall scripts for PyInstaller
- #4638 — Use PyInstaller on Linux
- #4645 — Update installer docs
- #4654 — Disable Briefcase's universal builds for macOS
- #4672 — Deal with existing NSIS installations in MSI installer
- #4676 — Remove duplicate Briefcase icons
- #4677 — Tweak Linux scripts for new installer
- #4709 — Add anki-console.bat to Briefcase's Windows package
## Related Issues
- #4557 — Evaluate BeeWare Briefcase for Anki packaging and distribution
- #4678 — Support native Windows ARM64 builds for Briefcase
- #4688 — Linux installer: migrate to PyInstaller and rewrite install
scripts
- #4689 — Investigate startup performance with Briefcase
- #4690 — Specify required Linux system packages for Briefcase
- #4691 — Investigate Windows ARM64 support with Briefcase
- #4692 — Test on Linux ARM with Briefcase
- #4693 — Separate ARM and Intel macOS releases
- #4694 — Update developer documentation for Briefcase installer
- #4695 — Support upgrade/downgrade with the Briefcase installer
- #4696 — Update user documentation for new installer
- #4702 — Update Briefcase's Windows template with upstream security fix
and OS version check
- #4703 — Follow-up tweaks to Linux install/uninstall scripts
## Related PRs
- #4619 — Enable Windows ARM64 support
- #4632 — Release action
---------
Co-authored-by: Abdo <abdo@abdnh.net >
Co-authored-by: Andrew Sanchez <andrewsanchez@users.noreply.github.com >
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com >
2026-05-05 17:29:18 -04:00
Fernando Lins
7d8dc01722
chore: add release-age controls for uv and Yarn dependencies ( #4761 )
...
## Linked issue
Issue related #4747
## Summary/motivation
Add `[tool.uv]` `exclude-newer` + `required-version`, regenerate
`uv.lock`; bump bundled uv binaries in `python.rs`; bump **Yarn** and
`npmMinimalAgeGate`; remove --no-config from pyenv uv sync --locked so
it matches the lockfile.
## How to test
- [ ] ./ninja check
- [ ] yarn install
2026-04-30 13:38:42 -03:00
Abdo
81eefc5f71
Render GH Markdown alerts in Sphinx docs ( #4663 )
...
See
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
We started using this syntax recently: #4466 #4662
## How to test
See preview:
https://anki-core--4663.org.readthedocs.build/en/4663/windows.html
2026-04-08 19:10:17 +03:00
Fernando Lins
447795bbb9
Add pre-commit for automated pre-push checks ( #4660 )
...
## Description / motivation
Versioned hook configuration and a single documented install path reduce
friction and drift between machines compared to copy-pasted shell hooks.
## How to test
1. `$ uv sync --group dev`
2. `$ uv run pre-commit install --hook-type pre-push`
3. Make any change, commit it, and push it
<img width="908" height="253" alt="image"
src="https://github.com/user-attachments/assets/d492e2a8-9f33-4adf-866e-04c54cbf57d9 "
/>
### Details
- Add `.pre-commit-config.yaml` with a **pre-push** hook that runs
`./ninja check`
- Add `pre-commit` to the `dev` dependency group and refresh `uv.lock`.
- Update `docs/contributing.md`: contributors install hooks via `uv run
pre-commit` / `python -m pre_commit`, and drop the old suggestion of
manual `.git/hooks` scripts.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
2026-04-06 12:04:49 -03:00
Andrew Sanchez
6b61393d87
Build and publish dev docs ( #4579 )
2026-03-31 08:26:59 -04:00
Fernando Lins
5ac566d958
chore(deps): bump flask from 3.1.1 to 3.1.3 ( #4606 )
2026-03-11 21:33:49 +03:00
Fernando Lins
b8ff6b5ea9
chore(deps): bump werkzeug from 3.1.5 to 3.1.6 ( #4602 )
2026-03-10 23:19:20 +03:00
Damien Elmes
82b662e2bf
Python CVE fixes
2026-02-11 14:04:37 +07:00
Damien Elmes
78a3b3ef7b
Expose control over AppNap for AnkiConnect
...
https://forums.ankiweb.net/t/recent-anki-updates-bundle-id-change-disabling-app-nap-macos-anki-connect/65550
2025-08-19 19:46:11 +10:00
Damien Elmes
37fe704326
Tweak protobuf requirements
...
Motivated by https://forums.ankiweb.net/t/python-anki-sync-server-broken/64069
From https://protobuf.dev/support/cross-version-runtime-guarantee/ :
"Python-specific Guarantees
Since the 3.20.0 release, the Protobuf Python generated code became a thin wrapper around an embedded FileDescriptorProto. Because these protos are supported on extremely long timeframes, our usual major version compatibility windows aren’t typically necessary.
Python may break generated code compatibility in specific future major version releases, but it will be coupled with poison pill warnings and errors in advance. As of 6.32.0, all generated code since 3.20.0 will be supported until at least 8.x.y."
2025-07-16 14:15:25 +07:00
Damien Elmes
15bbcdd568
Downgrade Chromium as potential rendering fix
...
https://forums.ankiweb.net/t/anki-25-08-beta/63645/57
2025-07-15 18:26:02 +07:00
Damien Elmes
fabed12f4b
Update to Qt 6.9.1
2025-07-08 01:14:40 +07:00
Abdo
f94d05bcbe
Switch to Ruff ( #4119 )
...
* Add check:ruff build action
* Add fix:ruff action
* Add Ruff config
Mostly generated by Cursor
* Handle rest of lints
* Fix formatting
* Replace black and isort with ruff-format
* Run ruff-format
* Fix lint errors
* Remove pylint disables
* Remove .pylintrc
* Update docs
* Fix check:format not just checking
* Fix isort rule being ignored
* Sort imports
* Ensure ./ninja format also handles import sorting
* Remove unused isort cfg
* Enable unsafe fixes in fix:ruff, and enable unused var warning
* Re-run on config change; enable unnecessary ARG ignores
* Use all pycodestyle errors, and add some more commented-out ones
Latter logged on https://github.com/ankitects/anki/issues/4135
2025-06-29 14:38:35 +07:00
Damien Elmes
bedab0a54b
Drop psutil from wheel requirements
...
We're not using it ourselves, and usage appears isolated to a couple of
add-ons (notably ankirestart)
2025-06-27 16:10:12 +07:00
Damien Elmes
73edf23954
Drop Pauker and SuperMemo importers from legacy importer
...
The legacy importer has only been kept around to support some add-ons,
and these are so infrequently used that they're better off shifted
to add-ons (even they even still work)
2025-06-27 16:10:12 +07:00
Damien Elmes
9b287dc51a
Python dependency/wheel tweaks
...
- Use --locked to assert that the lockfile won't change, so we need
to explicitly 'uv lock' when making changes. Still trying to get to
the bottom of why the lockfile sometimes has editable entries, which
break things when switching between platforms.
- Exclude __pycache__ from wheels
- Move the typing stubs to our dev deps
(https://github.com/ankitects/anki/pull/4074#pullrequestreview-2948088436 )
2025-06-27 16:10:12 +07:00
Damien Elmes
b781dfabf5
Add helpers to run Qt 6.7 and 6.9
...
Removed the 6.8 one, as that's our default
2025-06-20 21:55:38 +07:00
Damien Elmes
4abc0eb8b8
Use same version for anki-release; publish to main index
2025-06-20 16:13:50 +07:00
Damien Elmes
cd411927cc
Split libankihelper into a separate module
...
It's rarely updated, and the old approach resulted in a 'proper' aqt
build only being done on a Mac.
2025-06-20 16:13:49 +07:00
Damien Elmes
04996c77f3
Migrate build system to uv ( #4074 )
...
* Migrate build system to uv
Closes #3787 , and is a step towards #3081 and #4022
This change breaks our PyOxidizer bundling process. While we probably
could update it to work with the new venvs & lockfile, my intention
is to use this as a base to try out a uv-based packager/installer.
Some notes about the changes:
- Use uv for python download + venv installation
- Drop python/requirements* in favour of pyproject files / uv.lock
- Bumped to latest Python 3.9 version. The move to 3.13 should be
a fairly trivial change when we're ready.
- Dropped the old write_wheel.py in favour of uv/hatchling. This has
the unfortunate side-effect of dropping leading zeros in our wheels,
which we could try hack around in the future.
- Switch to Qt 6.7 for the dev repo, as it's the first PyQt version
with a Linux/ARM WebEngine wheel.
- Unified our macOS deployment target with minimum required for ARM.
- Dropped unused fluent python files
- Dropped unused python license generation
- Dropped helpers to run under Qt 5, as our wheels were already
requiring Qt 6 to install.
* Build action to create universal uv binary
* Drop some PyOxidizer-related files
* Use Windows ARM64 cargo/node binaries during build
We can't provide ARM64 wheels to users yet due to #4079 , but we can
at least speed up the build.
The rustls -> native-tls change on Windows is because ring requires
clang to compile for ARM64, and I figured it's best to keep our Windows
deps consistent. We already built the wheels with native-tls.
* Make libankihelper a universal library
We were shipping a single arch library in a purelib, leading to
breakages when running on a different platform.
* Use Python wheel for mpv/lame on Windows/Mac
This is convenient, but suboptimal on a Mac at the moment. The first
run of mpv will take a number of seconds for security checks to run,
and our mpv code ends up timing out, repeating the process each time.
Our installer stub will need to invoke mpv once first to get it validated.
We could address this by distributing the audio with the installer/stub,
or perhaps by putting the binaries in a .pkg file that's notarized+stapled
and then included in the wheel.
* Add some helper scripts to build a fully-locked wheel
* Initial macOS launcher prototype
* Add a hidden env var to preload our libs and audio helpers on macOS
* qt/bundle -> qt/launcher
- remove more of the old bundling code
- handle app icon
* Fat binary, notarization & dmg
* Publish wheels on testpypi for testing
* Use our Python pin for the launcher too
* Python cleanups
* Extend launcher to other platforms + more
- Switch to Qt 6.8 for repo default, as 6.7 depends on an older
libwebp/tiff which is unavailable on newer installs
- Drop tools/mac-x86, as we no longer need to test against Qt 5
- Add flags to cross compile wheels on Mac and Linux
- Bump glibc target to 2_36, building on Debian Stable
- Increase mpv timeout on macOS to allow for initial gatekeeper checks
- Ship both arm64 and amd64 uv on Linux, with a bash stub to pick
the appropriate arch.
* Fix pylint on Linux
* Fix failure to run from /usr/local/bin
* Remove remaining pyoxidizer refs, and clean up duplicate release folder
* Rust dep updates
- Rust 1.87 for now (1.88 due out in around a week)
- Nom looks involved, so I left it for now
- prost-reflect depends on a new prost version that got yanked
* Python 3.13 + dep updates
Updated protoc binaries + add helper in order to try fix build breakage.
Ended up being due to an AI-generated update to pip-system-certs that
was not reviewed carefully enough:
https://gitlab.com/alelec/pip-system-certs/-/issues/36
The updated mypy/black needed some tweaks to our files.
* Windows compilation fixes
* Automatically run Anki after installing on Windows
* Touch pyproject.toml upon install, so we check for updates
* Update Python deps
- urllib3 for CVE
- pip-system-certs got fixed
- markdown/pytest also updated
2025-06-19 14:03:16 +07:00