{"id":13297,"name":"types-markdown","ecosystem":"pip","repository_url":"https://github.com/typeshed-internal/stub_uploader","issues_count":161,"created_at":"2025-06-06T23:26:37.698Z","updated_at":"2025-06-06T23:26:37.698Z","purl":"pkg:pypi/types-markdown","metadata":{"id":2957606,"name":"types-markdown","ecosystem":"pypi","description":"Typing stubs for Markdown","homepage":"https://github.com/python/typeshed","licenses":"apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/typeshed-internal/stub_uploader","keywords_array":[],"namespace":null,"versions_count":64,"first_release_published_at":"2021-02-02T20:52:56.000Z","latest_release_published_at":"2022-09-18T12:37:56.000Z","latest_release_number":"3.4.2","last_synced_at":"2025-04-15T03:15:57.080Z","created_at":"2022-04-10T12:56:17.868Z","updated_at":"2025-04-15T03:15:57.080Z","registry_url":"https://pypi.org/project/types-markdown/","install_command":"pip install types-markdown --index-url https://pypi.org/simple","documentation_url":"https://types-markdown.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Programming Language :: Python :: 3","Typing :: Stubs Only"],"normalized_name":"types-markdown"},"repo_metadata":{"id":37306395,"uuid":"331669593","full_name":"typeshed-internal/stub_uploader","owner":"typeshed-internal","description":"Scripts and actions to auto-upload typeshed stubs to PyPI","archived":false,"fork":false,"pushed_at":"2024-04-13T02:07:09.000Z","size":2021,"stargazers_count":19,"open_issues_count":11,"forks_count":14,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-04-13T21:34:27.057Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/typeshed-internal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-01-21T15:27:10.000Z","updated_at":"2024-04-15T05:49:42.971Z","dependencies_parsed_at":"2023-09-23T18:17:04.216Z","dependency_job_id":"ec44092e-9d05-4320-9755-351952bf9fab","html_url":"https://github.com/typeshed-internal/stub_uploader","commit_stats":{"total_commits":2121,"total_committers":14,"mean_commits":151.5,"dds":0.05704856199905706,"last_synced_commit":"7d344113e5fd5fd475f82ce42023ecf0f567d1d6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeshed-internal%2Fstub_uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeshed-internal%2Fstub_uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeshed-internal%2Fstub_uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeshed-internal%2Fstub_uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeshed-internal","download_url":"https://codeload.github.com/typeshed-internal/stub_uploader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":212593894,"owners_count":15464388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"typeshed-internal","name":"typeshed-internal","uuid":"77794589","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/77794589?v=4","repositories_count":1,"last_synced_at":"2023-03-04T18:18:20.191Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/typeshed-internal","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T22:28:01.701Z","updated_at":"2023-03-04T18:18:20.368Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeshed-internal","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeshed-internal/repositories"},"tags":[]},"repo_metadata_updated_at":"2024-09-07T18:29:40.987Z","dependent_packages_count":13,"downloads":9561385,"downloads_period":"last-month","dependent_repos_count":501,"rankings":{"downloads":0.3792203943056144,"dependent_repos_count":0.6372270553612378,"dependent_packages_count":0.796264587890317,"stargazers_count":1.2180270280026524,"forks_count":1.0162574594893443,"docker_downloads_count":1.558109445741655,"average":0.9341843284651369},"purl":"pkg:pypi/types-markdown","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/types-markdown","docker_dependents_count":28,"docker_downloads_count":25045770,"usage_url":"https://repos.ecosyste.ms/usage/pypi/types-markdown","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/types-markdown/dependencies","status":null,"funding_links":[],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-markdown/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-markdown/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-markdown/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-markdown/related_packages","maintainers":[{"uuid":"typeshed_bot","login":"typeshed_bot","name":null,"email":null,"url":null,"packages_count":259,"html_url":"https://pypi.org/user/typeshed_bot/","role":null,"created_at":"2022-12-29T08:42:54.708Z","updated_at":"2022-12-29T08:42:54.708Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/typeshed_bot/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690445,"maintainers_count":292827,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":55,"unique_repositories_count_past_30_days":5,"recent_issues":[{"uuid":"4475021954","node_id":"PR_kwDOCSpQdM7c8nMU","number":556,"state":"closed","title":"build(deps-dev): Bump the python-dev group with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T04:58:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T06:39:30.000Z","updated_at":"2026-05-22T04:58:46.000Z","time_to_close":253154,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): Bump","group_name":"python-dev","update_count":8,"packages":[{"name":"basedpyright","old_version":"1.39.4","new_version":"1.39.5","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-cffi","old_version":"2.0.0.20260508","new_version":"2.0.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260508","new_version":"3.10.2.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260508","new_version":"4.9.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260508","new_version":"2.20.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260510","new_version":"6.0.12.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260508","new_version":"82.0.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dev group with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.4` | `1.39.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.13` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260508` | `2.0.0.20260518` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260508` | `3.10.2.20260518` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260508` | `4.9.0.20260518` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260508` | `2.20.0.20260518` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260510` | `6.0.12.20260518` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260508` | `82.0.0.20260518` |\n\nUpdates `basedpyright` from 1.39.4 to 1.39.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a511b786acd28e190b1a8ba5e683de31e2a690e7\"\u003e\u003ccode\u003ea511b78\u003c/code\u003e\u003c/a\u003e 1.39.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/009e953c1d1e880bc07ce926282627e8f33519e4\"\u003e\u003ccode\u003e009e953\u003c/code\u003e\u003c/a\u003e fix error attempting to baseline diagnostics from the new `string.templatelib...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/9ff98486dfd844968a46d7cb13e6e5b32345dceb\"\u003e\u003ccode\u003e9ff9848\u003c/code\u003e\u003c/a\u003e fix \u0026quot;Pyright current file\u0026quot; vscode launch config when node isn't installed glo...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.4...v1.39.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260508 to 2.0.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260508 to 3.10.2.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260508 to 4.9.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260508 to 2.20.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20260510 to 6.0.12.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260508 to 82.0.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/Nadock/rileychase.net/pull/556","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nadock%2Frileychase.net/issues/556","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/556/packages"},{"uuid":"4472069858","node_id":"PR_kwDORDhEE87czKPD","number":153,"state":"closed","title":"Bump the production-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-19T22:30:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-18T19:45:16.000Z","updated_at":"2026-05-19T22:30:38.000Z","time_to_close":96320,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":31,"packages":[{"name":"crispy-bootstrap5","old_version":"2025.6","new_version":"2026.3","repository_url":"https://github.com/django-crispy-forms/crispy-bootstrap5"},{"name":"django","old_version":"6.0.2","new_version":"6.0.5","repository_url":"https://github.com/django/django"},{"name":"django-crispy-forms","old_version":"2.5","new_version":"2.6","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"nh3","old_version":"0.3.3","new_version":"0.3.5","repository_url":"https://github.com/messense/nh3"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"whitenoise","old_version":"6.11.0","new_version":"6.12.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"gunicorn","old_version":"25.1.0","new_version":"26.0.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"attrs","old_version":"25.4.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [crispy-bootstrap5](https://github.com/django-crispy-forms/crispy-bootstrap5), [django](https://github.com/django/django), [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms), [nh3](https://github.com/messense/nh3), [python-dotenv](https://github.com/theskumar/python-dotenv), [whitenoise](https://github.com/evansd/whitenoise), [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin), [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs), [pre-commit](https://github.com/pre-commit/pre-commit), [types-markdown](https://github.com/python/typeshed), [django-anymail[resend]](https://github.com/anymail/django-anymail), [gunicorn](https://github.com/benoitc/gunicorn), [psycopg[binary]](https://github.com/psycopg/psycopg), [anyio](https://github.com/agronholm/anyio), [attrs](https://github.com/python-attrs/attrs), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [django-anymail](https://github.com/anymail/django-anymail), [idna](https://github.com/kjd/idna), [packaging](https://github.com/pypa/packaging), [psycopg](https://github.com/psycopg/psycopg), [psycopg-binary](https://github.com/psycopg/psycopg), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic), [requests](https://github.com/psf/requests), [svix](https://github.com/svix/svix-webhooks), [types-deprecated](https://github.com/python/typeshed), [types-python-dateutil](https://github.com/python/typeshed), [tzdata](https://github.com/python/tzdata), [urllib3](https://github.com/urllib3/urllib3) and [wrapt](https://github.com/GrahamDumpleton/wrapt) to permit the latest version.\nUpdates `crispy-bootstrap5` from 2025.6 to 2026.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/releases\"\u003ecrispy-bootstrap5's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026.3 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 and 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/blob/main/CHANGELOG.md\"\u003ecrispy-bootstrap5's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026.3 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 and 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/a109daa0e7a56be929c3b7c3daa6d8c9c8a01ae2\"\u003e\u003ccode\u003ea109daa\u003c/code\u003e\u003c/a\u003e Release 2026.3 (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/80dda259e64a4a0d3c72c4625a11fa5c04d79537\"\u003e\u003ccode\u003e80dda25\u003c/code\u003e\u003c/a\u003e field_errors_block.html: insert missing space between attributes (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/e03c9b1d11362a98adbfaddfbd250f6f69f00634\"\u003e\u003ccode\u003ee03c9b1\u003c/code\u003e\u003c/a\u003e Dropped support for Django versions prior to 5.2. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/7a95d7fcaea206dd568f8665974b67c100e1eebf\"\u003e\u003ccode\u003e7a95d7f\u003c/code\u003e\u003c/a\u003e Updated tests for Django 6.0.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/220\"\u003e#220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/7fd93894434f9e2ec48f9ecb97ee855b39bb575e\"\u003e\u003ccode\u003e7fd9389\u003c/code\u003e\u003c/a\u003e PEP 639 licenses (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/271cfdb6eda713c246121ad1e83d2a372967f410\"\u003e\u003ccode\u003e271cfdb\u003c/code\u003e\u003c/a\u003e Fix TemplateDoesNotExist when using MultiField (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/75\"\u003e#75\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/1aed40a06d88d2d39c802737026e7f042011cd0d\"\u003e\u003ccode\u003e1aed40a\u003c/code\u003e\u003c/a\u003e Updated supported versions. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/ef2ec5d4736512996e11ab2ac3c66db4659e4ddb\"\u003e\u003ccode\u003eef2ec5d\u003c/code\u003e\u003c/a\u003e Used PEP 735 Dependency Groups. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/compare/2025.6...2026.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 6.0.2 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8f8ad09659d728423a00e0a3b5f16da5c3a38e24\"\u003e\u003ccode\u003e8f8ad09\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.5 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/44ad76efcbe3c4ca0f08bb9dabe916f6374596c9\"\u003e\u003ccode\u003e44ad76e\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1b0184aa657bc3f5859aeb0206e7c1e94e48b103\"\u003e\u003ccode\u003e1b0184a\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ad8f9e19e0897ea45ded7c046ff28daf6f773e92\"\u003e\u003ccode\u003ead8f9e1\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/990ab01e70fd8f55e867b4a234c0ee242fd33fec\"\u003e\u003ccode\u003e990ab01\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37039\"\u003e#37039\u003c/a\u003e -- Removed outdated note from QuerySet.iterator() docs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/f0c269f285ab58bfb4a120141d7dd41ff4f42b45\"\u003e\u003ccode\u003ef0c269f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8bcd15beeff6542acc381b83f50b061d62284c2b\"\u003e\u003ccode\u003e8bcd15b\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37067\"\u003e#37067\u003c/a\u003e -- Added trailing slash in django_file_prefixes().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/3cdec6454fb86e8d03a06944c0c68025733ed93f\"\u003e\u003ccode\u003e3cdec64\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs CVE-2026-25674 -- Clarified role of umask in upload permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5dd5c70cf1056e8e04badb687f773e8f16bba257\"\u003e\u003ccode\u003e5dd5c70\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.5 and 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8ee73415270a1a54daaec9bb529ad82c6f7a6d4c\"\u003e\u003ccode\u003e8ee7341\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/373\"\u003e#373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/django/django/issues/34122\"\u003e#34122\u003c/a\u003e -- Removed warning that ForeignObject is an interna...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.2...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.5 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/dc8007e35f3387cca3e799a6fc93226a5a808bdc\"\u003e\u003ccode\u003edc8007e\u003c/code\u003e\u003c/a\u003e Release 2.6. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1432\"\u003e#1432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/792c6717388aef8fa4b8482f6858048afaa6803f\"\u003e\u003ccode\u003e792c671\u003c/code\u003e\u003c/a\u003e Updated versions in pyproject.toml. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1431\"\u003e#1431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/af31d24c681a90b5217df66d47a6da292baff89c\"\u003e\u003ccode\u003eaf31d24\u003c/code\u003e\u003c/a\u003e Fix incorrect reverse in crispy tag docs (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1410\"\u003e#1410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/fb7acdcbb861a5194e26739cf5e2f0ac16d4b30c\"\u003e\u003ccode\u003efb7acdc\u003c/code\u003e\u003c/a\u003e Don't crash when using the crispy template tag and missing variables (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1418\"\u003e#1418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/d30a0ab6e3f180c9ca63636a45e261b0815ce0ac\"\u003e\u003ccode\u003ed30a0ab\u003c/code\u003e\u003c/a\u003e Dropped unsupported Django versions. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1430\"\u003e#1430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/3f5b88da2a305f79a8cae5f6bd54475c22535652\"\u003e\u003ccode\u003e3f5b88d\u003c/code\u003e\u003c/a\u003e Improved |as_crispy_field error message. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1427\"\u003e#1427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/6a97c68d7465a75db57108d50959f98aabd2ec1b\"\u003e\u003ccode\u003e6a97c68\u003c/code\u003e\u003c/a\u003e Fix typos in some files (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1425\"\u003e#1425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.5...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nh3` from 0.3.3 to 0.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/messense/nh3/releases\"\u003enh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd usage examples for clean() and Cleaner arguments by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/120\"\u003emessense/nh3#120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd doctest coverage for module docstrings and RST files by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/121\"\u003emessense/nh3#121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.28.2 to 0.28.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/123\"\u003emessense/nh3#123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tags parameter to clean_text by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/122\"\u003emessense/nh3#122\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.4...v0.3.5\"\u003ehttps://github.com/messense/nh3/compare/v0.3.4...v0.3.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.3.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pyo3 from 0.28.1 to 0.28.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/114\"\u003emessense/nh3#114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate rel attribute conflict with link_rel by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/117\"\u003emessense/nh3#117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose default clean_content_tags as module constant by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/118\"\u003emessense/nh3#118\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept frozenset and Mapping in type stubs by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/119\"\u003emessense/nh3#119\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/117\"\u003emessense/nh3#117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.3...v0.3.4\"\u003ehttps://github.com/messense/nh3/compare/v0.3.3...v0.3.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/9e78e6af74267c6789c62e98512460990415fb91\"\u003e\u003ccode\u003e9e78e6a\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/5225ec29f6ba74349d158676461fa6081cf804d8\"\u003e\u003ccode\u003e5225ec2\u003c/code\u003e\u003c/a\u003e Add tags parameter to clean_text (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/129df5295dd98b263a3f24bd4f9bd5e43a7bb677\"\u003e\u003ccode\u003e129df52\u003c/code\u003e\u003c/a\u003e Bump pyo3 from 0.28.2 to 0.28.3 (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/123\"\u003e#123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/25348dffb9f1373008a3f0f7d85f2ebb37883e07\"\u003e\u003ccode\u003e25348df\u003c/code\u003e\u003c/a\u003e Add doctest coverage for module docstrings and RST files (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/121\"\u003e#121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/bf48b37d0b8e1e1bddc62ae058f880eae1a4abc2\"\u003e\u003ccode\u003ebf48b37\u003c/code\u003e\u003c/a\u003e Add usage examples for clean() and Cleaner arguments (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/120\"\u003e#120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/c2ddb81e29ceee428a49b621994098e4e490d172\"\u003e\u003ccode\u003ec2ddb81\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/d19279a664798d898ee68c73998d1d4a979bb97f\"\u003e\u003ccode\u003ed19279a\u003c/code\u003e\u003c/a\u003e Accept frozenset and Mapping in type stubs (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/119\"\u003e#119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/b98f2c5f4a023c9281f4a2037931de4c73a3266b\"\u003e\u003ccode\u003eb98f2c5\u003c/code\u003e\u003c/a\u003e Expose default clean_content_tags as module constant (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/118\"\u003e#118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/9fdfa76988dda100ae69a657f017655b86821b8a\"\u003e\u003ccode\u003e9fdfa76\u003c/code\u003e\u003c/a\u003e Validate rel attribute conflict with link_rel (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/117\"\u003e#117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/8af5eeeb6b1c8a391c0c6f4e0634f3f859b75446\"\u003e\u003ccode\u003e8af5eee\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/115\"\u003e#115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.3...v0.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `whitenoise` from 6.11.0 to 6.12.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst\"\u003ewhitenoise's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.12.0 (2026-02-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support.\u003c/li\u003e\n\u003cli\u003eFix potential unauthorised file access vulnerability in \u0026quot;autorefesh\u0026quot; mode. See \u003ccode\u003ePR [#684](https://github.com/evansd/whitenoise/issues/684) \u0026lt;https://github.com/evansd/whitenoise/pull/684\u0026gt;\u003c/code\u003e__ for details, and a reminder that autorefresh mode has always been documented as unsuitable for production use. Thanks Seth Larson for reporting.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/1e3a30bc9e6b82c79a03d35532a7ba72715918df\"\u003e\u003ccode\u003e1e3a30b\u003c/code\u003e\u003c/a\u003e Version 6.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/bc4c738d768f3f91a67b9e297490645b33adc3d4\"\u003e\u003ccode\u003ebc4c738\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/684\"\u003e#684\u003c/a\u003e from evansd/use-commonpath\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/505ed8d28d34307606ba6ed9ac7740c7c0701955\"\u003e\u003ccode\u003e505ed8d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eos.path.commonpath()\u003c/code\u003e to identify child paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/b6d8ed40206aea61d1265ca84d88e786366d891b\"\u003e\u003ccode\u003eb6d8ed4\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/683\"\u003e#683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/edc79de2d063ae04980a251b67d73acf7ef06d3d\"\u003e\u003ccode\u003eedc79de\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/79fb2f136fe34debe427d4d031b11ec10b7ca2cc\"\u003e\u003ccode\u003e79fb2f1\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/2b245df895acb3aad86aadd02a794bfbf9374d3a\"\u003e\u003ccode\u003e2b245df\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/681\"\u003e#681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/dcb50f36d437dddfab06ce8fc36e6ec1f34f5af5\"\u003e\u003ccode\u003edcb50f3\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/678\"\u003e#678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/1c4a746afe1fdeaa458aa0fe2951cebe1fe0f026\"\u003e\u003ccode\u003e1c4a746\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/677\"\u003e#677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/e7f970aac293079c3fabe44b5072a70670ec3268\"\u003e\u003ccode\u003ee7f970a\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/676\"\u003e#676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/evansd/whitenoise/compare/6.11.0...6.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-coverage-plugin` from 3.2.0 to 3.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/releases\"\u003edjango-coverage-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.2\u003c/h2\u003e\n\u003cp\u003eFix: \u003ccode\u003e{% endblock %}\u003c/code\u003e lines (and others) were falsely reported as unexecuted when they appeared on their own indented line (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003eissue 74\u003c/a\u003e). Thanks, Marc Gibbons (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/pull/108\"\u003epull 108\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eDropped Django 3.x and 4.x.\u003c/p\u003e\n\u003cp\u003eSwitched to trusted publishing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/4eb4fc975e915400734104851116e423164a7c5c\"\u003e\u003ccode\u003e4eb4fc9\u003c/code\u003e\u003c/a\u003e build: fix publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/420435edd77b7af9e508446d60a852f61bcaed8c\"\u003e\u003ccode\u003e420435e\u003c/code\u003e\u003c/a\u003e build: v3.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/86a9d30fc44628981cd944ff58189f03fa082ca8\"\u003e\u003ccode\u003e86a9d30\u003c/code\u003e\u003c/a\u003e build: trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/9a5dfe53d9a81a8b54585c8b20b7e5ca06855afc\"\u003e\u003ccode\u003e9a5dfe5\u003c/code\u003e\u003c/a\u003e docs: update history\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/bfee7019ec245ef61a3c182c262e54e64a1cabe8\"\u003e\u003ccode\u003ebfee701\u003c/code\u003e\u003c/a\u003e fix: endblock falsely reported as uncovered when on its own indented line \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003e#74\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/59954f3fb97938849e8ec882d59a7cf438f12eff\"\u003e\u003ccode\u003e59954f3\u003c/code\u003e\u003c/a\u003e correct two old references to nedbat on github\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/7d145017c244f192c55a17035033667a190c0d6a\"\u003e\u003ccode\u003e7d14501\u003c/code\u003e\u003c/a\u003e docs: thanks, Marc Gibbons for \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/55cf337e2a4242c30766dc4784bd99ac5d180085\"\u003e\u003ccode\u003e55cf337\u003c/code\u003e\u003c/a\u003e docs: move authors into readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/639d48a188d04da28623a4751ae50e4da301fd9e\"\u003e\u003ccode\u003e639d48a\u003c/code\u003e\u003c/a\u003e Add Django 6, drop 3.2 and 4.2 which are EOL (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/53d114ac6082fb3fcd97c5cf0c4d634d395fe7f0\"\u003e\u003ccode\u003e53d114a\u003c/code\u003e\u003c/a\u003e chore: bump actions/setup-python in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/compare/v3.2.0...v3.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/5.2.9...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[resend]` to 15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[resend]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-0\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[resend]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-04-18\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eBreaking changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Require **Django 5.0 or later** and Python 3.10 or later.\n  (Thanks to `@terencehonles`_.)\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Resend:** Add support for inbound email. (Thanks to `@btimby`_.)\n\nFixes\n~~~~~\n\n* **Inbound:** Convert carriage return and line feed characters in attachment\n  filenames to spaces for ESPs that parse them from invalid headers (e.g.,\n  Postmark). (Thanks to `@BHSPitMonkey`_ for reporting the issue and providing\n  an example.)\n\n\nv14.0\n-----\n\n*2025-12-17*\n\nThis release improves handling of Unicode characters everywhere email messages\nallow them, based on extensive testing on all supported ESPs. See\n`International email \u0026amp;lt;https://anymail.dev/en/stable/tips/international_email/#idna\u0026amp;gt;`_\nin the docs for more information. There are several new workarounds for ESP\nbugs with non-ASCII characters, plus a handful of new errors to help you avoid\nUnicode bugs Anymail can't work around.\n\nThis release also includes support for Django 6.0 (earlier versions worked,\nbut provoked deprecation warnings) and adds the much-requested ESP Mailtrap.\n\nBreaking changes\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;p\u0026gt;(These changes don't affect the vast majority of Anymail users.)\u0026lt;/p\u0026gt;\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\n\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;International domain names:\u0026lt;/strong\u0026gt; When sending email to a non-ASCII domain name,\nuse IDNA 2008 with UTS-46 pre-processing rather than obsolete IDNA 2003\nencoding. This ensures email can be sent to newer domains enabled by IDNA 2008.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;This change should make no difference for virtually all real-world email\u0026lt;/p\u0026gt;\n\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;!-- raw HTML omitted --\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;p\u0026gt;... (truncated)\u0026lt;/p\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/17acea06b9361c3cc4ab6d9678bd5aea45db80ff\u0026quot;\u0026gt;\u0026lt;code\u0026gt;17acea0\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Release 15.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/8ad9d6e7e463efb770e3440871a05f2be4249ddf\u0026quot;\u0026gt;\u0026lt;code\u0026gt;8ad9d6e\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Inbound: sanitize CRNL in ESP-parsed attachment filenames\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/a6339d6c65bed21bcfe28e3c7b9b4ada4a290263\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a6339d6\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Upgrade actions versions\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/4626462d49512b0c423071a8a6fe43a9610ead8a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;4626462\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.x\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/2bcfd620d2f1fa6705a13ad8645aa25a4572fd08\u0026quot;\u0026gt;\u0026lt;code\u0026gt;2bcfd62\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Resend: Add inbound support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/13a08718571ca853f04336e15c525a98dd6dc48a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;13a0871\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Run pyupgrade\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/7bf7a1a42e7fe1dbc008d22dc6d03579e4523b34\u0026quot;\u0026gt;\u0026lt;code\u0026gt;7bf7a1a\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.0--4.2, Python 3.8--3.9 support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;See full diff in \u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/compare/v14.0...v15.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `gunicorn` from 25.1.0 to 26.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.0.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEventlet worker removed\u003c/strong\u003e: The \u003ccode\u003eeventlet\u003c/code\u003e worker class has been dropped. Migrate to \u003ccode\u003egevent\u003c/code\u003e, \u003ccode\u003egthread\u003c/code\u003e, or \u003ccode\u003etornado\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Compatibility Suite\u003c/strong\u003e: New end-to-end compatibility test harness covering Starlette, FastAPI, Litestar, Quart, Sanic, and BlackSheep. Current grid passes 438/444 tests (98%).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Test Suite Expansion\u003c/strong\u003e: 134 additional ASGI unit tests covering protocol semantics, lifespan, websockets, and chunked framing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 Request-Target Validation\u003c/strong\u003e (RFC 9112 sections 3.2.3, 3.2.4):\n\u003cul\u003e\n\u003cli\u003eReject \u003ccode\u003eauthority-form\u003c/code\u003e request-target outside \u003ccode\u003eCONNECT\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003easterisk-form\u003c/code\u003e request-target outside \u003ccode\u003eOPTIONS\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003erelative-reference\u003c/code\u003e request-targets\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHeader Field Hardening\u003c/strong\u003e (RFC 9110):\n\u003cul\u003e\n\u003cli\u003eReject control characters in header field-value (section 5.5)\u003c/li\u003e\n\u003cli\u003eReject forbidden trailer field-names (section 6.5.1)\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003eContent-Length\u003c/code\u003e list form (RFC 9112 section 6.3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRequest Smuggling Hardening\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eTighten keepalive gate and scope \u003ccode\u003efinish_body\u003c/code\u003e byte cap\u003c/li\u003e\n\u003cli\u003eKeep \u003ccode\u003e_body_receiver\u003c/code\u003e alive across the keepalive smuggling gate so pipelined requests cannot re-enter a closed body\u003c/li\u003e\n\u003cli\u003eAddress parser/protocol findings from a six-point WSGI/ASGI audit\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePROXY Protocol (ASGI)\u003c/strong\u003e: Enforce \u003ccode\u003eproxy_allow_ips\u003c/code\u003e and tighten v1/v2 parsing in the ASGI callback parser.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConnection Draining\u003c/strong\u003e: Drain the connection on close per RFC 9112 section 9.6 to prevent reset-on-close truncation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBody Framing on HEAD/204/304\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eKeep \u003ccode\u003eContent-Length\u003c/code\u003e on HEAD and 304 responses (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop body framing on HEAD/204/304 even when the framework set it\u003c/li\u003e\n\u003cli\u003eWarn once when an ASGI app emits a body for a no-body response\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 ASGI\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_handle_stream_ended\u003c/code\u003e to set \u003ccode\u003e_body_complete\u003c/code\u003e in the async HTTP/2 handler so request bodies finalize correctly on stream end\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eInvalidChunkExtension\u003c/code\u003e mapping and fast-parser support in ASGI tests (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 100-Continue\u003c/strong\u003e: Stop adding \u003ccode\u003eTransfer-Encoding: chunked\u003c/code\u003e to 100-Continue interim responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWebSocket Close Handshake\u003c/strong\u003e (RFC 6455):\n\u003cul\u003e\n\u003cli\u003eComply with the close handshake state machine\u003c/li\u003e\n\u003cli\u003eClose the transport after the close handshake completes\u003c/li\u003e\n\u003cli\u003eFix binary send when the \u003ccode\u003etext\u003c/code\u003e key is \u003ccode\u003eNone\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEarly Hints\u003c/strong\u003e: Validate headers in the \u003ccode\u003eearly_hints\u003c/code\u003e callback to match \u003ccode\u003eprocess_headers\u003c/code\u003e; pass only the header name to \u003ccode\u003eInvalidHeader\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3588\"\u003e#3588\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Fixes\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix ASGI disconnect handling for Django-style apps\u003c/li\u003e\n\u003cli\u003eFix Litestar request handling (use raw ASGI receive for body/headers)\u003c/li\u003e\n\u003cli\u003eFix Litestar HTTP endpoints for compatibility tests\u003c/li\u003e\n\u003cli\u003eFix Quart headers endpoint to normalize keys to lowercase\u003c/li\u003e\n\u003cli\u003eFix Quart WebSocket close test app (missing \u003ccode\u003eaccept()\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate \u003ccode\u003eTransfer-Encoding\u003c/code\u003e header for BlackSheep streaming\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5d819cf36040f6cc6175fcc804d703fb899509dd\"\u003e\u003ccode\u003e5d819cf\u003c/code\u003e\u003c/a\u003e release: 26.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/b45c70df105f7d5dcbc5abfb732804d6464edc21\"\u003e\u003ccode\u003eb45c70d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3611\"\u003e#3611\u003c/a\u003e from zc-mattcen/docs-typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/99c8d48acf453deb5c49fe12e195dbc00d888d1e\"\u003e\u003ccode\u003e99c8d48\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3623\"\u003e#3623\u003c/a\u003e from benoitc/chore/drop-eventlet-add-h2-uvloop-test-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5a655af50f20e005dd9e32e6078dc82fa45f3d4b\"\u003e\u003ccode\u003e5a655af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3622\"\u003e#3622\u003c/a\u003e from benoitc/test/docker-port-and-ipv4-fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/201df19a8011c0a1d6a0e75ebe22e89d48eb935e\"\u003e\u003ccode\u003e201df19\u003c/code\u003e\u003c/a\u003e chore: remove eventlet worker; add h2 and uvloop to test deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f4ac8e1f1bf1d365e77f41915da55bec31873f84\"\u003e\u003ccode\u003ef4ac8e1\u003c/code\u003e\u003c/a\u003e test: pass action name to dirty client and stabilize after TTOU spam\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/54d38afddf1f0db0c15b5f4ff63f3c7bfad96961\"\u003e\u003ccode\u003e54d38af\u003c/code\u003e\u003c/a\u003e test: unblock docker fixtures on macOS hosts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/68843c8893dd938456f0a2da62085ab5776f8871\"\u003e\u003ccode\u003e68843c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e from benoitc/fix/asgi-preserve-content-length-on-hea...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/31f2618f733cc0c78690df63f4e344aaf3f56b20\"\u003e\u003ccode\u003e31f2618\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3620\"\u003e#3620\u003c/a\u003e from benoitc/fix/asgi-proxy-protocol-trust-and-parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/41ec7527dbd8a9e52728477700707ad40e41d9dc\"\u003e\u003ccode\u003e41ec752\u003c/code\u003e\u003c/a\u003e fix: keep Content-Length on HEAD and 304 responses\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/25.1.0...26.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[binary]` to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[binary]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003ePsycopg 3.3.1\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix iteration on server-side cursors (:ticket:\u003ccode\u003e[#1226](https://github.com/psycopg/psycopg/issues/1226)\u003c/code\u003e).\u003c/p\u003e\n\u003ch2\u003ePsycopg 3.3.0\u003c/h2\u003e\n\u003cp\u003e.. rubric:: New top-level features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :ref:\u003ccode\u003etemplate strings queries \\\u0026lt;template-strings\u0026gt;\u003c/code\u003e (:ticket:\u003ccode\u003e[#1054](https://github.com/psycopg/psycopg/issues/1054)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.2...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.4.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-attrs/attrs/releases\"\u003eattrs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main outward change here only affects people using field transformers, but it should be a nice quality of life improvement!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://kraken.tech\"\u003eKraken Tech\u003c/a\u003e (@\u003ca href=\"https://github.com/kraken-tech\"\u003ekraken-tech\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://ecosyste.ms\"\u003eEcosystems\u003c/a\u003e (@\u003ca href=\"https://github.com/ecosyste-ms\"\u003eecosyste-ms\u003c/a\u003e), \u003ca href=\"https://www.lambdatest.com\"\u003eTestMu AI Open Source Office (Formerly LambdaTest)\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://miketheman.dev\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mula...\n\n_Description has been truncated_","html_url":"https://github.com/j01101111sh/DungeonBuddy/pull/153","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/j01101111sh%2FDungeonBuddy/issues/153","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/153/packages"},{"uuid":"4451031951","node_id":"PR_kwDOSEb-G87bxRkZ","number":27,"state":"closed","title":"Bump the dev group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T03:26:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T03:38:47.000Z","updated_at":"2026-05-22T03:26:49.000Z","time_to_close":604080,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev","update_count":43,"packages":[{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.13.0","new_version":"40.18.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.39.0","new_version":"1.39.4","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.10","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-aiofiles","old_version":"25.1.0.20260409","new_version":"25.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260408","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20260408","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20260408","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260408","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260408","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20260408","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20260408","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"26.4.0.20260409","new_version":"26.4.0.20260512","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.4.0.20260409","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20260408","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260408","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260408","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20260408","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20260408","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260408","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260408","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260408","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260408","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260408","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260408","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260408","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.4.4.20260408","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20260408","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20260408","new_version":"3.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260408","new_version":"2.18.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260408","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.88","new_version":"1.43.8","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.12","new_version":"6.152.7","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260408","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260408","new_version":"82.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.20.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.60.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 43 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.18.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.13` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20260409` | `25.1.0.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260408` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20260408` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20260408` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260408` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260408` | `0.22.3.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20260408` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20260408` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `26.4.0.20260409` | `26.4.0.20260512` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.4.0.20260409` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20260408` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260408` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260408` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20260408` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20260408` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260408` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260408` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260408` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260408` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260408` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260408` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260408` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.4.4.20260408` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20260408` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20260408` | `3.20.0.20260508` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260408` | `2.18.0.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260408` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.88` | `1.43.8` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.12` | `6.152.7` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260408` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260408` | `82.0.0.20260508` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.60.0` | `1.0.0` |\n\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.18.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.17.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/v40.18.0/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0\"\u003ev40.18.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0\"\u003ev40.17.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia. Thanks \u003ca href=\"https://github.com/jasur-py\"\u003e\u003ccode\u003e@​jasur-py\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0\"\u003ev40.16.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicate phone number prefix \u003ccode\u003e145\u003c/code\u003e in \u003ccode\u003ezh_CN\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/r266-tec\"\u003e\u003ccode\u003e@​r266-tec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7a79d1b815c72cdd570e47002a1d6d90b8282bef\"\u003e\u003ccode\u003e7a79d1b\u003c/code\u003e\u003c/a\u003e Bump version: 40.17.0 → 40.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/22334a6867869f87f174a168e0c1783241b23bb4\"\u003e\u003ccode\u003e22334a6\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/8a7fa46a337e01eba9ec1c1af51e740d60940f1d\"\u003e\u003ccode\u003e8a7fa46\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a70229ebf3abb0e2e44529e884bbe3d5aec9be8a\"\u003e\u003ccode\u003ea70229e\u003c/code\u003e\u003c/a\u003e Add automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2346\"\u003e#2346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/9dc592c21400f42a488e87850e30856a14ab4bd2\"\u003e\u003ccode\u003e9dc592c\u003c/code\u003e\u003c/a\u003e add \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2338\"\u003e#2338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7e8ec9c8c60679e404b5ca647a207168832c8ba4\"\u003e\u003ccode\u003e7e8ec9c\u003c/code\u003e\u003c/a\u003e Bump version: 40.16.0 → 40.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/48fbd622669263bcbd2b822568a830512948d365\"\u003e\u003ccode\u003e48fbd62\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/696ebf93a8310d621d6dd90426844de023d9ef50\"\u003e\u003ccode\u003e696ebf9\u003c/code\u003e\u003c/a\u003e :lipstick: Format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c339633949b44f5ab3c34d1b2046acddfae7e39\"\u003e\u003ccode\u003e0c33963\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2353\"\u003e#2353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bec4ec21e9a75056e1fcf250d5aebcf22a415ca1\"\u003e\u003ccode\u003ebec4ec2\u003c/code\u003e\u003c/a\u003e :pencil: fix changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.39.0 to 1.39.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b058a6450c9f2a720257f56a1f7ed8a4cdf33a15\"\u003e\u003ccode\u003eb058a64\u003c/code\u003e\u003c/a\u003e 1.39.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5e1f1fb60ff9f646a0d039e3070a0abb75e9db6a\"\u003e\u003ccode\u003e5e1f1fb\u003c/code\u003e\u003c/a\u003e Fix: treat  \u003ccode\u003emap\u003c/code\u003e \u0026amp; \u003ccode\u003efilter\u003c/code\u003e as not subscriptable at runtime and don't show g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f9730a824e91dd75c3871bc894ee0d73bec682a9\"\u003e\u003ccode\u003ef9730a8\u003c/code\u003e\u003c/a\u003e bump python dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a465682f20214a43fff4f3e82d02b74d322e6e3e\"\u003e\u003ccode\u003ea465682\u003c/code\u003e\u003c/a\u003e Update installation docs for PyCharm (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1643\"\u003e#1643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.10 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.10...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20260409 to 25.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260408 to 7.0.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20260408 to 0.4.15.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20260408 to 0.7.0.20260504\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260408 to 1.3.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260408 to 0.22.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20260408 to 6.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20260408 to 4.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 26.4.0.20260409 to 26.4.0.20260512\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.4.0.20260409 to 3.5.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20260408 to 1.1.11.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260408 to 3.10.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260408 to 3.3.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20260408 to 3.6.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20260408 to 0.47.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260408 to 3.1.5.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260408 to 4.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 7.34.1.20260408 to 7.34.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260408 to 7.2.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260408 to 2.9.21.20260509\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260408 to 2.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260408 to 2.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260408 to 311.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20260408 to 6.0.12.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.4.4.20260408 to 2026.5.9.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20260408 to 2.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20260408 to 3.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260408 to 2.18.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260408 to 4.67.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.88 to 1.43.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.12 to 6.152.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.7\u003c/h2\u003e\n\u003cp\u003eThis patch improves our type hints for \u0026quot;.filter()\u0026quot; to work with\n\u0026quot;typing.TypeGuard\u0026quot;. For example:\u003c/p\u003e\n\u003cp\u003efrom typing import TypeGuard\u003c/p\u003e\n\u003cp\u003efrom hypothesis import strategies as st\u003c/p\u003e\n\u003cp\u003edef is_str(x: object) -\u0026gt; TypeGuard[str]:\nreturn isinstance(x, str)\u003c/p\u003e\n\u003cp\u003es = st.from_type(object).filter(is_str)\u003c/p\u003e\n\u003ch1\u003epreviously: SearchStrategy[object]\u003c/h1\u003e\n\u003ch1\u003enow: SearchStrategy[str]\u003c/h1\u003e\n\u003cp\u003ereveal_type(s)\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-7\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.6\u003c/h2\u003e\n\u003cp\u003eThis patch adds a shrinking pass that tries natural text\ntransformations - unicode decomposition (NFD/NFKD) and case mapping -\non individual characters in string choices.  Failures involving e.g.\n\u0026quot;\u0026quot;À\u0026quot; != \u0026quot;À\u0026quot;.lower()\u0026quot; will now reliably shrink to \u0026quot;\u0026quot;A\u0026quot;\u0026quot; rather than\nsometimes getting stuck on the high-codepoint accented form (issue\n\u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4725\"\u003e#4725\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-6\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.5\u003c/h2\u003e\n\u003cp\u003eThis patch improves the \u0026quot;Phase.explain\u0026quot; phase so that simple cases\nlike \u0026quot;assert n1 == n2\u0026quot; no longer get a misleading \u0026quot;# or any other\ngenerated value\u0026quot; comment (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4715\"\u003e#4715\u003c/a\u003e). Before falling back to random\nsampling, we now also try borrowing values from each other arg slice\nwith matching shape.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-5\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/adc8d2d4d3dbdbc640d00e216782ef5dd3611640\"\u003e\u003ccode\u003eadc8d2d\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.7 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d66ce67fed6cf77dd8bc14fb88f2d97d027458c4\"\u003e\u003ccode\u003ed66ce67\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4672\"\u003e#4672\u003c/a\u003e from CharString/annotate-filter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/df889578276ee8624e95692ba8f0a57b0a04c487\"\u003e\u003ccode\u003edf88957\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4727\"\u003e#4727\u003c/a\u003e from hettlage/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/415443cd82dcd389d398a7f36ebf41ea6162a7d6\"\u003e\u003ccode\u003e415443c\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/bfd0ebfe74bcfc0447498259ec008c0fa13ee976\"\u003e\u003ccode\u003ebfd0ebf\u003c/code\u003e\u003c/a\u003e Revert RELEASE.rst to original version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/492f8185f80935a6cfc26e0c54bc9f5aed882c80\"\u003e\u003ccode\u003e492f818\u003c/code\u003e\u003c/a\u003e attempt to de-flake test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/55ab356dc1b96b59821db851ebce3bdf483c2eb6\"\u003e\u003ccode\u003e55ab356\u003c/code\u003e\u003c/a\u003e fix release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7fd8e506efc43ce9b0d19993fc2cf8eb759d273f\"\u003e\u003ccode\u003e7fd8e50\u003c/code\u003e\u003c/a\u003e simplify type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c8b952ed27af8aa7f5fcc90c136f4dfff649adc7\"\u003e\u003ccode\u003ec8b952e\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into annotate-filter-4672\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b2e8d8968eb3fd85391febfe96ea24703faf23a9\"\u003e\u003ccode\u003eb2e8d89\u003c/code\u003e\u003c/a\u003e add tests and release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.12...hypothesis-python-6.152.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260408 to 2.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260408 to 82.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.1 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.60.0 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/NH3CH2COOH/dify-for-adaption/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NH3CH2COOH%2Fdify-for-adaption/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"4438189791","node_id":"PR_kwDOAG7wis7bIZb4","number":4829,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-13T13:17:23.000Z","updated_at":"2026-05-13T13:30:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":16,"packages":[{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"1.16.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.12.1","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.29.0","repository_url":"https://github.com/pypa/hatch"},{"name":"types-requests","old_version":"2.32.4.20250611","new_version":"2.33.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.8.0.20250415","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"sphinx-book-theme","old_version":"1.1.4","new_version":"1.2.0","repository_url":"https://github.com/executablebooks/sphinx-book-theme"},{"name":"sphinx-autoapi","old_version":"3.6.0","new_version":"3.8.0","repository_url":"https://github.com/readthedocs/sphinx-autoapi"},{"name":"sphinxcontrib-mermaid","old_version":"2.0.1","new_version":"2.0.2","repository_url":"https://github.com/mgaitan/sphinxcontrib-mermaid"},{"name":"markdown","old_version":"3.8.2","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.8","repository_url":"https://github.com/ijl/orjson"},{"name":"typing-extensions","old_version":"4.14.0","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.1` | `1.20.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.1` | `0.15.12` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.29.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250611` | `2.33.0.20260503` |\n| [types-markdown](https://github.com/python/typeshed) | `3.8.0.20250415` | `3.10.2.20260408` |\n| [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme) | `1.1.4` | `1.2.0` |\n| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi) | `3.6.0` | `3.8.0` |\n| [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) | `2.0.1` | `2.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8.2` | `3.10.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.8` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.16.1 to 1.20.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003cli\u003eNeil Schemenauer\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.16.1...v1.20.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.1 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.1...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wheel` from 0.46.3 to 0.47.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/wheel/releases\"\u003ewheel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.47.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003ewheel info\u003c/code\u003e subcommand to display metadata about wheel files without unpacking them (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/639\"\u003e#639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eWheelFile\u003c/code\u003e raising \u003ccode\u003eMissing RECORD file\u003c/code\u003e when the wheel filename contains uppercase characters (e.g. \u003ccode\u003eDjango-3.2.5.whl\u003c/code\u003e) but the \u003ccode\u003e.dist-info\u003c/code\u003e directory inside uses normalized lowercase naming (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/411\"\u003e#411\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/wheel/blob/main/docs/news.rst\"\u003ewheel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e0.47.0 (2026-04-22)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003ewheel info\u003c/code\u003e subcommand to display metadata about wheel files without\nunpacking them (\u003ccode\u003e[#639](https://github.com/pypa/wheel/issues/639) \u0026lt;https://github.com/pypa/wheel/issues/639\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eWheelFile\u003c/code\u003e raising \u003ccode\u003eMissing RECORD file\u003c/code\u003e when the wheel filename contains\nuppercase characters (e.g. \u003ccode\u003eDjango-3.2.5.whl\u003c/code\u003e) but the \u003ccode\u003e.dist-info\u003c/code\u003e directory\ninside uses normalized lowercase naming\n(\u003ccode\u003e[#411](https://github.com/pypa/wheel/issues/411) \u0026lt;https://github.com/pypa/wheel/issues/411\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.3 (2026-01-22)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eImportError: cannot import name '_setuptools_logging' from 'wheel'\u003c/code\u003e when\ninstalled alongside an old version of setuptools and running the \u003ccode\u003ebdist_wheel\u003c/code\u003e\ncommand (\u003ccode\u003e[#676](https://github.com/pypa/wheel/issues/676) \u0026lt;https://github.com/pypa/wheel/issues/676\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.2 (2026-01-22)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestored the \u003ccode\u003ebdist_wheel\u003c/code\u003e command for compatibility with \u003ccode\u003esetuptools\u003c/code\u003e older than\nv70.1\u003c/li\u003e\n\u003cli\u003eImporting \u003ccode\u003ewheel.bdist_wheel\u003c/code\u003e now emits a \u003ccode\u003eFutureWarning\u003c/code\u003e instead of a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ewheel unpack\u003c/code\u003e potentially altering the permissions of files outside of the\ndestination tree with maliciously crafted wheels (CVE-2026-24049)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.1 (2025-04-08)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily restored the \u003ccode\u003ewheel.macosx_libfile\u003c/code\u003e module\n(\u003ccode\u003e[#659](https://github.com/pypa/wheel/issues/659) \u0026lt;https://github.com/pypa/wheel/issues/659\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.0 (2025-04-03)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8\u003c/li\u003e\n\u003cli\u003eRemoved the \u003ccode\u003ebdist_wheel\u003c/code\u003e setuptools command implementation and entry point.\nThe \u003ccode\u003ewheel.bdist_wheel\u003c/code\u003e module is now just an alias to\n\u003ccode\u003esetuptools.command.bdist_wheel\u003c/code\u003e, emitting a deprecation warning on import.\u003c/li\u003e\n\u003cli\u003eRemoved vendored \u003ccode\u003epackaging\u003c/code\u003e in favor of a run-time dependency on it\u003c/li\u003e\n\u003cli\u003eMade the \u003ccode\u003ewheel.metadata\u003c/code\u003e module private (with a deprecation warning if it's\nimported\u003c/li\u003e\n\u003cli\u003eMade the \u003ccode\u003ewheel.cli\u003c/code\u003e package private (no deprecation warning)\u003c/li\u003e\n\u003cli\u003eFixed an exception when calling the \u003ccode\u003econvert\u003c/code\u003e command with an empty description\nfield\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.45.1 (2024-11-23)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed pure Python wheels converted from eggs and wininst files having the ABI tag in\nthe file name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/efd83a750f07a33462ea2eed365fd8dac9e51442\"\u003e\u003ccode\u003eefd83a7\u003c/code\u003e\u003c/a\u003e Created a new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/bb69216d35588c2a0febc2d9a130727fe6e46ee3\"\u003e\u003ccode\u003ebb69216\u003c/code\u003e\u003c/a\u003e Reordered the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/d5a1763ce927618bfa7d82abe334d0d14a93cc37\"\u003e\u003ccode\u003ed5a1763\u003c/code\u003e\u003c/a\u003e fix(wheelfile): resolve .dist-info path case-insensitively when reading wheel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/5718957928ece25eb0d1c12023c71dea4fcb5cf9\"\u003e\u003ccode\u003e5718957\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/685\"\u003e#685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/625806845ae5756be3cc0f9d44832c29079c0954\"\u003e\u003ccode\u003e6258068\u003c/code\u003e\u003c/a\u003e chore: log_level is better than log_cli_level (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/684\"\u003e#684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/2975debc789682b3a448b134611acc6962a93eb3\"\u003e\u003ccode\u003e2975deb\u003c/code\u003e\u003c/a\u003e Require tox \u0026gt;= 4.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/47674ba770e5ee72d679b7eb32b558e0c177640d\"\u003e\u003ccode\u003e47674ba\u003c/code\u003e\u003c/a\u003e chore: add check-sdist to checks (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/681\"\u003e#681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/56223f6f8dfa8d3d40923f24dcf159204698d7b6\"\u003e\u003ccode\u003e56223f6\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e__package__\u003c/code\u003e → \u003ccode\u003e__spec__.parent\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/679\"\u003e#679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/0ce509e02dc3cd1b7b0bdf868482de062b3c21c3\"\u003e\u003ccode\u003e0ce509e\u003c/code\u003e\u003c/a\u003e Added the wheel info subcommand (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/669\"\u003e#669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/39039c0f3446c1ed5ec52621e98bc2bad8178a06\"\u003e\u003ccode\u003e39039c0\u003c/code\u003e\u003c/a\u003e Improved the index page\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/wheel/compare/0.46.3...0.47.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hatchling` from 1.27.0 to 1.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/hatch/releases\"\u003ehatchling's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHatchling v1.29.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eFixed:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSource Date Epoch no longer fails when set to date before 1980.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHatchling v1.28.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eChanged:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAdded:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esbom-files\u003c/code\u003e option and \u003ccode\u003esbom_files\u003c/code\u003e build data to the \u003ccode\u003ewheel\u003c/code\u003e build target for including Software Bill of Materials files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/1a74daa6f554e2ec89f2641288e44ed39e5507cc\"\u003e\u003ccode\u003e1a74daa\u003c/code\u003e\u003c/a\u003e Noqa release command to unblock GHA for PRs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/78065f4c54ff16b72e92158f3547d61e420a93f7\"\u003e\u003ccode\u003e78065f4\u003c/code\u003e\u003c/a\u003e For Immutable Releases  (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2188\"\u003e#2188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/592c0a9c8cbd3e1b5d90cab57af5c17d7484037d\"\u003e\u003ccode\u003e592c0a9\u003c/code\u003e\u003c/a\u003e release Hatchling v1.29.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2186\"\u003e#2186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/874059b82d06320d2e15ef909fbdc186a88bcdcc\"\u003e\u003ccode\u003e874059b\u003c/code\u003e\u003c/a\u003e Prerelease doc updates. (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/0e31bb64ec76afe9736500cafb6984ddc9c4de6d\"\u003e\u003ccode\u003e0e31bb6\u003c/code\u003e\u003c/a\u003e Immutable releases ci (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2182\"\u003e#2182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/f400be159bbd7c016ba5dc591a43753b193eadab\"\u003e\u003ccode\u003ef400be1\u003c/code\u003e\u003c/a\u003e Support a SOURCE_DATE_EPOCH prior to 1980 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/47b55ce0a9907302583db845c14bf5457432c80f\"\u003e\u003ccode\u003e47b55ce\u003c/code\u003e\u003c/a\u003e Fixing failing tests for changes in Rich markdown rendering (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2172\"\u003e#2172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/cc4acd668663b60e28f396c540c7acabe09f90be\"\u003e\u003ccode\u003ecc4acd6\u003c/code\u003e\u003c/a\u003e Add a note guiding users to include SBOM files in the source distribution (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/9068758886e57751ff71a59520dcf576c7deea0b\"\u003e\u003ccode\u003e9068758\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2164\"\u003e#2164\u003c/a\u003e keep_env type error for hatch shell (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/bc31cfccc15283a49f62024d3607c7bfad01abe0\"\u003e\u003ccode\u003ebc31cfc\u003c/code\u003e\u003c/a\u003e Fix warning and tests with packaging 26.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/hatch/compare/hatchling-v1.27.0...hatchling-v1.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.32.4.20250611 to 2.33.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250415 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-book-theme` from 1.1.4 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/releases\"\u003esphinx-book-theme's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/blob/main/CHANGELOG.md\"\u003esphinx-book-theme's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.2 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.1...3da24da74f6042599fe6c9e2d612f5cbdef42280\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/818\"\u003e#818\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: correct event-handler signature \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/817\"\u003e#817\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2024-02-13\u0026amp;to=2024-02-13\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2024-02-13..2024-02-13\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.0...9335ab99b0bc77b826cb2c5afcef3432f14e8780\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version for 1.1.1 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/815\"\u003e#815\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: use \u003ccode\u003econfig-inited\u003c/code\u003e event to register config \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/814\"\u003e#814\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther merged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild(deps): Bump actions/setup-python from 4 to 5 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/803\"\u003e#803\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/801\"\u003e#801\u003c/a\u003e (\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/30f968ff990ef25ab5f38ff0dd26a10add814512\"\u003e\u003ccode\u003e30f968f\u003c/code\u003e\u003c/a\u003e Release v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/b78d24f6105cc91c41f18b3bf8f2e2a54c6c1f95\"\u003e\u003ccode\u003eb78d24f\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/0415925b138a66229afb10c475663ea76d8dd480\"\u003e\u003ccode\u003e0415925\u003c/code\u003e\u003c/a\u003e MAINT: ignore bots in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/5797d88ca3e42188c9eaf163c4680a6af67a1f13\"\u003e\u003ccode\u003e5797d88\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/927\"\u003e#927\u003c/a\u003e from bsipocz/MAINT_sphinx_dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/f23d0946c74520fa3a9f358f33f612bc19668d79\"\u003e\u003ccode\u003ef23d094\u003c/code\u003e\u003c/a\u003e CI: Adding workaround for autodoc typehint parsing issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8747e975f96c001a299b2a773fe2c8accac76ffe\"\u003e\u003ccode\u003e8747e97\u003c/code\u003e\u003c/a\u003e MAINT: dropping sphinx\u0026lt;7 and python\u0026lt;3.11 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/ffac4dee8755ff8cfd6ae1130a7e70e94ad0fa99\"\u003e\u003ccode\u003effac4de\u003c/code\u003e\u003c/a\u003e MAINT: using python 3.12 for RTD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/cb587276c919c90787b87d56292c3e53ac607d8a\"\u003e\u003ccode\u003ecb58727\u003c/code\u003e\u003c/a\u003e MAINT: min pin for ablog due to sphinx9 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8cc45e4ef5e0d474869355e4240bd4d65b24dff0\"\u003e\u003ccode\u003e8cc45e4\u003c/code\u003e\u003c/a\u003e CI: ignore linkchecking URLs where anchors throw 403\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/d521920234ab145a573b2398777e4c022df36340\"\u003e\u003ccode\u003ed521920\u003c/code\u003e\u003c/a\u003e MAINT: adding sphinx9 and python 3.14 to testing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-autoapi` from 3.6.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/releases\"\u003esphinx-autoapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding autoapi_follow_symlinks, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PythonFunction.overloads typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1\u003c/h2\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid. Fix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst\"\u003esphinx-autoapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0 (2026-03-07)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0 (2026-02-10)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding \u003ccode\u003eautoapi_follow_symlinks\u003c/code\u003e, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePythonFunction.overloads\u003c/code\u003e typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1 (2025-10-06)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid.\nFix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/75cbffdea08771a0c574814053359b28dc7dfe85\"\u003e\u003ccode\u003e75cbffd\u003c/code\u003e\u003c/a\u003e Version 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/7838cf6937000a84ca8cb13a7d76e03b0084a7f3\"\u003e\u003ccode\u003e7838cf6\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/f1cdd302336455bee67a6dbc9ea2742fad17a756\"\u003e\u003ccode\u003ef1cdd30\u003c/code\u003e\u003c/a\u003e Attempt to fix macos-latest build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/34bb24ccc9de3be61c63a9c8b38458d06ea11eb3\"\u003e\u003ccode\u003e34bb24c\u003c/code\u003e\u003c/a\u003e Autodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/ccb2e898cb8b3becf04eba76f5449e29d336215e\"\u003e\u003ccode\u003eccb2e89\u003c/code\u003e\u003c/a\u003e astroid requirement is consistent across all versions of Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/0917ed2d4a42fa4ddd3668247d10ca6d902d7ada\"\u003e\u003ccode\u003e0917ed2\u003c/code\u003e\u003c/a\u003e Version 3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/394beb453256c9c15a30cb5851682fed2a844fc4\"\u003e\u003ccode\u003e394beb4\u003c/code\u003e\u003c/a\u003e Add warning for missing import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/96cd74d1a015a05bf4409a73b173dcdf8421902a\"\u003e\u003ccode\u003e96cd74d\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/c248b85d66c233a4673c64944bdeeb394be5116a\"\u003e\u003ccode\u003ec248b85\u003c/code\u003e\u003c/a\u003e Render typing_extensions.TypeAlias like other type aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/a2f49c9689ba76d5518c33fb509c57b5141342df\"\u003e\u003ccode\u003ea2f49c9\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/compare/v3.6.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinxcontrib-mermaid` from 2.0.1 to 2.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/blob/master/CHANGELOG.md\"\u003esphinxcontrib-mermaid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emermaid_dark_theme\u003c/code\u003e and \u003ccode\u003emermaid_light_theme\u003c/code\u003e config options for configurable theme switching\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/19be46820247ed7b9ac333d4bde2e1e3445ca431\"\u003e\u003ccode\u003e19be468\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/240\"\u003e#240\u003c/a\u003e from timkpaine/tkp/hatch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/e1f9eccc13395df8e7beba0b942389bf0e95b4ac\"\u003e\u003ccode\u003ee1f9ecc\u003c/code\u003e\u003c/a\u003e Switch to hatchling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/42aa20a010f0d4b2b86352ae1a10c6d3cd1f6cb7\"\u003e\u003ccode\u003e42aa20a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/239\"\u003e#239\u003c/a\u003e from timkpaine/tkp/202\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/2db5b555ff3fde025be5bbab2729457760f49210\"\u003e\u003ccode\u003e2db5b55\u003c/code\u003e\u003c/a\u003e bump to 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/25c7ef7b8ff75001ad0e475ffb2d60a21eb13b42\"\u003e\u003ccode\u003e25c7ef7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/237\"\u003e#237\u003c/a\u003e from kartben/local_paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/e98c6f8b8869b9f47a9ce206bf33bed0c1b60065\"\u003e\u003ccode\u003ee98c6f8\u003c/code\u003e\u003c/a\u003e increase test coverage for _use_local options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/1422b452a55017407e9688c912b93b25ee95bcec\"\u003e\u003ccode\u003e1422b45\u003c/code\u003e\u003c/a\u003e Resolve local Mermaid/ELK/ZenUML/D3 JS paths under html_static_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/d6d874c4fbded7b7b7d86c26f0d39c7e70a55a1e\"\u003e\u003ccode\u003ed6d874c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/236\"\u003e#236\u003c/a\u003e from jensens/configurable-theme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/bce597640b897ff4ab03cc6d77a2eb1a7d26f0d5\"\u003e\u003ccode\u003ebce5976\u003c/code\u003e\u003c/a\u003e Document mermaid_dark_theme and mermaid_light_theme config options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/12bb2ac696a1e0ea9ec5b183bab0bc50216c7970\"\u003e\u003ccode\u003e12bb2ac\u003c/code\u003e\u003c/a\u003e Add mermaid_dark_theme and mermaid_light_theme config options\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/compare/2.0.1...2.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.8.2 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.8.2...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.10.18 to 3.11.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.5\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.4\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 1.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for 3.14 and manylinux i686, manylinux arm7,\nmanylinux ppc64le, manylinux s390x.\u003c/li\u003e\n\u003cli\u003eBuild now requires a C compiler.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix PyPI project metadata when using maturin 1.9.2 or later.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix build using Rust 1.89 on amd64.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8 - 2026-03-31\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6 - 2026-01-29\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.5 - 2025-12-06\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.4 - 2025-10-24\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 1.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for 3.14 and manylinux i686, manylinux arm7,\nmanylinux ppc64le, manylinux s390x.\u003c/li\u003e\n\u003cli\u003eBuild now requires a C compiler.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.3 - 2025-08-26\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/5cbb3d0398a2f42de51210270286fecd798c5d78\"\u003e\u003ccode\u003e5cbb3d0\u003c/code\u003e\u003c/a\u003e 3.11.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4195d7f263e33076295b75efdcbaf6a55af8674e\"\u003e\u003ccode\u003e4195d7f\u003c/code\u003e\u003c/a\u003e writer::half\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d00641b69410728a735f0855eb1c2843b0a5819b\"\u003e\u003ccode\u003ed00641b\u003c/code\u003e\u003c/a\u003e writer::uuid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/c84d9b4ba4853781af943fa5c493e261e2f82b84\"\u003e\u003ccode\u003ec84d9b4\u003c/code\u003e\u003c/a\u003e build and compatibility misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4547234b681fac5e0e0734cf44c21e75f9654e43\"\u003e\u003ccode\u003e4547234\u003c/code\u003e\u003c/a\u003e ffi::numpy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/0d4a5ad1f17a72528ba027554466fdec6580cdeb\"\u003e\u003ccode\u003e0d4a5ad\u003c/code\u003e\u003c/a\u003e datetime PyRef idiom\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/e93a13d372ec956d027e71d023eb534b8445ac85\"\u003e\u003ccode\u003ee93a13d\u003c/code\u003e\u003c/a\u003e Cross-compile avoids maturin v1.12 build-details.json error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec2b066cae79ae4a90ed126ac5723335dd99e408\"\u003e\u003ccode\u003eec2b066\u003c/code\u003e\u003c/a\u003e 3.11.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1ca01f78cf4198ec37407d83713afa6e5c53dbf9\"\u003e\u003ccode\u003e1ca01f7\u003c/code\u003e\u003c/a\u003e zmij\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1716a226bd1f38db01503f30cd37b0efec48d88e\"\u003e\u003ccode\u003e1716a22\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.10.18...3.11.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.14.0 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.git...\n\n_Description has been truncated_","html_url":"https://github.com/ankitects/anki/pull/4829","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitects%2Fanki/issues/4829","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4829/packages"},{"uuid":"4363847893","node_id":"PR_kwDOKE20Lc7XZBnM","number":659,"state":"closed","title":"chore(deps): bump the python-dependencies group with 40 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-10T00:05:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-01T09:55:37.000Z","updated_at":"2026-05-10T00:05:32.000Z","time_to_close":742193,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":40,"packages":[{"name":"bleach","old_version":"6.1.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"boto3","old_version":"1.34.76","new_version":"1.43.1","repository_url":"https://github.com/boto/boto3"},{"name":"django-storages","old_version":"1.14.2","new_version":"1.14.6","repository_url":"https://github.com/jschneier/django-storages"},{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"redis","old_version":"5.3.1","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"setuptools","old_version":"78.1.1","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"stripe","old_version":"10.12.0","new_version":"15.1.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"django-stubs-ext","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"typos","old_version":"1.44.0","new_version":"1.46.0","repository_url":"https://github.com/crate-ci/typos"},{"name":"pre-commit","old_version":"3.8.0","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pulumi-aws","old_version":"6.83.2","new_version":"7.28.0","repository_url":"https://github.com/pulumi/pulumi-aws"},{"name":"types-python-dateutil","old_version":"2.9.0.20260305","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-cffi","old_version":"1.17.0.20260307","new_version":"2.0.0.20260429","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"5.29.1.20250403","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260422","repository_url":"https://github.com/python/typeshed"},{"name":"types-pycurl","old_version":"7.45.7.20251101","new_version":"7.45.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"gunicorn","old_version":"23.0.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"social-auth-app-django","old_version":"5.6.0","new_version":"5.9.0","repository_url":"https://github.com/python-social-auth/social-app-django"},{"name":"django-environ","old_version":"0.11.2","new_version":"0.13.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"django-extensions","old_version":"3.2.3","new_version":"4.1","repository_url":"https://github.com/django-extensions/django-extensions"},{"name":"python-dateutil","old_version":"2.9.0","new_version":"2.9.0.post0","repository_url":"https://github.com/dateutil/dateutil"},{"name":"django-htmx","old_version":"1.17.3","new_version":"1.27.0","repository_url":"https://github.com/adamchainz/django-htmx"},{"name":"django-components","old_version":"0.37","new_version":"0.149.0","repository_url":"https://github.com/django-components/django-components"},{"name":"django-markdownify","old_version":"0.9.3","new_version":"0.9.6","repository_url":"https://github.com/erwinmatijsen/django-markdownify"},{"name":"model-bakery","old_version":"1.17.0","new_version":"1.23.4","repository_url":"https://github.com/model-bakers/model_bakery"},{"name":"mkdocs-material","old_version":"9.7.4","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mysqlclient","old_version":"2.2.0","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"mariadb","old_version":"1.1.8","new_version":"1.1.14","repository_url":"https://github.com/mariadb-corporation/mariadb-connector-python"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"black","old_version":"24.10.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"bump-my-version","old_version":"0.19.3","new_version":"1.3.0","repository_url":"https://github.com/callowayproject/bump-my-version"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 40 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bleach](https://github.com/mozilla/bleach) | `6.1.0` | `6.3.0` |\n| [boto3](https://github.com/boto/boto3) | `1.34.76` | `1.43.1` |\n| [django-storages](https://github.com/jschneier/django-storages) | `1.14.2` | `1.14.6` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [redis](https://github.com/redis/redis-py) | `5.3.1` | `7.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `78.1.1` | `82.0.1` |\n| [stripe](https://github.com/stripe/stripe-python) | `10.12.0` | `15.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [django-stubs-ext](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [typos](https://github.com/crate-ci/typos) | `1.44.0` | `1.46.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `3.8.0` | `4.6.0` |\n| [pulumi-aws](https://github.com/pulumi/pulumi-aws) | `6.83.2` | `7.28.0` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260305` | `2.9.0.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-cffi](https://github.com/python/typeshed) | `1.17.0.20260307` | `2.0.0.20260429` |\n| [types-protobuf](https://github.com/python/typeshed) | `5.29.1.20250403` | `7.34.1.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260422` |\n| [types-pycurl](https://github.com/python/typeshed) | `7.45.7.20251101` | `7.45.7.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `23.0.0` | `25.3.0` |\n| [social-auth-app-django](https://github.com/python-social-auth/social-app-django) | `5.6.0` | `5.9.0` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.11.2` | `0.13.0` |\n| [django-extensions](https://github.com/django-extensions/django-extensions) | `3.2.3` | `4.1` |\n| [python-dateutil](https://github.com/dateutil/dateutil) | `2.9.0` | `2.9.0.post0` |\n| [django-htmx](https://github.com/adamchainz/django-htmx) | `1.17.3` | `1.27.0` |\n| [django-components](https://github.com/django-components/django-components) | `0.37` | `0.149.0` |\n| [django-markdownify](https://github.com/erwinmatijsen/django-markdownify) | `0.9.3` | `0.9.6` |\n| [model-bakery](https://github.com/model-bakers/model_bakery) | `1.17.0` | `1.23.4` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.4` | `9.7.6` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.0` | `2.2.8` |\n| [mariadb](https://github.com/mariadb-corporation/mariadb-connector-python) | `1.1.8` | `1.1.14` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [black](https://github.com/psf/black) | `24.10.0` | `26.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [bump-my-version](https://github.com/callowayproject/bump-my-version) | `0.19.3` | `1.3.0` |\n\nUpdates `bleach` from 6.1.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.2.0 (October 29th, 2024)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove six depdenncy. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/618\"\u003e#618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known-good versions for tinycss2. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix additional \u0026lt; followed by characters and EOF issues. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.1.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.34.76 to 1.43.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/753bcab42942e4e0f6e3deb5e4eb5af40d0ffb8b\"\u003e\u003ccode\u003e753bcab\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dd5b3a659894c0c8c92c4c696625fe7735fddcb1\"\u003e\u003ccode\u003edd5b3a6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/014f4adb1a991f5575fca9688568a388e9f0d339\"\u003e\u003ccode\u003e014f4ad\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/32edf1c268b58c8e16e144271252ce90ebfdc1ef\"\u003e\u003ccode\u003e32edf1c\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.4 to 2.33.1 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4781\"\u003e#4781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/959ae842a0048833cab303e1cf88dfc523f604b1\"\u003e\u003ccode\u003e959ae84\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/146ede25caacdfdc8bff79cc8f5028292dfe41f6\"\u003e\u003ccode\u003e146ede2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/048bf84492d9d55b327a67f4ab07476eb62c2ee1\"\u003e\u003ccode\u003e048bf84\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/20381d5695aa766f041b42dcda9600e14f32bd15\"\u003e\u003ccode\u003e20381d5\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee6aa9711b74b165eac0b26bb724c7326791dc24\"\u003e\u003ccode\u003eee6aa97\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 support (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4770\"\u003e#4770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1780d6b791333f1279e03a04a2efc476af2af5d9\"\u003e\u003ccode\u003e1780d6b\u003c/code\u003e\u003c/a\u003e Remove CC-BY-NC-SA-4.0 license headers from docs files (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4778\"\u003e#4778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.34.76...1.43.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-storages` from 1.14.2 to 1.14.6\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jschneier/django-storages/blob/master/CHANGELOG.rst\"\u003edjango-storages's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.14.6 (2025-04-01)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eGoogle Cloud\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to sign URLs via IAM Blob API (\u003ccode\u003e[#1427](https://github.com/jschneier/django-storages/issues/1427)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eS3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eexists\u003c/code\u003e calls when using SSE-C (\u003ccode\u003e[#1451](https://github.com/jschneier/django-storages/issues/1451)\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eDefault \u003ccode\u003eurl_protocol\u003c/code\u003e to \u003ccode\u003ehttps:\u003c/code\u003e if set to \u003ccode\u003eNone\u003c/code\u003e (\u003ccode\u003e[#1483](https://github.com/jschneier/django-storages/issues/1483)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1427\"\u003e#1427\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/jschneier/django-storages/pull/1427\"\u003ejschneier/django-storages#1427\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1451\"\u003e#1451\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/jschneier/django-storages/pull/1451\"\u003ejschneier/django-storages#1451\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1483\"\u003e#1483\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/jschneier/django-storages/pull/1483\"\u003ejschneier/django-storages#1483\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e1.14.5 (2025-02-15)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eGeneral\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u003ccode\u003eexists()\u003c/code\u003e behavior to pre-1.14.4 semantics with additional hardening for Django versions \u0026lt; 4.2 to fix\nCVE-2024-39330. This change matches the eventual behavior Django itself shipped with. (\u003ccode\u003e[#1484](https://github.com/jschneier/django-storages/issues/1484)\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#1486](https://github.com/jschneier/django-storages/issues/1486)\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Django 5.1 (\u003ccode\u003e[#1444](https://github.com/jschneier/django-storages/issues/1444)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAzure\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDeprecated\u003c/strong\u003e: The setting \u003ccode\u003eAZURE_API_VERSION/api_version\u003c/code\u003e setting is deprecated in favor of\nthe new \u003ccode\u003eAZURE_CLIENT_OPTIONS\u003c/code\u003e setting. A future version will remove support for this setting.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eAZURE_CLIENT_OPTIONS\u003c/code\u003e settings to enable customization of all \u003ccode\u003eBlobServiceClient\u003c/code\u003e parameters\nsuch as \u003ccode\u003eapi_version\u003c/code\u003e and all \u003ccode\u003eretry*\u003c/code\u003e options. (\u003ccode\u003e[#1432](https://github.com/jschneier/django-storages/issues/1432)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDropbox\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAs part of the above hardening fix a bug was uncovered whereby a \u003ccode\u003eroot_path\u003c/code\u003e setting would be applied\nmultiple times during \u003ccode\u003esave()\u003c/code\u003e (\u003ccode\u003e[#1484](https://github.com/jschneier/django-storages/issues/1484)\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix setting OAuth2 access token via env var (\u003ccode\u003e[#1452](https://github.com/jschneier/django-storages/issues/1452)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFTP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003eexists()\u003c/code\u003e results due to an errant appended slash (\u003ccode\u003e[#1438](https://github.com/jschneier/django-storages/issues/1438)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGoogle Cloud\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/3658c3d2353b778a45b09dd7a55cbabc66d22381\"\u003e\u003ccode\u003e3658c3d\u003c/code\u003e\u003c/a\u003e Bump version for release (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1497\"\u003e#1497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/d51b0bf2e1421b56b5bc53a37aef685b27d5752d\"\u003e\u003ccode\u003ed51b0bf\u003c/code\u003e\u003c/a\u003e Release version 1.14.6 (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1496\"\u003e#1496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/6ef553dd8f898c756503902cbecd8d3c88ffda00\"\u003e\u003ccode\u003e6ef553d\u003c/code\u003e\u003c/a\u003e [s3] Default \u003ccode\u003eurl_protocol\u003c/code\u003e to \u003ccode\u003ehttps:\u003c/code\u003e if set to None (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1483\"\u003e#1483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/80031d313ea1872ea455fbbeacfd7cfc68900a77\"\u003e\u003ccode\u003e80031d3\u003c/code\u003e\u003c/a\u003e [docs/azure] Fix broken link (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1492\"\u003e#1492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/8363be34ad6b5c6607644c3dd166d6f6610c5db6\"\u003e\u003ccode\u003e8363be3\u003c/code\u003e\u003c/a\u003e [s3] Pass object parameters to head_object in \u003ccode\u003eexists\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/aa8a82e92837899b509386a2f52491ec01f26b47\"\u003e\u003ccode\u003eaa8a82e\u003c/code\u003e\u003c/a\u003e [docs/gcloud] Clean-up querystring auth language (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1489\"\u003e#1489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/758ad6f15dc97d1b754569f0c83121c8b92a1578\"\u003e\u003ccode\u003e758ad6f\u003c/code\u003e\u003c/a\u003e [gcloud] Add option to sign URLs via IAM Blob API (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1427\"\u003e#1427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/03566dc6fafe6415d2f90419a65e68b6b234c4d1\"\u003e\u003ccode\u003e03566dc\u003c/code\u003e\u003c/a\u003e Add missing CHANGELOG entry for Dropbox fix (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1488\"\u003e#1488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/3c0fe9f15a1f687afcd532d78a3e2cd37f87d8aa\"\u003e\u003ccode\u003e3c0fe9f\u003c/code\u003e\u003c/a\u003e Release version 1.14.5 (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1487\"\u003e#1487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/5db357a12d0089323d5d8b413a0a5305926cffb1\"\u003e\u003ccode\u003e5db357a\u003c/code\u003e\u003c/a\u003e Apply additional validation in overwrite path (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1486\"\u003e#1486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jschneier/django-storages/compare/1.14.2...1.14.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.1.1 to 12.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.2.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.2.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.2.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9522\"\u003e#9522\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd loader plugins: AMOS abk, Atari Degas, 40+ more obscure formats via Netpbm \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9482\"\u003e#9482\u003c/a\u003e [\u003ca href=\"https://github.com/bitplane\"\u003e\u003ccode\u003e@​bitplane\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9515\"\u003e#9515\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eJeffrey A. Clark -\u0026gt; Jeffrey 'Alex' Clark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9513\"\u003e#9513\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9394\"\u003e#9394\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9419\"\u003e#9419\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9456\"\u003e#9456\u003c/a\u003e \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9467\"\u003e#9467\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd Amiga Workbench .info loader to 3rd party plugins list \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9459\"\u003e#9459\u003c/a\u003e [\u003ca href=\"https://github.com/bitplane\"\u003e\u003ccode\u003e@​bitplane\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMerge PFM documentation into PPM \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9434\"\u003e#9434\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9431\"\u003e#9431\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix CVE number \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9430\"\u003e#9430\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate xz to 5.8.3 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9523\"\u003e#9523\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libjpeg-turbo to 3.1.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9507\"\u003e#9507\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libpng to 1.6.56 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9499\"\u003e#9499\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate freetype to 2.14.3 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9485\"\u003e#9485\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated libavif to 1.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9479\"\u003e#9479\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated harfbuzz to 13.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9461\"\u003e#9461\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Ghostscript to 10.7.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9469\"\u003e#9469\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate harfbuzz to 13.0.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9453\"\u003e#9453\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libavif to 1.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9460\"\u003e#9460\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate freetype to 2.14.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9449\"\u003e#9449\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate actions/download-artifact action to v8 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9451\"\u003e#9451\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated libpng to 1.6.55 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9425\"\u003e#9425\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup .spider extension in the same test where it is added \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9517\"\u003e#9517\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRun tests in parallel via tox for 3.5x speedup \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9516\"\u003e#9516\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eEnable colour in CI logs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9486\"\u003e#9486\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Ghostscript to 10.7.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9469\"\u003e#9469\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSimplify TGA test code \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9477\"\u003e#9477\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate tests to check for ValueError when encoding an empty image \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9464\"\u003e#9464\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpgrade CI from \u003ccode\u003emacos-15-intel\u003c/code\u003e to \u003ccode\u003emacos-26-intel\u003c/code\u003e \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9454\"\u003e#9454\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd check-case-conflict hook \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9446\"\u003e#9446\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSpecify platform when pulling docker image \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9440\"\u003e#9440\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eGHA: Cache libavif and webp builds for Ubuntu \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9437\"\u003e#9437\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9431\"\u003e#9431\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCheck calloc return value \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9527\"\u003e#9527\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eCheck all allocs in the Arrow tree \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9488\"\u003e#9488\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eReject non-numeric elements inside list coords \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9526\"\u003e#9526\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove variable declaration inside define \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9525\"\u003e#9525\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/3c41c095064200a02672d89cc5ff629eaf4b0d4f\"\u003e\u003ccode\u003e3c41c09\u003c/code\u003e\u003c/a\u003e 12.2.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cdaa29eb520291c4f1fb50fb71ae46502d41e460\"\u003e\u003ccode\u003ecdaa29e\u003c/code\u003e\u003c/a\u003e Check calloc return value (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9527\"\u003e#9527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/585b2f5a780722c8a5bfffb3a40f7f42e8a205be\"\u003e\u003ccode\u003e585b2f5\u003c/code\u003e\u003c/a\u003e Check calloc return value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/ecf011ea15991d4cebacd946e58270cc30b0f2c1\"\u003e\u003ccode\u003eecf011e\u003c/code\u003e\u003c/a\u003e Check all allocs in the Arrow tree (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9488\"\u003e#9488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cf6de8ca9b23e714aa5310e1c791eda66fc0b670\"\u003e\u003ccode\u003ecf6de8c\u003c/code\u003e\u003c/a\u003e Reject non-numeric elements inside list coords (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9526\"\u003e#9526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/ffdcede6516b28d9667c92929854023d17048b64\"\u003e\u003ccode\u003effdcede\u003c/code\u003e\u003c/a\u003e Update 12.2.0 release notes (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9522\"\u003e#9522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/7929d7760fe5a307ba5ae6eabdf70ae4486b147c\"\u003e\u003ccode\u003e7929d77\u003c/code\u003e\u003c/a\u003e Added security release notes (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/c4f7aa5dfb4dbd1242978ac235e01b9934ec6d3c\"\u003e\u003ccode\u003ec4f7aa5\u003c/code\u003e\u003c/a\u003e Added security release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/22cdb5f2e4b15250c06563b1124ac1667342712f\"\u003e\u003ccode\u003e22cdb5f\u003c/code\u003e\u003c/a\u003e Move variable declaration inside define (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9525\"\u003e#9525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/fc15b3b01899408ec989d7804c5283e13802d057\"\u003e\u003ccode\u003efc15b3b\u003c/code\u003e\u003c/a\u003e Resize tall images vertically first (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9524\"\u003e#9524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 5.2.12 to 5.2.13\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/7d831a9eeb88a6bf484af7b56fe29596bdbf09a6\"\u003e\u003ccode\u003e7d831a9\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.13 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49e1e2b548999a35a025f9682598946bda9e9921\"\u003e\u003ccode\u003e49e1e2b\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-33034 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE on body ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/0b467893bdde69a2d23034338e76021a1e4f4322\"\u003e\u003ccode\u003e0b46789\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-33033 -- Mitigated potential DoS in MultiPartParser.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/397c22048244db2cd4bb78f570e6c72a3967bf36\"\u003e\u003ccode\u003e397c220\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-4292 -- Disallowed instance creation via ModelAdmin.li...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/60ffa957c427e10a2eb0fc80d1674a8a8ccc30b0\"\u003e\u003ccode\u003e60ffa95\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-4277 -- Checked add permissions in GenericInlineModelA...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1cc2a7612f97c109b92415fc11ba9bd0501852e0\"\u003e\u003ccode\u003e1cc2a76\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-3902 -- Ignored headers with underscores in ASGIRequest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2a8a76a002774e3f6bc10188594593e0104ceb66\"\u003e\u003ccode\u003e2a8a76a\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.13 and 4.2.30.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/90924f5276de80a74ffbc51126ed81595dd2157a\"\u003e\u003ccode\u003e90924f5\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped black to 26.3.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/0ee44c674cf61efbca2056c40f3e4f2335aaeee6\"\u003e\u003ccode\u003e0ee44c6\u003c/code\u003e\u003c/a\u003e [5.2.x] Applied Black's 2026 stable style.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/89b4d944f7e331e267aa1030e295f29355b78172\"\u003e\u003ccode\u003e89b4d94\u003c/code\u003e\u003c/a\u003e [5.2.x] Combined scripts confirm_release.sh and test_new_version.sh into veri...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/5.2.12...5.2.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 5.3.1 to 7.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix AttributeError in cluster metrics recording when connection is None or ClusterNode object instance is used to extract the connection info (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords might leak in plain text logs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cp\u003e-Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpose basic Otel classes and functions to be importable through redis.observability to match the examples in the readthedocs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b72f24ad6a2226d46aed770e18094a86117d2217\"\u003e\u003ccode\u003eb72f24a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0a4e0afe36504c3fb6df1e38683ea946febac9d3\"\u003e\u003ccode\u003e0a4e0af\u003c/code\u003e\u003c/a\u003e Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/15492c9156d3ab8dce05360977480510cf24fbf9\"\u003e\u003ccode\u003e15492c9\u003c/code\u003e\u003c/a\u003e Refactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cd964ac96649df872a051835e9a52e05a5090607\"\u003e\u003ccode\u003ecd964ac\u003c/code\u003e\u003c/a\u003e Expose basic Otel classes and funtions to be importable through redis.observa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ab74d02ed9b15176f67edb817de83524f8145a\"\u003e\u003ccode\u003e46ab74d\u003c/code\u003e\u003c/a\u003e Fixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/26482dbaae38abdb1966d9b1c803331e2dab2053\"\u003e\u003ccode\u003e26482db\u003c/code\u003e\u003c/a\u003e Fix AttributeError in cluster metrics recording when connection is None or Cl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v5.3.1...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9928\"\u003eencode/django-rest-framework#9928\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9849\"\u003eencode/django-rest-framework#9849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `setuptools` from 78.1.1 to 82.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.1\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the loading of \u003ccode\u003elauncher manifest.xml\u003c/code\u003e file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5047\"\u003e#5047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003ejson.__version__\u003c/code\u003e with fixture in tests. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5186\"\u003e#5186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd advice about how to improve predictability when installing sdists. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5168\"\u003e#5168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4941\"\u003e#4941\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5\"\u003e\u003ccode\u003e5a13876\u003c/code\u003e\u003c/a\u003e Bump version: 82.0.0 → 82.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8\"\u003e\u003ccode\u003e51ab8f1\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5194\"\u003e#5194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6\"\u003e\u003ccode\u003ef9c37b2\u003c/code\u003e\u003c/a\u003e Docs/CI: Fix intersphinx references (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5195\"\u003e#5195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8\"\u003e\u003ccode\u003e8173db2\u003c/code\u003e\u003c/a\u003e Docs: Fix intersphinx references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141\"\u003e\u003ccode\u003e09bafbc\u003c/code\u003e\u003c/a\u003e Fix past tense on newsfragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde\"\u003e\u003ccode\u003e461ea56\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae\"\u003e\u003ccode\u003ec4ffe53\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe\"\u003e\u003ccode\u003e749258b\u003c/code\u003e\u003c/a\u003e Cleanup \u003ccode\u003epkg_resources\u003c/code\u003e dependencies and configuration (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206\"\u003e\u003ccode\u003e2019c16\u003c/code\u003e\u003c/a\u003e Parse \u003ccode\u003eext-module.define-macros\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e as list of tuples (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685\"\u003e\u003ccode\u003eb809c86\u003c/code\u003e\u003c/a\u003e Sync setuptools schema with validate-pyproject (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v78.1.1...v82.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `stripe` from 10.12.0 to 15.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/releases\"\u003estripe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1.0\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-04-22.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1793\"\u003e#1793\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebalance_report\u003c/code\u003e and \u003ccode\u003epayout_reconciliation_report\u003c/code\u003e on \u003ccode\u003eAccountSession.Component\u003c/code\u003e and \u003ccode\u003eAccountSessionCreateParamsComponent\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eapp_distribution\u003c/code\u003e and \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eAccount.Capability\u003c/code\u003e, \u003ccode\u003eAccountCreateParamsCapability\u003c/code\u003e, and \u003ccode\u003eAccountModifyParamsCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003efee_credit_funding\u003c/code\u003e, \u003ccode\u003einbound_transfer_reversal\u003c/code\u003e, and \u003ccode\u003einbound_transfer\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview\u003c/code\u003e, \u003ccode\u003eConfirmationTokenCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationModifyParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfiguration\u003c/code\u003e, \u003ccode\u003ePaymentMethodCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethod\u003c/code\u003e, \u003ccode\u003ePaymentRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, and \u003ccode\u003eSetupIntentModifyParamsPaymentMethodDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003ephantom_cash\u003c/code\u003e and \u003ccode\u003eusdt\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elocation\u003c/code\u003e and \u003ccode\u003ereader\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Klarna\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Klarna\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Klarna\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Pix\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emanaged_payments\u003c/code\u003e on \u003ccode\u003eCheckout.Session\u003c/code\u003e, \u003ccode\u003ePaymentIntent\u003c/code\u003e, \u003ccode\u003ePaymentLinkCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentLink\u003c/code\u003e, \u003ccode\u003eSetupIntent\u003c/code\u003e, \u003ccode\u003eSubscription\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentIntentConfirmParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams.excluded_payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate_options\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange type of \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e from \u003ccode\u003eliteral('none')\u003c/code\u003e to \u003ccode\u003eenum('none'|'off_session')\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enum \u003ccode\u003echeckout.SessionCreateParams.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003efo_vat\u003c/code\u003e, \u003ccode\u003egi_tin\u003c/code\u003e, \u003ccode\u003eit_cf\u003c/code\u003e, and \u003ccode\u003epy_ruc\u003c/code\u003e on enums \u003ccode\u003eCheckout.Session.CustomerDetail.TaxId.type\u003c/code\u003e, \u003ccode\u003eInvoice.CustomerTaxId.type\u003c/code\u003e, \u003ccode\u003eTax.Calculation.CustomerDetail.TaxId.type\u003c/code\u003e, \u003ccode\u003eTax.Transaction.CustomerDetail.TaxId.type\u003c/code\u003e, and \u003ccode\u003eTaxId.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change type of \u003ccode\u003eCheckout.Session.PaymentMethodOption.Pix.setup_future_usage\u003c/code\u003e and \u003ccode\u003ePaymentIntent.PaymentMethodOption.Pix.setup_future_usage\u003c/code\u003e from \u003ccode\u003eliteral('none')\u003c/code\u003e to \u003ccode\u003eenum('none'|'off_session')\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003eConfirmationTokenCreateParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodDatum.type\u003c/code\u003e, and \u003ccode\u003eSetupIntentModifyParamsPaymentMethodDatum.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003eConfirmationToken.PaymentMethodPreview.type\u003c/code\u003e and \u003ccode\u003ePaymentMethod.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new values \u003ccode\u003efo_vat\u003c/code\u003e, \u003ccode\u003egi_tin\u003c/code\u003e, \u003ccode\u003eit_cf\u003c/code\u003e, and \u003ccode\u003epy_ruc\u003c/code\u003e on enums \u003ccode\u003eCustomerCreateParamsTaxIdDatum.type\u003c/code\u003e, \u003ccode\u003eCustomerCreateTaxIdParams.type\u003c/code\u003e, \u003ccode\u003eInvoiceCreatePreviewParamsCustomerDetailTaxId.type\u003c/code\u003e, \u003ccode\u003eTaxIdCreateParams.type\u003c/code\u003e, and \u003ccode\u003etax.CalculationCreateParamsCustomerDetailTaxId.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003eCustomerListPaymentMethodsParams.type\u003c/code\u003e, \u003ccode\u003ePaymentMethodCreateParams.type\u003c/code\u003e, and \u003ccode\u003ePaymentMethodListParams.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epix\u003c/code\u003e on \u003ccode\u003eInvoice.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eMandate.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupAttempt.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupIntent.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSetupIntentModifyParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscription.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eupi\u003c/code\u003e on \u003ccode\u003eInvoice.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscription.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new values \u003ccode\u003epix\u003c/code\u003e and \u003ccode\u003eupi\u003c/code\u003e on enums \u003ccode\u003eInvoiceCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003epix\u003c/code\u003e and \u003ccode\u003eupi\u003c/code\u003e on enums \u003ccode\u003eInvoice.PaymentSetting.payment_method_types\u003c/code\u003e and \u003ccode\u003eSubscription.PaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecard_presence\u003c/code\u003e on \u003ccode\u003eIssuing.Authorization\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eallowed_card_presences\u003c/code\u003e and \u003ccode\u003eblocked_card_presences\u003c/code\u003e on \u003ccode\u003eIssuing.Card.SpendingControl\u003c/code\u003e, \u003ccode\u003eIssuing.Cardholder.SpendingControl\u003c/code\u003e, \u003ccode\u003eissuing.CardCreateParamsSpendingControl\u003c/code\u003e, \u003ccode\u003eissuing.CardModifyParamsSpendingControl\u003c/code\u003e, \u003ccode\u003eissuing.CardholderCreateParamsSpendingControl\u003c/code\u003e, and \u003ccode\u003eissuing.CardholderModifyParamsSpendingControl\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003efulfillment_error\u003c/code\u003e on enum \u003ccode\u003eIssuing.Card.cancellation_reason\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003efulfillment_error\u003c/code\u003e on enum \u003ccode\u003eIssuing.Card.replacement_reason\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eamount\u003c/code\u003e and \u003ccode\u003ecurrency\u003c/code\u003e on \u003ccode\u003eMandate.MultiUse\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eamount_to_confirm\u003c/code\u003e on \u003ccode\u003ePaymentIntentConfirmParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentIntent.excluded_payment_method_types\u003c/code\u003e and \u003ccode\u003eSetupIntent.excluded_payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eklarna_display_qr_code\u003c/code\u003e on \u003ccode\u003ePaymentIntent.NextAction\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentLinkCreateParams.payment_method_types\u003c/code\u003e and \u003ccode\u003ePaymentLinkModifyParams.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit\u003c/code\u003e on enum \u003ccode\u003ePaymentLink.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003elow\u003c/code\u003e, \u003ccode\u003enot_assessed\u003c/code\u003e, and \u003ccode\u003eunknown\u003c/code\u003e on enum \u003ccode\u003eRadar.PaymentEvaluation.Signal.FraudulentPayment.risk_level\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003eaccount\u003c/code\u003e on enum \u003ccode\u003eradar.ValueListCreateParams.item_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003eaccount\u003c/code\u003e on enum \u003ccode\u003eRadar.ValueList.item_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emoto\u003c/code\u003e on \u003ccode\u003eSetupAttempt.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epix_display_qr_code\u003c/code\u003e on \u003ccode\u003eSetupIntent.NextAction\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003e2026-04-22.dahlia\u003c/code\u003e on enum \u003ccode\u003eWebhookEndpointCreateParams.api_version\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for error codes \u003ccode\u003eaction_blocked\u003c/code\u003e and \u003ccode\u003eapproval_required\u003c/code\u003e on \u003ccode\u003eInvoice.LastFinalizationError\u003c/code\u003e, \u003ccode\u003ePaymentIntent.LastPaymentError\u003c/code\u003e, \u003ccode\u003eSetupAttempt.SetupError\u003c/code\u003e, \u003ccode\u003eSetupIntent.LastSetupError\u003c/code\u003e, and \u003ccode\u003eStripeError\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.1.0/CHANGELOG.md\"\u003ethe changelog for more details\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev15.1.0b2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePlease refer to the changelog for \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.0.1/CHANGELOG.md#1501---2026-04-01\"\u003ev15.0.1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.1.0b2/CHANGELOG.md\"\u003ethe changelog for more details\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/blob/master/CHANGELOG.md\"\u003estripe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e15.1.0 - 2026-04-23\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-04-22.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1793\"\u003e#1793\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebalance_report\u003c/code\u003e and \u003ccode\u003epayout_reconciliation_report\u003c/code\u003e on \u003ccode\u003eAccountSession.Component\u003c/code\u003e and \u003ccode\u003eAccountSessionCreateParamsComponent\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eapp_distribution\u003c/code\u003e and \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eAccount.Capability\u003c/code\u003e, \u003ccode\u003eAccountCreateParamsCapability\u003c/code\u003e, and \u003ccode\u003eAccountModifyParamsCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003efee_credit_funding\u003c/code\u003e, \u003ccode\u003einbound_transfer_reversal\u003c/code\u003e, and \u003ccode\u003einbound_transfer\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview\u003c/code\u003e, \u003ccode\u003eConfirmationTokenCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationModifyParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfiguration\u003c/code\u003e, \u003ccode\u003ePaymentMethodCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethod\u003c/code\u003e, \u003ccode\u003ePaymentRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, and \u003ccode\u003eSetupIntentModifyParamsPaymentMethodDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003ephantom_cash\u003c/code\u003e and \u003ccode\u003eusdt\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elocation\u003c/code\u003e and \u003ccode\u003ereader\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Klarna\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Klarna\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Klarna\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Pix\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emanaged_payments\u003c/code\u003e on \u003ccode\u003eCheckout.Session\u003c/code\u003e, \u003ccode\u003ePaymentIntent\u003c/code\u003e, \u003ccode\u003ePaymentLinkCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentLink\u003c/code\u003e, \u003ccode\u003eSetupIntent\u003c/code\u003e, \u003ccode\u003eSubscription\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentIntentConfirmParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams.excluded_payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate_options\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange type of \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e from \u003ccode\u003eliteral('none')\u003c/code\u003e to \u003ccode\u003eenum('none'|'off_session')\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunb...\n\n_Description has been truncated_","html_url":"https://github.com/TreyWW/MyFinances/pull/659","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TreyWW%2FMyFinances/issues/659","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/659/packages"},{"uuid":"4336319422","node_id":"PR_kwDOAG7wis7V_UjU","number":4756,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-27T14:02:20.000Z","updated_at":"2026-04-27T14:03:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":8,"packages":[{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"1.16.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.12.1","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.29.0","repository_url":"https://github.com/pypa/hatch"},{"name":"types-requests","old_version":"2.32.4.20250611","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.8.0.20250415","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"sphinx-book-theme","old_version":"1.1.4","new_version":"1.2.0","repository_url":"https://github.com/executablebooks/sphinx-book-theme"},{"name":"sphinx-autoapi","old_version":"3.6.0","new_version":"3.8.0","repository_url":"https://github.com/readthedocs/sphinx-autoapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [mypy](https://github.com/python/mypy) | `1.16.1` | `1.20.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.1` | `0.15.11` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.29.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250611` | `2.33.0.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.8.0.20250415` | `3.10.2.20260408` |\n| [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme) | `1.1.4` | `1.2.0` |\n| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi) | `3.6.0` | `3.8.0` |\n\n\nUpdates `pre-commit` from 4.3.0 to 4.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.1 - 2025-12-16\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8a0630ca1aa7f6d5665effe674ebe2022af17919\"\u003e\u003ccode\u003e8a0630c\u003c/code\u003e\u003c/a\u003e v4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fcbc745744377ef2c9fe6a7e1a21c67d797933dc\"\u003e\u003ccode\u003efcbc745\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e from pre-commit/empty-setup-py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/51592eececd13b99c40ec477ad8f810799147227\"\u003e\u003ccode\u003e51592ee\u003c/code\u003e\u003c/a\u003e fix python local template when artifact dirs are present\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/67e8faf80baffcb4b79c31b89ca9a413a1cd6776\"\u003e\u003ccode\u003e67e8faf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3596\"\u003e#3596\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c251e6b6d011b3b262339dc8e109de29b0ff8db1\"\u003e\u003ccode\u003ec251e6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/98ccafa3ce42b846b9a9be9ed73fbbec7415496d\"\u003e\u003ccode\u003e98ccafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3593\"\u003e#3593\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/48953556d06f8cdb4248002c1a0044e69e0916b3\"\u003e\u003ccode\u003e4895355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2cedd58e691f4d3bc6ab266c7d7c28464c3502be\"\u003e\u003ccode\u003e2cedd58\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3588\"\u003e#3588\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/465192d7de58d569776eaaa818c94cb2b962d436\"\u003e\u003ccode\u003e465192d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fd42f96874279c4f65363bfea5238714419e54d7\"\u003e\u003ccode\u003efd42f96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3586\"\u003e#3586\u003c/a\u003e from pre-commit/zipapp-sha256-file-not-needed\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.3.0...v4.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.16.1 to 1.20.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.20.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways disable sync in SQLite cache (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21184\"\u003e21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTemporarily skip few base64 tests (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21193\"\u003e21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u003ccode\u003edict.__or__\u003c/code\u003e typeshed change (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21186\"\u003e21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing for match case with variadic tuples (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21192\"\u003e21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing \u003ccode\u003etype[T]\u003c/code\u003e in type calls (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21174\"\u003e21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression for catching empty tuple in except (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21153\"\u003e21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix reachability for frozenset and dict view narrowing (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21151\"\u003e21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing with chained comparison (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21150\"\u003e21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing to unreachable at module level (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21144\"\u003e21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow dangerous identity comparisons to \u003ccode\u003eAny\u003c/code\u003e typed variables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21142\"\u003e21142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--warn-unused-config\u003c/code\u003e should not be a strict flag (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21139\"\u003e21139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMypy 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c60e8bfcb5910974b577e443725c475e0485d269\"\u003e\u003ccode\u003ec60e8bf\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/842e4927738264949e969df0c2ee285a13594d06\"\u003e\u003ccode\u003e842e492\u003c/code\u003e\u003c/a\u003e Always disable sync in SQLite cache (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21184\"\u003e#21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e82a046356b242441fcd55c8cf922c7904ef311a\"\u003e\u003ccode\u003ee82a046\u003c/code\u003e\u003c/a\u003e Temporarily skip few base64 tests (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21193\"\u003e#21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f7fa418b6504e20c1277947e03a6db2f6d03e13e\"\u003e\u003ccode\u003ef7fa418\u003c/code\u003e\u003c/a\u003e Revert dict.\u003cstrong\u003eor\u003c/strong\u003e typeshed change (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a2e8ee1afd5bbda26ad301496685295b1a7997a3\"\u003e\u003ccode\u003ea2e8ee1\u003c/code\u003e\u003c/a\u003e Fix narrowing for match case with variadic tuples (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21192\"\u003e#21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/521f88f510c2065132909928815f08502097ceea\"\u003e\u003ccode\u003e521f88f\u003c/code\u003e\u003c/a\u003e Avoid narrowing type[T] in type calls (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21174\"\u003e#21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4876e9186b927fe4777609fc9932752dcfb7047\"\u003e\u003ccode\u003ea4876e9\u003c/code\u003e\u003c/a\u003e Fix regression for catching empty tuple in except (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21153\"\u003e#21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6fccffcac0c8c24034d4f2b262ca7e5564ba9375\"\u003e\u003ccode\u003e6fccffc\u003c/code\u003e\u003c/a\u003e Fix reachability for frozenset and dict view narrowing (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21151\"\u003e#21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/de50419dc84a66f0e8606308023f81a44dee54f3\"\u003e\u003ccode\u003ede50419\u003c/code\u003e\u003c/a\u003e Fix narrowing with chained comparison (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21150\"\u003e#21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/eafcf18ff1d83923c0f749cf3056962df63ed693\"\u003e\u003ccode\u003eeafcf18\u003c/code\u003e\u003c/a\u003e Avoid narrowing to unreachable at module level (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21144\"\u003e#21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.16.1...v1.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.1 to 0.15.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.11\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.11\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/53554b1cfe837f2eb992a81794480699478f1116\"\u003e\u003ccode\u003e53554b1\u003c/code\u003e\u003c/a\u003e Bump 0.15.11 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24678\"\u003e#24678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/08c56c83cffbb1025cbf5bdede6c6d8be591cf47\"\u003e\u003ccode\u003e08c56c8\u003c/code\u003e\u003c/a\u003e Factor out the \u003ccode\u003emdtest\u003c/code\u003e crate (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24616\"\u003e#24616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/725fbb736d2a999971449b61190b914abd26102a\"\u003e\u003ccode\u003e725fbb7\u003c/code\u003e\u003c/a\u003e [ty] Use partially qualified names when reporting diagnostics regarding bad c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ddd6a30ff5fa27694dc1c50d0749885a1519d0a7\"\u003e\u003ccode\u003eddd6a30\u003c/code\u003e\u003c/a\u003e [ty] Do not suggest argument completion when at value of keyword argument (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9282e61d482a36da08d66bb8271afeef50b3bc45\"\u003e\u003ccode\u003e9282e61\u003c/code\u003e\u003c/a\u003e Disallow \u003ca href=\"https://github.com/disjoint\"\u003e\u003ccode\u003e@​disjoint\u003c/code\u003e\u003c/a\u003e_base on TypedDicts and Protocols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9986d8e3008eefe2e387312c4dc8b9c60f6f362\"\u003e\u003ccode\u003ee9986d8\u003c/code\u003e\u003c/a\u003e [ty] Reject using properties with \u003ccode\u003eNever\u003c/code\u003e setters or deleters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24510\"\u003e#24510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9cf212ff82f7b66b4a275ad6a9b1564aee1fa4a8\"\u003e\u003ccode\u003e9cf212f\u003c/code\u003e\u003c/a\u003e [ty] Normalize property setter and deleter wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24509\"\u003e#24509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/12a1589de4d7120cf99441ee4c14871bdc20968d\"\u003e\u003ccode\u003e12a1589\u003c/code\u003e\u003c/a\u003e Add override mention to ASYNC109 docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dccb03d010f4442ed60624f8d2ba932706abaabb\"\u003e\u003ccode\u003edccb03d\u003c/code\u003e\u003c/a\u003e [ty] Avoid panicking on overloaded \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24661\"\u003e#24661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/61f9a0a5763fb068cd2f26c0ee9d63a277fb26c2\"\u003e\u003ccode\u003e61f9a0a\u003c/code\u003e\u003c/a\u003e [ty] Sync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24646\"\u003e#24646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.1...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hatchling` from 1.27.0 to 1.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/hatch/releases\"\u003ehatchling's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHatchling v1.29.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eFixed:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSource Date Epoch no longer fails when set to date before 1980.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHatchling v1.28.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eChanged:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAdded:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esbom-files\u003c/code\u003e option and \u003ccode\u003esbom_files\u003c/code\u003e build data to the \u003ccode\u003ewheel\u003c/code\u003e build target for including Software Bill of Materials files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/1a74daa6f554e2ec89f2641288e44ed39e5507cc\"\u003e\u003ccode\u003e1a74daa\u003c/code\u003e\u003c/a\u003e Noqa release command to unblock GHA for PRs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/78065f4c54ff16b72e92158f3547d61e420a93f7\"\u003e\u003ccode\u003e78065f4\u003c/code\u003e\u003c/a\u003e For Immutable Releases  (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2188\"\u003e#2188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/592c0a9c8cbd3e1b5d90cab57af5c17d7484037d\"\u003e\u003ccode\u003e592c0a9\u003c/code\u003e\u003c/a\u003e release Hatchling v1.29.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2186\"\u003e#2186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/874059b82d06320d2e15ef909fbdc186a88bcdcc\"\u003e\u003ccode\u003e874059b\u003c/code\u003e\u003c/a\u003e Prerelease doc updates. (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/0e31bb64ec76afe9736500cafb6984ddc9c4de6d\"\u003e\u003ccode\u003e0e31bb6\u003c/code\u003e\u003c/a\u003e Immutable releases ci (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2182\"\u003e#2182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/f400be159bbd7c016ba5dc591a43753b193eadab\"\u003e\u003ccode\u003ef400be1\u003c/code\u003e\u003c/a\u003e Support a SOURCE_DATE_EPOCH prior to 1980 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/47b55ce0a9907302583db845c14bf5457432c80f\"\u003e\u003ccode\u003e47b55ce\u003c/code\u003e\u003c/a\u003e Fixing failing tests for changes in Rich markdown rendering (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2172\"\u003e#2172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/cc4acd668663b60e28f396c540c7acabe09f90be\"\u003e\u003ccode\u003ecc4acd6\u003c/code\u003e\u003c/a\u003e Add a note guiding users to include SBOM files in the source distribution (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/9068758886e57751ff71a59520dcf576c7deea0b\"\u003e\u003ccode\u003e9068758\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2164\"\u003e#2164\u003c/a\u003e keep_env type error for hatch shell (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/bc31cfccc15283a49f62024d3607c7bfad01abe0\"\u003e\u003ccode\u003ebc31cfc\u003c/code\u003e\u003c/a\u003e Fix warning and tests with packaging 26.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/hatch/compare/hatchling-v1.27.0...hatchling-v1.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.32.4.20250611 to 2.33.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250415 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-book-theme` from 1.1.4 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/releases\"\u003esphinx-book-theme's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/blob/main/CHANGELOG.md\"\u003esphinx-book-theme's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.2 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.1...3da24da74f6042599fe6c9e2d612f5cbdef42280\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/818\"\u003e#818\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: correct event-handler signature \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/817\"\u003e#817\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2024-02-13\u0026amp;to=2024-02-13\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2024-02-13..2024-02-13\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.0...9335ab99b0bc77b826cb2c5afcef3432f14e8780\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version for 1.1.1 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/815\"\u003e#815\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: use \u003ccode\u003econfig-inited\u003c/code\u003e event to register config \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/814\"\u003e#814\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther merged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild(deps): Bump actions/setup-python from 4 to 5 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/803\"\u003e#803\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/801\"\u003e#801\u003c/a\u003e (\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/30f968ff990ef25ab5f38ff0dd26a10add814512\"\u003e\u003ccode\u003e30f968f\u003c/code\u003e\u003c/a\u003e Release v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/b78d24f6105cc91c41f18b3bf8f2e2a54c6c1f95\"\u003e\u003ccode\u003eb78d24f\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/0415925b138a66229afb10c475663ea76d8dd480\"\u003e\u003ccode\u003e0415925\u003c/code\u003e\u003c/a\u003e MAINT: ignore bots in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/5797d88ca3e42188c9eaf163c4680a6af67a1f13\"\u003e\u003ccode\u003e5797d88\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/927\"\u003e#927\u003c/a\u003e from bsipocz/MAINT_sphinx_dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/f23d0946c74520fa3a9f358f33f612bc19668d79\"\u003e\u003ccode\u003ef23d094\u003c/code\u003e\u003c/a\u003e CI: Adding workaround for autodoc typehint parsing issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8747e975f96c001a299b2a773fe2c8accac76ffe\"\u003e\u003ccode\u003e8747e97\u003c/code\u003e\u003c/a\u003e MAINT: dropping sphinx\u0026lt;7 and python\u0026lt;3.11 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/ffac4dee8755ff8cfd6ae1130a7e70e94ad0fa99\"\u003e\u003ccode\u003effac4de\u003c/code\u003e\u003c/a\u003e MAINT: using python 3.12 for RTD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/cb587276c919c90787b87d56292c3e53ac607d8a\"\u003e\u003ccode\u003ecb58727\u003c/code\u003e\u003c/a\u003e MAINT: min pin for ablog due to sphinx9 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8cc45e4ef5e0d474869355e4240bd4d65b24dff0\"\u003e\u003ccode\u003e8cc45e4\u003c/code\u003e\u003c/a\u003e CI: ignore linkchecking URLs where anchors throw 403\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/d521920234ab145a573b2398777e4c022df36340\"\u003e\u003ccode\u003ed521920\u003c/code\u003e\u003c/a\u003e MAINT: adding sphinx9 and python 3.14 to testing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-autoapi` from 3.6.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/releases\"\u003esphinx-autoapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding autoapi_follow_symlinks, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PythonFunction.overloads typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1\u003c/h2\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid. Fix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst\"\u003esphinx-autoapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0 (2026-03-07)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0 (2026-02-10)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding \u003ccode\u003eautoapi_follow_symlinks\u003c/code\u003e, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePythonFunction.overloads\u003c/code\u003e typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1 (2025-10-06)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid.\nFix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/75cbffdea08771a0c574814053359b28dc7dfe85\"\u003e\u003ccode\u003e75cbffd\u003c/code\u003e\u003c/a\u003e Version 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/7838cf6937000a84ca8cb13a7d76e03b0084a7f3\"\u003e\u003ccode\u003e7838cf6\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/f1cdd302336455bee67a6dbc9ea2742fad17a756\"\u003e\u003ccode\u003ef1cdd30\u003c/code\u003e\u003c/a\u003e Attempt to fix macos-latest build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/34bb24ccc9de3be61c63a9c8b38458d06ea11eb3\"\u003e\u003ccode\u003e34bb24c\u003c/code\u003e\u003c/a\u003e Autodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/ccb2e898cb8b3becf04eba76f5449e29d336215e\"\u003e\u003ccode\u003eccb2e89\u003c/code\u003e\u003c/a\u003e astroid requirement is consistent across all versions of Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/0917ed2d4a42fa4ddd3668247d10ca6d902d7ada\"\u003e\u003ccode\u003e0917ed2\u003c/code\u003e\u003c/a\u003e Version 3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/394beb453256c9c15a30cb5851682fed2a844fc4\"\u003e\u003ccode\u003e394beb4\u003c/code\u003e\u003c/a\u003e Add warning for missing import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/96cd74d1a015a05bf4409a73b173dcdf8421902a\"\u003e\u003ccode\u003e96cd74d\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/c248b85d66c233a4673c64944bdeeb394be5116a\"\u003e\u003ccode\u003ec248b85\u003c/code\u003e\u003c/a\u003e Render typing_extensions.TypeAlias like other type aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/a2f49c9689ba76d5518c33fb509c57b5141342df\"\u003e\u003ccode\u003ea2f49c9\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/compare/v3.6.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ankitects/anki/pull/4756","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitects%2Fanki/issues/4756","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4756/packages"},{"uuid":"4305472026","node_id":"PR_kwDOR7xeb87UcWzZ","number":37,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 45 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T00:31:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-21T21:49:35.000Z","updated_at":"2026-05-13T00:31:58.000Z","time_to_close":1824141,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":45,"packages":[{"name":"faker","old_version":"40.12.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.39.0","new_version":"1.39.3","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20260402","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260402","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20260402","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20260402","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260402","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20260402","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260324","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260402","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260403","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260402","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260406","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260402","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.4.4.20260405","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20260402","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20260402","new_version":"3.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260402","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260402","new_version":"4.67.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.83","new_version":"1.42.92","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.11","new_version":"6.152.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260402","new_version":"2.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260402","new_version":"82.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.20.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.59.1","new_version":"0.62.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 45 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.12.0` | `40.15.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.11` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20260402` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260402` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20260402` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20260402` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260402` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20260402` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260324` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260402` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260403` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260402` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260406` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260402` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260402` | `311.0.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.4.4.20260405` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20260402` | `2.1.0.20260408` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20260402` | `3.20.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260402` | `2.18.0.20260408` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260402` | `4.67.3.20260408` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.83` | `1.42.92` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260408` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.11` | `6.152.1` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260402` | `2.0.0.20260408` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260402` | `82.0.0.20260408` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `1.20.2` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.59.1` | `0.62.0` |\n\n\nUpdates `faker` from 40.12.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.39.0 to 1.39.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.9 to 0.15.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.11\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.11\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/53554b1cfe837f2eb992a81794480699478f1116\"\u003e\u003ccode\u003e53554b1\u003c/code\u003e\u003c/a\u003e Bump 0.15.11 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24678\"\u003e#24678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/08c56c83cffbb1025cbf5bdede6c6d8be591cf47\"\u003e\u003ccode\u003e08c56c8\u003c/code\u003e\u003c/a\u003e Factor out the \u003ccode\u003emdtest\u003c/code\u003e crate (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24616\"\u003e#24616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/725fbb736d2a999971449b61190b914abd26102a\"\u003e\u003ccode\u003e725fbb7\u003c/code\u003e\u003c/a\u003e [ty] Use partially qualified names when reporting diagnostics regarding bad c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ddd6a30ff5fa27694dc1c50d0749885a1519d0a7\"\u003e\u003ccode\u003eddd6a30\u003c/code\u003e\u003c/a\u003e [ty] Do not suggest argument completion when at value of keyword argument (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9282e61d482a36da08d66bb8271afeef50b3bc45\"\u003e\u003ccode\u003e9282e61\u003c/code\u003e\u003c/a\u003e Disallow \u003ca href=\"https://github.com/disjoint\"\u003e\u003ccode\u003e@​disjoint\u003c/code\u003e\u003c/a\u003e_base on TypedDicts and Protocols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9986d8e3008eefe2e387312c4dc8b9c60f6f362\"\u003e\u003ccode\u003ee9986d8\u003c/code\u003e\u003c/a\u003e [ty] Reject using properties with \u003ccode\u003eNever\u003c/code\u003e setters or deleters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24510\"\u003e#24510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9cf212ff82f7b66b4a275ad6a9b1564aee1fa4a8\"\u003e\u003ccode\u003e9cf212f\u003c/code\u003e\u003c/a\u003e [ty] Normalize property setter and deleter wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24509\"\u003e#24509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/12a1589de4d7120cf99441ee4c14871bdc20968d\"\u003e\u003ccode\u003e12a1589\u003c/code\u003e\u003c/a\u003e Add override mention to ASYNC109 docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dccb03d010f4442ed60624f8d2ba932706abaabb\"\u003e\u003ccode\u003edccb03d\u003c/code\u003e\u003c/a\u003e [ty] Avoid panicking on overloaded \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24661\"\u003e#24661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/61f9a0a5763fb068cd2f26c0ee9d63a277fb26c2\"\u003e\u003ccode\u003e61f9a0a\u003c/code\u003e\u003c/a\u003e [ty] Sync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24646\"\u003e#24646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.9...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20260402 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260402 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20260402 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20260402 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260402 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20260402 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260324 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260402 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 7.34.1.20260403 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260402 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260406 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260402 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260402 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.4.4.20260405 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20260402 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20260402 to 3.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260402 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260402 to 4.67.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.83 to 1.42.92\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260124 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.11 to 6.152.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.1\u003c/h2\u003e\n\u003cp\u003eImprove some internal type hints.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.0\u003c/h2\u003e\n\u003cp\u003eHypothesis generally recommends that the \u0026quot;.hypothesis\u0026quot; directory not\nbe checked into version control. As a result, Hypothesis now\nautomatically creates a \u0026quot;.gitignore\u0026quot; with \u0026quot;*\u0026quot; in the \u0026quot;.hypothesis\u0026quot;\ndirectory, which excludes it from being tracked by git.\u003c/p\u003e\n\u003cp\u003eIf you do want to check \u0026quot;.hypothesis\u0026quot; into git, you can remove the\n\u0026quot;.gitignore\u0026quot; file. Hypothesis will not re-create it unless the entire\n\u0026quot;.hypothesis\u0026quot; directory is removed.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.14\u003c/h2\u003e\n\u003cp\u003eThis patch fixes our \u0026quot;from_regex()\u0026quot; type annotations so that\n\u0026quot;from_regex(..., alphabet=None)\u0026quot; is accepted.\u003c/p\u003e\n\u003cp\u003eThis patch also adds unicode line breaks and thai combining vowels to\nour list of constant strings to upweight at runtime.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-14\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.13\u003c/h2\u003e\n\u003cp\u003eThis patch removes some newly unnecessary \u0026quot;# type: ignore\u0026quot; comments.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-13\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.12\u003c/h2\u003e\n\u003cp\u003eThis release improves \u0026quot;Phase.explain\u0026quot; output by excluding pytest-\nrelated syrupy files as a possible source of variation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-12\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d451213b510a6edf42c5a9263ee4c99119ad6594\"\u003e\u003ccode\u003ed451213\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.1 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c95fa97ed244498708c50e8c73633f6d53961999\"\u003e\u003ccode\u003ec95fa97\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4706\"\u003e#4706\u003c/a\u003e from Liam-DeVoe/typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7dd2cfd7561fd0ef56054f049f13b2915089db2f\"\u003e\u003ccode\u003e7dd2cfd\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/35fdf62412e8e14968a8a8c225fefd185ce36e20\"\u003e\u003ccode\u003e35fdf62\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.0 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0cb15c586a25603673cfe826a1a91ea38bd094d0\"\u003e\u003ccode\u003e0cb15c5\u003c/code\u003e\u003c/a\u003e tighten check for typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0e0320429b4faf331fa61a7fa9cfe934d87b518b\"\u003e\u003ccode\u003e0e03204\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4704\"\u003e#4704\u003c/a\u003e from Liam-DeVoe/auto-ignore-.hypothesis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3625c6309082674d166836638ad335a307c5e675\"\u003e\u003ccode\u003e3625c63\u003c/code\u003e\u003c/a\u003e fix ci failures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/8a8a6a153ac5364cc160e5a6542f17d84fce9618\"\u003e\u003ccode\u003e8a8a6a1\u003c/code\u003e\u003c/a\u003e reword for clarity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0102250a5d2c6c44d0be9faa3099a0276427cb80\"\u003e\u003ccode\u003e0102250\u003c/code\u003e\u003c/a\u003e fix ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e571cf37a0df940df49faf573e53269648f95349\"\u003e\u003ccode\u003ee571cf3\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.14 and update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.11...hypothesis-python-6.152.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260402 to 2.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260402 to 82.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.0 to 1.20.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch3\u003eEnabling \u003ccode\u003e--local-partial-types\u003c/code\u003e by default\u003c/h3\u003e\n\u003cp\u003eThis flag affects the inference of types based on assignments in other scopes.\nFor now, explicitly disabling this continues to be supported, but this support will be removed\nin the future as the legacy behaviour is hard to support with other current and future features\nin mypy, like the daemon or the new implementation of flexible redefinitions.\u003c/p\u003e\n\u003cp\u003eContributed by Ivan Levkivskyi, Jukka Lehtosalo, Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/21163\"\u003ePR 21163\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eEnabling \u003ccode\u003e--strict-bytes\u003c/code\u003e by default\u003c/h3\u003e\n\u003cp\u003ePer \u003ca href=\"https://peps.python.org/pep-0688\"\u003ePEP 688\u003c/a\u003e, mypy no longer treats \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e\nvalues as assignable to the \u003ccode\u003ebytes\u003c/code\u003e type.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/18371\"\u003ePR 18371\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eDrop Support for Targeting Python 3.9\u003c/h3\u003e\n\u003cp\u003eMypy no longer supports type checking code with \u003ccode\u003e--python-version 3.9\u003c/code\u003e.\nUse \u003ccode\u003e--python-version 3.10\u003c/code\u003e or newer.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu, Marc Mueller in \u003ca href=\"https://redirect.github.com/python/mypy/pull/21243\"\u003ePR 21243\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eRemove special casing of legacy bundled stubs\u003c/h3\u003e\n\u003cp\u003eMypy used to bundle stubs for a few packages in versions 0.812 and earlier. To navigate the\ntransition, mypy used to report missing types for these packages even if \u003ccode\u003e--ignore-missing-imports\u003c/code\u003e\nwas set. Mypy now consistently respects \u003ccode\u003e--ignore-missing-imports\u003c/code\u003e for all packages.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/18372\"\u003ePR 18372\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003ePrevent assignment to None for non-Optional class variables with type comments\u003c/h3\u003e\n\u003cp\u003eMypy used to allow assignment to None for class variables when using type comments. This was a\ncommon idiom in Python 3.5 and earlier, prior to the introduction of variable annotations.\nHowever, this was a soundness hole and has now been removed.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/20054\"\u003ePR 20054\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eMypy 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.0...v1.20.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.59.1 to 0.62.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.62.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.61.1...0.62.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.61.1...0.62.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.61.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.61.0...0.61.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.61.0...0.61.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.61.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.2\u003c/h2\u003e\n\u003cp\u003eFixes exponential memory usage on unannotated dictionaries in 0.60.1.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/de2839344133e9cab81fcec5947a4c890a3564b4\"\u003e\u003ccode\u003ede28393\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/05a213c7ebe0674b284c8c9e4433ccc47399d481\"\u003e\u003ccode\u003e05a213c\u003c/code\u003e\u003c/a\u003e upgrade provenant to 0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/141dd714f9755a11979d3ee36453d9dbd0272277\"\u003e\u003ccode\u003e141dd71\u003c/code\u003e\u003c/a\u003e Fix lint issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4707a8fd6984811e52b41c0f61f51ce23b5cd7d9\"\u003e\u003ccode\u003e4707a8f\u003c/code\u003e\u003c/a\u003e Assume unannotated \u003ccode\u003e__new__\u003c/code\u003e returns \u003ccode\u003eSelf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/05b3e73d044792017fe0edb8ec22eb201c4d34cb\"\u003e\u003ccode\u003e05b3e73\u003c/code\u003e\u003c/a\u003e Add provenant-cli binary dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/593495be0eff4ed0356e9862a86aafc122e1f233\"\u003e\u003ccode\u003e593495b\u003c/code\u003e\u003c/a\u003e Bump semver 1.0.27 -\u0026gt; 1.0.28\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2dbb18dace24e8c7aa8469b61fcc4dd6458f4bfb\"\u003e\u003ccode\u003e2dbb18d\u003c/code\u003e\u003c/a\u003e Fix incorrect type inference for enum member .value with mixin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/69bb0219795dad3be71c1288814b0b7595ebaec6\"\u003e\u003ccode\u003e69bb021\u003c/code\u003e\u003c/a\u003e Fix false positive invalid-type-var for generic functions used as closure def...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/9bc95b4747a8fe351ceb16e0b2e12977990c080c\"\u003e\u003ccode\u003e9bc95b4\u003c/code\u003e\u003c/a\u003e include a schema version in \u003ccode\u003epyrefly report\u003c/code\u003e \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3103\"\u003e#3103\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3163\"\u003e#3163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/24c22be0646f31120c4cf6da548c8ba0b1a3def8\"\u003e\u003ccode\u003e24c22be\u003c/code\u003e\u003c/a\u003e Fix(\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2918\"\u003e#2918\u003c/a\u003e): \u003ccode\u003eNotImplemented\u003c/code\u003e being incorrectly accepted as a callable (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.1...0.62.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/jhappye/NexusAI/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhappye%2FNexusAI/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"},{"uuid":"4280607672","node_id":"PR_kwDOSE-lVs7TNjHT","number":20,"state":"closed","title":"chore(deps-dev): bump the dev group in /api with 33 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-17T22:26:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-17T06:22:05.000Z","updated_at":"2026-04-17T22:26:31.000Z","time_to_close":57865,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":33,"packages":[{"name":"faker","old_version":"40.11.0","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.3","new_version":"1.39.2","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260322","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":"/api","ecosystem":"pip"},"body":"Bumps the dev group in /api with 33 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.11.0` | `40.13.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.3` | `1.39.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.11` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260408` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260322` | `2.18.0.20260408` |\n\nUpdates `faker` from 40.11.0 to 40.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/adb7c1aa70fb6eae4785363e811e0982b8f8a7dd\"\u003e\u003ccode\u003eadb7c1a\u003c/code\u003e\u003c/a\u003e Bump version: 40.12.0 → 40.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/eedde76b11c2b05fec9fb8ac3cd394e1519e255d\"\u003e\u003ccode\u003eeedde76\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6fa5e2876653d08629dcdf9a91fdd678b4cb0759\"\u003e\u003ccode\u003e6fa5e28\u003c/code\u003e\u003c/a\u003e Follow-up to \u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e: Add requested tests (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce98d844ca907e065ec2109fa3a1a1b3c1ba3200\"\u003e\u003ccode\u003ece98d84\u003c/code\u003e\u003c/a\u003e Fix: Ensure deterministic locale selection in multi-locale mode (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.3 to 1.39.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f2f217469b0b59e77c49e8a92be3e8fe1c0e5146\"\u003e\u003ccode\u003ef2f2174\u003c/code\u003e\u003c/a\u003e Merge tag '1.1.409' into merge-1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/63998f4d0720a86447f4c4a04716e34f3e703660\"\u003e\u003ccode\u003e63998f4\u003c/code\u003e\u003c/a\u003e Publish 1.1.409\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.3...v1.39.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.11\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.11\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/53554b1cfe837f2eb992a81794480699478f1116\"\u003e\u003ccode\u003e53554b1\u003c/code\u003e\u003c/a\u003e Bump 0.15.11 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24678\"\u003e#24678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/08c56c83cffbb1025cbf5bdede6c6d8be591cf47\"\u003e\u003ccode\u003e08c56c8\u003c/code\u003e\u003c/a\u003e Factor out the \u003ccode\u003emdtest\u003c/code\u003e crate (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24616\"\u003e#24616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/725fbb736d2a999971449b61190b914abd26102a\"\u003e\u003ccode\u003e725fbb7\u003c/code\u003e\u003c/a\u003e [ty] Use partially qualified names when reporting diagnostics regarding bad c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ddd6a30ff5fa27694dc1c50d0749885a1519d0a7\"\u003e\u003ccode\u003eddd6a30\u003c/code\u003e\u003c/a\u003e [ty] Do not suggest argument completion when at value of keyword argument (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9282e61d482a36da08d66bb8271afeef50b3bc45\"\u003e\u003ccode\u003e9282e61\u003c/code\u003e\u003c/a\u003e Disallow \u003ca href=\"https://github.com/disjoint\"\u003e\u003ccode\u003e@​disjoint\u003c/code\u003e\u003c/a\u003e_base on TypedDicts and Protocols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9986d8e3008eefe2e387312c4dc8b9c60f6f362\"\u003e\u003ccode\u003ee9986d8\u003c/code\u003e\u003c/a\u003e [ty] Reject using properties with \u003ccode\u003eNever\u003c/code\u003e setters or deleters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24510\"\u003e#24510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9cf212ff82f7b66b4a275ad6a9b1564aee1fa4a8\"\u003e\u003ccode\u003e9cf212f\u003c/code\u003e\u003c/a\u003e [ty] Normalize property setter and deleter wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24509\"\u003e#24509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/12a1589de4d7120cf99441ee4c14871bdc20968d\"\u003e\u003ccode\u003e12a1589\u003c/code\u003e\u003c/a\u003e Add override mention to ASYNC109 docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dccb03d010f4442ed60624f8d2ba932706abaabb\"\u003e\u003ccode\u003edccb03d\u003c/code\u003e\u003c/a\u003e [ty] Avoid panicking on overloaded \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24661\"\u003e#24661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/61f9a0a5763fb068cd2f26c0ee9d63a277fb26c2\"\u003e\u003ccode\u003e61f9a0a\u003c/code\u003e\u003c/a\u003e [ty] Sync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24646\"\u003e#24646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jsonschema` from 4.26.0.20260202 to 4.26.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260322 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20250822 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260322 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260323 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260323 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.2.28.20260301 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260322 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/gokool-hiva/Dify-Gokool/pull/20","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokool-hiva%2FDify-Gokool/issues/20","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20/packages"},{"uuid":"4277165372","node_id":"PR_kwDOR3iKCc7TCbug","number":46,"state":"open","title":"chore(deps-dev): bump the dev group across 1 directory with 45 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-16T16:39:42.000Z","updated_at":"2026-04-16T16:39:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":45,"packages":[{"name":"faker","old_version":"40.11.1","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.4","new_version":"1.39.1","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.8","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260324","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.3.32.20260329","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260322","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260303","new_version":"4.67.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.78","new_version":"1.42.89","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.10","new_version":"6.152.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260316","new_version":"2.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","new_version":"82.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.57.1","new_version":"0.61.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 45 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.11.1` | `40.13.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.4` | `1.39.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.10` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260324` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.3.32.20260329` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260408` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260322` | `2.18.0.20260408` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260303` | `4.67.3.20260408` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.78` | `1.42.89` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260408` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.10` | `6.152.1` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260316` | `2.0.0.20260408` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260408` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.1` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.57.1` | `0.61.0` |\n\n\nUpdates `faker` from 40.11.1 to 40.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/adb7c1aa70fb6eae4785363e811e0982b8f8a7dd\"\u003e\u003ccode\u003eadb7c1a\u003c/code\u003e\u003c/a\u003e Bump version: 40.12.0 → 40.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/eedde76b11c2b05fec9fb8ac3cd394e1519e255d\"\u003e\u003ccode\u003eeedde76\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6fa5e2876653d08629dcdf9a91fdd678b4cb0759\"\u003e\u003ccode\u003e6fa5e28\u003c/code\u003e\u003c/a\u003e Follow-up to \u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e: Add requested tests (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce98d844ca907e065ec2109fa3a1a1b3c1ba3200\"\u003e\u003ccode\u003ece98d84\u003c/code\u003e\u003c/a\u003e Fix: Ensure deterministic locale selection in multi-locale mode (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.4 to 1.39.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f2f217469b0b59e77c49e8a92be3e8fe1c0e5146\"\u003e\u003ccode\u003ef2f2174\u003c/code\u003e\u003c/a\u003e Merge tag '1.1.409' into merge-1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/63998f4d0720a86447f4c4a04716e34f3e703660\"\u003e\u003ccode\u003e63998f4\u003c/code\u003e\u003c/a\u003e Publish 1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/3bc9d494291348d530aa0b44f668fadff64ccc4c\"\u003e\u003ccode\u003e3bc9d49\u003c/code\u003e\u003c/a\u003e Revert version bump (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/11391\"\u003e#11391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/386d8314c2d279418287fdb44bb9795e893db95b\"\u003e\u003ccode\u003e386d831\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/abc7b2cc36475f96b88c4daa6f159823b600789c\"\u003e\u003ccode\u003eabc7b2c\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.409\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.4...v1.39.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.8 to 0.15.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.10\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.10/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/252f76102a618bff6537b6c53c316ca3837f4abf\"\u003e\u003ccode\u003e252f761\u003c/code\u003e\u003c/a\u003e Bump 0.15.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24519\"\u003e#24519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/37a1ec8bb8e30955787b0cdf6e97f7f2254dba7f\"\u003e\u003ccode\u003e37a1ec8\u003c/code\u003e\u003c/a\u003e [ty] Fix assignability of intersections with bounded typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24502\"\u003e#24502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f518cc9ca0c830773dd49c3964eb5e49d52c8aed\"\u003e\u003ccode\u003ef518cc9\u003c/code\u003e\u003c/a\u003e [ty] Allow partially stringified \u003ccode\u003etype[…]\u003c/code\u003e annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24518\"\u003e#24518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16c4090d0a711b9c0523b932014f3daf140f35bc\"\u003e\u003ccode\u003e16c4090\u003c/code\u003e\u003c/a\u003e docs: fix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/99d97bd72f1934ac2af93e52468c10ef1c7a1a4e\"\u003e\u003ccode\u003e99d97bd\u003c/code\u003e\u003c/a\u003e [ty] Tighten up a few edge cases in \u003ccode\u003eConcatenate\u003c/code\u003e type-expression parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2714e345bdd64a5baae3844c0d25db7b0b9fe330\"\u003e\u003ccode\u003e2714e34\u003c/code\u003e\u003c/a\u003e [ty] Enable \u003ccode\u003epull-diagnostics\u003c/code\u003e by default in E2E tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24516\"\u003e#24516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8bc700722ab1b7272a4d724839da7c569b349d4\"\u003e\u003ccode\u003ed8bc700\u003c/code\u003e\u003c/a\u003e LSP: Add support for custom extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a45f96d65dbd4f958b07accd718f8d2af48cb956\"\u003e\u003ccode\u003ea45f96d\u003c/code\u003e\u003c/a\u003e [ty] stop special-casing str constructor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24514\"\u003e#24514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87a0f01cfd016e0297ef05ab638cde006bf8d947\"\u003e\u003ccode\u003e87a0f01\u003c/code\u003e\u003c/a\u003e [ruff] Treat f-string interpolation as potential side effect in RUF019 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9ba8489b8d1f1fd5fd66887a74d5f2f58f733d4\"\u003e\u003ccode\u003ee9ba848\u003c/code\u003e\u003c/a\u003e [ty] Fix excess subscript argument inference for non-generic types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24354\"\u003e#24354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.8...0.15.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260322 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260324 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260322 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260323 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260323 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.3.32.20260329 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20250822 to 3.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260322 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260303 to 4.67.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.78 to 1.42.89\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260124 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.10 to 6.152.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.1\u003c/h2\u003e\n\u003cp\u003eImprove some internal type hints.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.0\u003c/h2\u003e\n\u003cp\u003eHypothesis generally recommends that the \u0026quot;.hypothesis\u0026quot; directory not\nbe checked into version control. As a result, Hypothesis now\nautomatically creates a \u0026quot;.gitignore\u0026quot; with \u0026quot;*\u0026quot; in the \u0026quot;.hypothesis\u0026quot;\ndirectory, which excludes it from being tracked by git.\u003c/p\u003e\n\u003cp\u003eIf you do want to check \u0026quot;.hypothesis\u0026quot; into git, you can remove the\n\u0026quot;.gitignore\u0026quot; file. Hypothesis will not re-create it unless the entire\n\u0026quot;.hypothesis\u0026quot; directory is removed.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.14\u003c/h2\u003e\n\u003cp\u003eThis patch fixes our \u0026quot;from_regex()\u0026quot; type annotations so that\n\u0026quot;from_regex(..., alphabet=None)\u0026quot; is accepted.\u003c/p\u003e\n\u003cp\u003eThis patch also adds unicode line breaks and thai combining vowels to\nour list of constant strings to upweight at runtime.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-14\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.13\u003c/h2\u003e\n\u003cp\u003eThis patch removes some newly unnecessary \u0026quot;# type: ignore\u0026quot; comments.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-13\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.12\u003c/h2\u003e\n\u003cp\u003eThis release improves \u0026quot;Phase.explain\u0026quot; output by excluding pytest-\nrelated syrupy files as a possible source of variation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-12\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.11\u003c/h2\u003e\n\u003cp\u003eThis patch improves printing of primitive values generated from\ncomplex strategies, particularly for \u0026quot;from_regex()\u0026quot;. Previously, these\nwould often be printed as function calls desctribing how to construct\nthem. Now they will always be printed as a literal value.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-11\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d451213b510a6edf42c5a9263ee4c99119ad6594\"\u003e\u003ccode\u003ed451213\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.1 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c95fa97ed244498708c50e8c73633f6d53961999\"\u003e\u003ccode\u003ec95fa97\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4706\"\u003e#4706\u003c/a\u003e from Liam-DeVoe/typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7dd2cfd7561fd0ef56054f049f13b2915089db2f\"\u003e\u003ccode\u003e7dd2cfd\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/35fdf62412e8e14968a8a8c225fefd185ce36e20\"\u003e\u003ccode\u003e35fdf62\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.0 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0cb15c586a25603673cfe826a1a91ea38bd094d0\"\u003e\u003ccode\u003e0cb15c5\u003c/code\u003e\u003c/a\u003e tighten check for typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0e0320429b4faf331fa61a7fa9cfe934d87b518b\"\u003e\u003ccode\u003e0e03204\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4704\"\u003e#4704\u003c/a\u003e from Liam-DeVoe/auto-ignore-.hypothesis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3625c6309082674d166836638ad335a307c5e675\"\u003e\u003ccode\u003e3625c63\u003c/code\u003e\u003c/a\u003e fix ci failures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/8a8a6a153ac5364cc160e5a6542f17d84fce9618\"\u003e\u003ccode\u003e8a8a6a1\u003c/code\u003e\u003c/a\u003e reword for clarity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0102250a5d2c6c44d0be9faa3099a0276427cb80\"\u003e\u003ccode\u003e0102250\u003c/code\u003e\u003c/a\u003e fix ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e571cf37a0df940df49faf573e53269648f95349\"\u003e\u003ccode\u003ee571cf3\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.14 and update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.10...hypothesis-python-6.152.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260316 to 2.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260210 to 82.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.20.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways disable sync in SQLite cache (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21184\"\u003e21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTemporarily skip few base64 tests (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21193\"\u003e21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u003ccode\u003edict.__or__\u003c/code\u003e typeshed change (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21186\"\u003e21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing for match case with variadic tuples (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21192\"\u003e21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing \u003ccode\u003etype[T]\u003c/code\u003e in type calls (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21174\"\u003e21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression for catching empty tuple in except (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21153\"\u003e21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix reachability for frozenset and dict view narrowing (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21151\"\u003e21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing with chained comparison (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21150\"\u003e21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing to unreachable at module level (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21144\"\u003e21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow dangerous identity comparisons to \u003ccode\u003eAny\u003c/code\u003e typed variables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21142\"\u003e21142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--warn-unused-config\u003c/code\u003e should not be a strict flag (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21139\"\u003e21139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c60e8bfcb5910974b577e443725c475e0485d269\"\u003e\u003ccode\u003ec60e8bf\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/842e4927738264949e969df0c2ee285a13594d06\"\u003e\u003ccode\u003e842e492\u003c/code\u003e\u003c/a\u003e Always disable sync in SQLite cache (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21184\"\u003e#21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e82a046356b242441fcd55c8cf922c7904ef311a\"\u003e\u003ccode\u003ee82a046\u003c/code\u003e\u003c/a\u003e Temporarily skip few base64 tests (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21193\"\u003e#21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f7fa418b6504e20c1277947e03a6db2f6d03e13e\"\u003e\u003ccode\u003ef7fa418\u003c/code\u003e\u003c/a\u003e Revert dict.\u003cstrong\u003eor\u003c/strong\u003e typeshed change (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a2e8ee1afd5bbda26ad301496685295b1a7997a3\"\u003e\u003ccode\u003ea2e8ee1\u003c/code\u003e\u003c/a\u003e Fix narrowing for match case with variadic tuples (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21192\"\u003e#21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/521f88f510c2065132909928815f08502097ceea\"\u003e\u003ccode\u003e521f88f\u003c/code\u003e\u003c/a\u003e Avoid narrowing type[T] in type calls (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21174\"\u003e#21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4876e9186b927fe4777609fc9932752dcfb7047\"\u003e\u003ccode\u003ea4876e9\u003c/code\u003e\u003c/a\u003e Fix regression for catching empty tuple in except (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21153\"\u003e#21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6fccffcac0c8c24034d4f2b262ca7e5564ba9375\"\u003e\u003ccode\u003e6fccffc\u003c/code\u003e\u003c/a\u003e Fix reachability for frozenset and dict view narrowing (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21151\"\u003e#21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/de50419dc84a66f0e8606308023f81a44dee54f3\"\u003e\u003ccode\u003ede50419\u003c/code\u003e\u003c/a\u003e Fix narrowing with chained comparison (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21150\"\u003e#21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/eafcf18ff1d83923c0f749cf3056962df63ed693\"\u003e\u003ccode\u003eeafcf18\u003c/code\u003e\u003c/a\u003e Avoid narrowing to unreachable at module level (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21144\"\u003e#21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v1.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.57.1 to 0.61.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.61.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.2\u003c/h2\u003e\n\u003cp\u003eFixes exponential memory usage on unannotated dictionaries in 0.60.1.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.59.1\u003c/h2\u003e\n\u003cp\u003eFixed a performance regression in 0.59.0.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.0...0.59.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.59.0...0.59.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.59.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : Beta\u003c/strong\u003e\u003cbr /\u003e\n\u003cem\u003e\u003cstrong\u003eRelease date:\u003c/strong\u003e March 30, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.59.0 bundles \u003cstrong\u003e153 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003eArea\u003c/th\u003e\n\u003cth align=\"left\"\u003eWhat’s new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- You can now use \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause without triggering a false positive \u003ccode\u003emissing-explicit-return\u003c/code\u003e error.  \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pyrefly now correctly handles type inference for nested empty dictionaries when constructing TypedDict instances, avoiding \u003ccode\u003eimplicit-any\u003c/code\u003e errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages now highlight related code with inline labels; for example, an unsupported * operation will show the types of both operands directly in the source snippet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- LSP hover information for classes now displays constructor signature and docstring. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Support additional LSP functionality for notebooks, including find-references and rename.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- Faster typechecking in large pythonc codebases, up to 2x faster on recent benchmarks on real world projects \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Reduced CPU usage through smarter caching of module resolution results \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Improved performance of the LSP server by reducing redundant workspace diagnostic publishes.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed 16 bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2026\"\u003e#2026\u003c/a\u003e: Fixed an issue where recursive bounded generics were incorrectly reported as \u003ccode\u003eobject\u003c/code\u003e, ensuring accurate type checking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2812\"\u003e#2812\u003c/a\u003e: Resolved a false positive \u003ccode\u003einvalid-type-var\u003c/code\u003e error when persisting the \u003ccode\u003eget\u003c/code\u003e method of a fully-annotated \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2804\"\u003e#2804\u003c/a\u003e: Fixed an \u003ccode\u003eimplicit-any\u003c/code\u003e false positive that occurred with TypedDict items, improving code readability.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2868\"\u003e#2868\u003c/a\u003e: Pyrefly now correctly recognizes \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause as exhaustive.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2814\"\u003e#2814\u003c/a\u003e: Enhanced hover information for \u003ccode\u003edatetime.datetime\u003c/code\u003e imports to display constructor signatures and docstrings.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2896\"\u003e#2896\u003c/a\u003e: Fixed a \u003ccode\u003ebad-argument-type\u003c/code\u003e error that occurred when using double-underscore arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2893\"\u003e#2893\u003c/a\u003e: Pyrefly now correctly handles dict Literal key types as subtypes of str key types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2865\"\u003e#2865\u003c/a\u003e: Resolved an issue where tuple subclasses with overridden \u003ccode\u003e__getitem__\u003c/code\u003e were not recognized.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2871\"\u003e#2871\u003c/a\u003e: Fixed a false positive error when using \u003ccode\u003eisinstance\u003c/code\u003e with \u003ccode\u003etype | X\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/89c943636570ceba7c8b70ccda648dd31f892e83\"\u003e\u003ccode\u003e89c9436\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/8cee24781db0ed17ce50281efa60a4c760dd0398\"\u003e\u003ccode\u003e8cee247\u003c/code\u003e\u003c/a\u003e Add composite GitHub Action for CI type checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d16b045936da0f30327e36bc17ca5229a89131ee\"\u003e\u003ccode\u003ed16b045\u003c/code\u003e\u003c/a\u003e Resolve xrefs for dotted names in string literals via attribute resolution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/eaefaaa1ff032e1c3d9454baf08405a18f6fe552\"\u003e\u003ccode\u003eeaefaaa\u003c/code\u003e\u003c/a\u003e Add faling test for overloads for returning Self (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3111\"\u003e#3111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e94e945b55837b28a62b4be657d41c1e610c30a7\"\u003e\u003ccode\u003ee94e945\u003c/code\u003e\u003c/a\u003e Bump zerocopy 0.8.31 -\u0026gt; 0.8.48\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/afb1499dd4b8a601d905bbe3aaec893b57c8704c\"\u003e\u003ccode\u003eafb1499\u003c/code\u003e\u003c/a\u003e Bump rustc-hash 2.1.1 -\u0026gt; 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/13d1036d6f92a3621a2aae235f010e0751d19470\"\u003e\u003ccode\u003e13d1036\u003c/code\u003e\u003c/a\u003e Bump mio 1.1.1 -\u0026gt; 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/36293ea87a7ac145f69c9e4d12d965a919c33c42\"\u003e\u003ccode\u003e36293ea\u003c/code\u003e\u003c/a\u003e Bump uuid 1.22.0 -\u0026gt; 1.23.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a6b813c96fcf5253fd5272507ba8ee749661e983\"\u003e\u003ccode\u003ea6b813c\u003c/code\u003e\u003c/a\u003e Use function index instead of location as the function id\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/308bf05d98d815869141972f2189801ab35c862c\"\u003e\u003ccode\u003e308bf05\u003c/code\u003e\u003c/a\u003e Add tests for gradual-aware union narrowing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.57.1...0.61.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/henrydev23/dify-ntte-moi/pull/46","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrydev23%2Fdify-ntte-moi/issues/46","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/46/packages"},{"uuid":"4245847328","node_id":"PR_kwDORmx2Bs7RtNnT","number":64,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 49 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-30T21:47:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-11T21:42:40.000Z","updated_at":"2026-05-30T21:47:47.000Z","time_to_close":4233906,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":49,"packages":[{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.8.0","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.2","new_version":"1.39.0","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20251022","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260223","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20251102","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20250919","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20250916","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20251012","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20250916","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20251115","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20251008","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20251008","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.0.20250809","new_version":"4.67.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.41.3","new_version":"1.42.88","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.0.2.20250809","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.148.2","new_version":"6.151.12","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"1.17.0.20250915","new_version":"2.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"80.9.0.20250822","new_version":"82.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.16.3.1","new_version":"1.17.1.3","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"import-linter","old_version":"2.10","new_version":"2.11","repository_url":"https://github.com/seddonym/import-linter"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.60.2","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 49 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.13.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.2` | `1.39.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.10` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20251022` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260223` | `0.22.3.20260408` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20251102` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20250919` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20250916` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20251012` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20250916` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20251115` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20251008` | `311.0.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260408` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20251008` | `2.18.0.20260408` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.0.20250809` | `4.67.3.20260408` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.41.3` | `1.42.88` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.0.2.20250809` | `1.1.0.20260408` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.148.2` | `6.151.12` |\n| [types-cffi](https://github.com/python/typeshed) | `1.17.0.20250915` | `2.0.0.20260408` |\n| [types-setuptools](https://github.com/python/typeshed) | `80.9.0.20250822` | `82.0.0.20260408` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.16.3.1` | `1.17.1.3` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [import-linter](https://github.com/seddonym/import-linter) | `2.10` | `2.11` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.60.2` |\n\n\nUpdates `coverage` from 7.13.4 to 7.13.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.8.0 to 40.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/adb7c1aa70fb6eae4785363e811e0982b8f8a7dd\"\u003e\u003ccode\u003eadb7c1a\u003c/code\u003e\u003c/a\u003e Bump version: 40.12.0 → 40.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/eedde76b11c2b05fec9fb8ac3cd394e1519e255d\"\u003e\u003ccode\u003eeedde76\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6fa5e2876653d08629dcdf9a91fdd678b4cb0759\"\u003e\u003ccode\u003e6fa5e28\u003c/code\u003e\u003c/a\u003e Follow-up to \u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e: Add requested tests (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce98d844ca907e065ec2109fa3a1a1b3c1ba3200\"\u003e\u003ccode\u003ece98d84\u003c/code\u003e\u003c/a\u003e Fix: Ensure deterministic locale selection in multi-locale mode (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.2 to 1.39.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d4b4104727048b226326649741c319430a8c9cae\"\u003e\u003ccode\u003ed4b4104\u003c/code\u003e\u003c/a\u003e 1.39.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/241c884744586fd9af586d6f203fe621e552ce21\"\u003e\u003ccode\u003e241c884\u003c/code\u003e\u003c/a\u003e fix diagnostic ruleset defaults for \u003ccode\u003ereportEmptyAbstractUsage\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b4774cbdf1afb7a0fa052aac4c9b2d78022cdf16\"\u003e\u003ccode\u003eb4774cb\u003c/code\u003e\u003c/a\u003e cherrypick \u003ca href=\"https://redirect.github.com/python/typeshed/pull/15488\"\u003epython/typeshed#15488\u003c/a\u003e to prevent false pos...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/df077f6f1330fa80016d49df49b2bb3de9eb8930\"\u003e\u003ccode\u003edf077f6\u003c/code\u003e\u003c/a\u003e flag abstract base classes with no abstract methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/be981660d7d7e65227c2a981a2ac541a75e2b5f9\"\u003e\u003ccode\u003ebe98166\u003c/code\u003e\u003c/a\u003e set uv \u003ccode\u003eexclude-newer\u003c/code\u003e to 1 week\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b2ebfbad429c8389f9f3e110e22ed131b6422370\"\u003e\u003ccode\u003eb2ebfba\u003c/code\u003e\u003c/a\u003e Update SECURITY.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/2455efb5c3113e0c54ab233f83f2f3a9a592a72e\"\u003e\u003ccode\u003e2455efb\u003c/code\u003e\u003c/a\u003e 1.38.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/78db0e0b80a5cd02ae13dd36502a9f300de7a94f\"\u003e\u003ccode\u003e78db0e0\u003c/code\u003e\u003c/a\u003e i hate node i hate webpack i hate all this shit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/1cc918afb0116639f0ba5680c93cd5e3506c93fb\"\u003e\u003ccode\u003e1cc918a\u003c/code\u003e\u003c/a\u003e use \u003ccode\u003e@​core-js/pure\u003c/code\u003e to polyfill newer ecmascript features now that it has prope...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b31ffd95280f64a456e58d01709cf8ba2036224d\"\u003e\u003ccode\u003eb31ffd9\u003c/code\u003e\u003c/a\u003e remove unused \u003ccode\u003eignoreErrors\u003c/code\u003e function that was added to the \u003ccode\u003ePromise\u003c/code\u003e prototy...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.2...v1.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.5 to 0.15.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.10\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.10/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/252f76102a618bff6537b6c53c316ca3837f4abf\"\u003e\u003ccode\u003e252f761\u003c/code\u003e\u003c/a\u003e Bump 0.15.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24519\"\u003e#24519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/37a1ec8bb8e30955787b0cdf6e97f7f2254dba7f\"\u003e\u003ccode\u003e37a1ec8\u003c/code\u003e\u003c/a\u003e [ty] Fix assignability of intersections with bounded typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24502\"\u003e#24502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f518cc9ca0c830773dd49c3964eb5e49d52c8aed\"\u003e\u003ccode\u003ef518cc9\u003c/code\u003e\u003c/a\u003e [ty] Allow partially stringified \u003ccode\u003etype[…]\u003c/code\u003e annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24518\"\u003e#24518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16c4090d0a711b9c0523b932014f3daf140f35bc\"\u003e\u003ccode\u003e16c4090\u003c/code\u003e\u003c/a\u003e docs: fix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/99d97bd72f1934ac2af93e52468c10ef1c7a1a4e\"\u003e\u003ccode\u003e99d97bd\u003c/code\u003e\u003c/a\u003e [ty] Tighten up a few edge cases in \u003ccode\u003eConcatenate\u003c/code\u003e type-expression parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2714e345bdd64a5baae3844c0d25db7b0b9fe330\"\u003e\u003ccode\u003e2714e34\u003c/code\u003e\u003c/a\u003e [ty] Enable \u003ccode\u003epull-diagnostics\u003c/code\u003e by default in E2E tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24516\"\u003e#24516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8bc700722ab1b7272a4d724839da7c569b349d4\"\u003e\u003ccode\u003ed8bc700\u003c/code\u003e\u003c/a\u003e LSP: Add support for custom extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a45f96d65dbd4f958b07accd718f8d2af48cb956\"\u003e\u003ccode\u003ea45f96d\u003c/code\u003e\u003c/a\u003e [ty] stop special-casing str constructor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24514\"\u003e#24514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87a0f01cfd016e0297ef05ab638cde006bf8d947\"\u003e\u003ccode\u003e87a0f01\u003c/code\u003e\u003c/a\u003e [ruff] Treat f-string interpolation as potential side effect in RUF019 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9ba8489b8d1f1fd5fd66887a74d5f2f58f733d4\"\u003e\u003ccode\u003ee9ba848\u003c/code\u003e\u003c/a\u003e [ty] Fix excess subscript argument inference for non-generic types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24354\"\u003e#24354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20251022 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260223 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jsonschema` from 4.26.0.20260202 to 4.26.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20251102 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20250822 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20250919 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20250916 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20251012 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20250916 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20251115 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20251008 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.2.28.20260301 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20250822 to 3.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20251008 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.0.20250809 to 4.67.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.41.3 to 1.42.88\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.0.2.20250809 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.148.2 to 6.151.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.12\u003c/h2\u003e\n\u003cp\u003eThis release improves \u0026quot;Phase.explain\u0026quot; output by excluding pytest-\nrelated syrupy files as a possible source of variation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-12\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.11\u003c/h2\u003e\n\u003cp\u003eThis patch improves printing of primitive values generated from\ncomplex strategies, particularly for \u0026quot;from_regex()\u0026quot;. Previously, these\nwould often be printed as function calls desctribing how to construct\nthem. Now they will always be printed as a literal value.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-11\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.10\u003c/h2\u003e\n\u003cp\u003eWhen shrinking takes more than five minutes, Hypothesis now prints the\n\u0026quot;\u003ca href=\"https://github.com/seed\"\u003e\u003ccode\u003e@​seed\u003c/code\u003e\u003c/a\u003e\u0026quot; decorator alongside the slow-shrinking warning so you can\nreproduce the failure.\u003c/p\u003e\n\u003cp\u003eThanks to Ian Hunt-Isaak for this contribution!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-10\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.9\u003c/h2\u003e\n\u003cp\u003eRemove some old unused code.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-9\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.8\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a crash when \u0026quot;sys.modules\u0026quot; contains unhashable\nvalues, such as \u0026quot;SimpleNamespace\u0026quot; objects (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4660\"\u003e#4660\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-8\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.7\u003c/h2\u003e\n\u003cp\u003eThis patch updates our vendored list of top-level domains, which is\nused by the provisional \u0026quot;domains()\u0026quot; strategy.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-7\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.6\u003c/h2\u003e\n\u003cp\u003eThis patch fixes several duplicate word typos in comments and\ndocumentation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-6\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.5\u003c/h2\u003e\n\u003cp\u003eThis patch teaches our pytest plugin to :ref:\u003ccode\u003e find interesting constants \u0026lt;v6.131.1\u0026gt;\u003c/code\u003e when pytest is collecting tests, to avoid\narbitrarily attributing the latency to whichever test function\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/2b1de221b8f627131169cac859597da6283cb7e1\"\u003e\u003ccode\u003e2b1de22\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.12 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0016ad00857fff7eda4fb2e1508e91d5844b0b4f\"\u003e\u003ccode\u003e0016ad0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4695\"\u003e#4695\u003c/a\u003e from HypothesisWorks/DRMacIver/syrupy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c43f47599deb6b440704d13a9849287c1aa93bee\"\u003e\u003ccode\u003ec43f475\u003c/code\u003e\u003c/a\u003e Remove extra blank line in conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/acbfebbe97f4ba677217ff5744112e70db5864c9\"\u003e\u003ccode\u003eacbfebb\u003c/code\u003e\u003c/a\u003e Refactor test layout in response to code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/25cdc50c5421855530a4ec369567b8198ef9d61c\"\u003e\u003ccode\u003e25cdc50\u003c/code\u003e\u003c/a\u003e Don't install syrupy in tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d96f37439e5d426b3ab4622e8256478c3bd63dd5\"\u003e\u003ccode\u003ed96f374\u003c/code\u003e\u003c/a\u003e Inline list definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/6ab0b0ccb91c26bd4e870c954f14ae9c98d6250e\"\u003e\u003ccode\u003e6ab0b0c\u003c/code\u003e\u003c/a\u003e Remove useless module docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ebe4fcbbaccc48ee2ea41f7670f0d37557a70b22\"\u003e\u003ccode\u003eebe4fcb\u003c/code\u003e\u003c/a\u003e Move get_output into common utils function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0ddfbc699a47e9578e7a23b86259f553e361ad82\"\u003e\u003ccode\u003e0ddfbc6\u003c/code\u003e\u003c/a\u003e Update hypothesis-python/RELEASE.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b4fc0530faed8398e9e64b74044da969f31b3e42\"\u003e\u003ccode\u003eb4fc053\u003c/code\u003e\u003c/a\u003e Add release file\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.148.2...hypothesis-python-6.151.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 1.17.0.20250915 to 2.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 80.9.0.20250822 to 82.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.16.3.1 to 1.17.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.3\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fixed several issues with \u003ccode\u003escipy.sparse\u003c/code\u003e arrays and matrices for certain slicing and multi-indexing operations (see \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1454\"\u003escipy/scipy-stubs#1454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e✨ Many improved function signatures (shape-typing, input-dependent return dtypes) in \u003ccode\u003escipy.io\u003c/code\u003e, \u003ccode\u003escipy.linalg\u003c/code\u003e, \u003ccode\u003escipy.ndimage\u003c/code\u003e, \u003ccode\u003escipy.signal\u003c/code\u003e, and \u003ccode\u003escipy.stats\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Increased the type-testing coverage from 84.0% to 87.7%. The goal is to reach 100% coverage in the near future. For the current progress and per-module coverage, see \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1099\"\u003escipy/scipy-stubs#1099\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003endimage\u003c/code\u003e: improved morphology functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1458\"\u003escipy/scipy-stubs#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elinalg.interpolative\u003c/code\u003e: improved shape-typing and dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1459\"\u003escipy/scipy-stubs#1459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elinalg\u003c/code\u003e: improved \u003ccode\u003esvdvals\u003c/code\u003e and \u003ccode\u003esubspace_angles\u003c/code\u003e shape-types and dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1460\"\u003escipy/scipy-stubs#1460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003endimage\u003c/code\u003e: improved interpolation functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1461\"\u003escipy/scipy-stubs#1461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improve \u003ccode\u003e{g,h,p}mean\u003c/code\u003e by adding 3*26 overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1463\"\u003escipy/scipy-stubs#1463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eiqr\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1464\"\u003escipy/scipy-stubs#1464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ezmap\u003c/code\u003e dtypes and shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1465\"\u003escipy/scipy-stubs#1465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eio\u003c/code\u003e: improved \u003ccode\u003eMMFile.{read,write}\u003c/code\u003e signatures by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1467\"\u003escipy/scipy-stubs#1467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: minor improvements to some filter design functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1475\"\u003escipy/scipy-stubs#1475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improved LTI conversion functions dtypes (\u003ccode\u003e_lti_conversion\u003c/code\u003e) by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1477\"\u003escipy/scipy-stubs#1477\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: fix sparse array/matrix sliced index assignment by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1456\"\u003escipy/scipy-stubs#1456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: fix sparse array/matrix mixed multi-index assignment by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1457\"\u003escipy/scipy-stubs#1457\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd movement to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1462\"\u003escipy/scipy-stubs#1462\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✅ Testing\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003eCovariance\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1468\"\u003escipy/scipy-stubs#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003echatterjeexi\u003c/code\u003e and \u003ccode\u003espearmanrho\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1469\"\u003escipy/scipy-stubs#1469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test remaining resampling functions and classes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1470\"\u003escipy/scipy-stubs#1470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003edirichlet_multinomial\u003c/code\u003e  and \u003ccode\u003ematrix_t\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1471\"\u003escipy/scipy-stubs#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003erv_histogram\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1472\"\u003escipy/scipy-stubs#1472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003enew_distributions\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1473\"\u003escipy/scipy-stubs#1473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003eabs\u003c/code\u003e and \u003ccode\u003eMixture\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1474\"\u003escipy/scipy-stubs#1474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: test the remaining filter design functions (\u003ccode\u003e_filter_design\u003c/code\u003e) by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1476\"\u003escipy/scipy-stubs#1476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: test \u003ccode\u003edetrend\u003c/code\u003e, \u003ccode\u003eresidue[z]\u003c/code\u003e, and \u003ccode\u003einvres[z]\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1478\"\u003escipy/scipy-stubs#1478\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: test remaining waveform functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1479\"\u003escipy/scipy-stubs#1479\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/6bb5184d6869edd3957399c3ef72f0db9fc53690\"\u003e\u003ccode\u003e6bb5184\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/38d5286101eba47843041ca813c59e604feb9a6b\"\u003e\u003ccode\u003e38d5286\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1479\"\u003e#1479\u003c/a\u003e from scipy:signal._waveforms/tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/84ddb4e3eb28d50d04a58abd69aa5c02e1f160a3\"\u003e\u003ccode\u003e84ddb4e\u003c/code\u003e\u003c/a\u003e ✅ \u003ccode\u003esignal\u003c/code\u003e: test remaainiang waveform functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/8d2113f2ee63660f87f6006efbc2594de2176300\"\u003e\u003ccode\u003e8d2113f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1478\"\u003e#1478\u003c/a\u003e from scipy:signal._signaltools/tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/eb410588331ca61fc43e0ca207c1caf2940ab6dc\"\u003e\u003ccode\u003eeb41058\u003c/code\u003e\u003c/a\u003e ✅ \u003ccode\u003esignal\u003c/code\u003e: test \u003ccode\u003edetrend\u003c/code\u003e, \u003ccode\u003eresidue[z]\u003c/code\u003e, and \u003ccode\u003einvres[z]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/40fa398f70c00288f9e6285ba978c2039610f5b2\"\u003e\u003ccode\u003e40fa398\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1477\"\u003e#1477\u003c/a\u003e from scipy:signal._lti_conversion/improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/e8dfe75ed11e51ea006ad1968b819d0b1f41fc7d\"\u003e\u003ccode\u003ee8dfe75\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003ess2zpk\u003c/code\u003e dtypes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/eb07f678745c17e9751bf007a11bcd067614890c\"\u003e\u003ccode\u003eeb07f67\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003ezpk2ss\u003c/code\u003e dtypes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4cc11bf7611843dfa89fe9b1fa36a1674d01415\"\u003e\u003ccode\u003eb4cc11b\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003eabcd_normalize\u003c/code\u003e dtypes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/6c90b7bf4a412b84bb447f13c86bdf35f9947c4b\"\u003e\u003ccode\u003e6c90b7b\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003ess2tf\u003c/code\u003e dtypes and shape-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.16.3.1...v1.17.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `import-linter` from 2.10 to 2.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/seddonym/import-linter/blob/main/docs/release_notes.md\"\u003eimport-linter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.11 (2026-03-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--version\u003c/code\u003e flag to \u003ccode\u003elint-imports\u003c/code\u003e and \u003ccode\u003eimport-linter\u003c/code\u003e commands.\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003efastapi\u003c/code\u003e and \u003ccode\u003euvicorn\u003c/code\u003e optional via the \u003ccode\u003eui\u003c/code\u003e extra (\u003ccode\u003epip install import-linter[ui]\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eBugfix: fix back button navigation in explore command.\u003c/li\u003e\n\u003cli\u003eProvide lower limits for \u003ccode\u003efastapi\u003c/code\u003e and \u003ccode\u003euvicorn\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eSwitch to nox for testing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/fabeab72e88f5055721c785003a2fde80f79bc64\"\u003e\u003ccode\u003efabeab7\u003c/code\u003e\u003c/a\u003e Release v2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/af956e1416aee2ea2cecc9fb94cd892affe6d6d2\"\u003e\u003ccode\u003eaf956e1\u003c/code\u003e\u003c/a\u003e Use nox for CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/e0005c47e2147affc7cf0d19fdf0ac37f981afcf\"\u003e\u003ccode\u003ee0005c4\u003c/code\u003e\u003c/a\u003e Delegate to nox to run the tests from the justfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/61df307700bd89e1616bb355e43e8a124e58130a\"\u003e\u003ccode\u003e61df307\u003c/code\u003e\u003c/a\u003e Add test_earliest_dependencies to noxfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/736e4d3d9eea0bb37e2edaad6aceff3dbb7f8a4f\"\u003e\u003ccode\u003e736e4d3\u003c/code\u003e\u003c/a\u003e Add noxfile for testing under each Python version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/5cea377fb0efe90b912f16ff9bb49c20aa6cdf1d\"\u003e\u003ccode\u003e5cea377\u003c/code\u003e\u003c/a\u003e Add ability to run nox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/521b90be68f8840e4ca08277c8f9837392bc75a7\"\u003e\u003ccode\u003e521b90b\u003c/code\u003e\u003c/a\u003e Tweak lowest dependencies of ui\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/903a61d06153bb8e8273a0cdcde8c5b27a650b1c\"\u003e\u003ccode\u003e903a61d\u003c/code\u003e\u003c/a\u003e Don't run tests for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/b447e69eb564b28757fc3beb06ee5c4066054067\"\u003e\u003ccode\u003eb447e69\u003c/code\u003e\u003c/a\u003e Move httpx to dev dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/230b22cbd05b485c0355e7a8ced634a7ab3fb782\"\u003e\u003ccode\u003e230b22c\u003c/code\u003e\u003c/a\u003e Rename dev-no-ui to dev-minimal\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/seddonym/import-linter/compare/v2.10...v2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003ePlanned Changes to Defaults and Flags in Mypy 2.0\u003c/h3\u003e\n\u003cp\u003eAs a reminder, we are planning to enable \u003ccode\u003e--local-partial-types\u003c/code\u003e by default in mypy 2.0, which\nwill likely be the next feature release. This will often require at least minor code changes. This\noption is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon\nmodes consistent.\u003c/p\u003e\n\u003cp\u003eNote that this release improves the compatibility of \u003ccode\u003e--local-partial-types\u003c/code\u003e significantly to\nmake the switch easier (see below for more).\u003c/p\u003e\n\u003cp\u003eThis can also be configured in a mypy configuration file (use \u003ccode\u003eFalse\u003c/code\u003e to disable):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003elocal_partial_types = True\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe will also enable \u003ccode\u003e--strict-bytes\u003c/code\u003e by default in mypy 2.0. This usually requires at most\nminor code changes to adopt. For more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e will be renamed to \u003ccode\u003e--allow-redefinition\u003c/code\u003e. If you want\nto continue using the older \u003ccode\u003e--allow-redefinition\u003c/code\u003e semantics which are less flexible (e.g.\nlimited support for conditional redefinitions), you can switch to \u003ccode\u003e--allow-redefinition-old\u003c/code\u003e,\nwhich is currently supported as an alias to the legacy \u003ccode\u003e--allow-redefinition\u003c/code\u003e behavior.\nTo use \u003ccode\u003e--allow-redefinition\u003c/code\u003e in the upcoming mypy 2.0, you ...\n\n_Description has been truncated_","html_url":"https://github.com/takashi1minami/oss-dify-mirror/pull/64","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/takashi1minami%2Foss-dify-mirror/issues/64","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/64/packages"},{"uuid":"4007265965","node_id":"PR_kwDON42vC87HIUN1","number":64,"state":"closed","title":"build(deps): Bump the minor group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["part:tooling","type:tech-debt"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-18T10:59:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T13:57:22.000Z","updated_at":"2026-04-18T10:59:34.000Z","time_to_close":4136530,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"minor","update_count":7,"packages":[{"name":"grpcio","old_version":"1.73.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"markdown","old_version":"3.8.2","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocs-macros-plugin","old_version":"1.3.7","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"mkdocs-material","old_version":"9.6.21","new_version":"9.7.3","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mypy","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"types-markdown","old_version":"3.8.0.20250708","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"grpcio-tools","old_version":"1.73.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio](https://github.com/grpc/grpc) | `1.73.1` | `1.78.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8.2` | `3.10.2` |\n| [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin) | `1.3.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.21` | `9.7.3` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.19.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.8.0.20250708` | `3.10.2.20260211` |\n| [grpcio-tools](https://github.com/grpc/grpc) | `1.73.1` | `1.78.0` |\n\n\nUpdates `grpcio` from 1.73.1 to 1.78.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.78.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.78.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egutsy\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadding address_sorting dep in naming test build. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41045\"\u003e#41045\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41358\"\u003e#41358\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[python] aio: fix race condition causing \u003ccode\u003easyncio.run()\u003c/code\u003e to hang forever during the shutdown process. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40989\"\u003e#40989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Migrate to pyproject.toml build system from setup.py builds. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40833\"\u003e#40833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Log error details when ExecuteBatchError occurs (at DEBUG level). (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40921\"\u003e#40921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Update setuptools min version to 77.0.1 . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40931\"\u003e#40931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRuby\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ruby] Fix version comparison for the ruby_abi_version symbol for ruby 4 compatibility. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41061\"\u003e#41061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.78.0-pre2\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.78.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/5e6ba94242b92e363220bc2163d55ce3554d4ecc\"\u003e\u003ccode\u003e5e6ba94\u003c/code\u003e\u003c/a\u003e [build] add missing includes (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41518\"\u003e#41518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e364c5ca7f28da753be233b4f1966ab309c01ed3\"\u003e\u003ccode\u003ee364c5c\u003c/code\u003e\u003c/a\u003e [PHP] ignore PHPUnit security advisory in Mac build (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea4d6271b2a3e94c1549317cc1e523be8f294dee\"\u003e\u003ccode\u003eea4d627\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41489\"\u003e#41489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/9840ecd84d075e53d5a01b93e3ea7c71cb641944\"\u003e\u003ccode\u003e9840ecd\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre2 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41397\"\u003e#41397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea1d162a851c178dad9e8f90d7172c44228a93cb\"\u003e\u003ccode\u003eea1d162\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/818a08f379de39de0dc594ac063b0ce99875ec47\"\u003e\u003ccode\u003e818a08f\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][PHP] Fix runtime error with PHp8.5 alpha because zend_exc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7f13023412c1a589af7558eb0b9f8f664a76431\"\u003e\u003ccode\u003ef7f1302\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Build] Move xds-protos templates to the new path (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/4\"\u003e#4\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a38203462e4e64bc847942f08b6dffb780e5e70b\"\u003e\u003ccode\u003ea382034\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre1 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41290\"\u003e#41290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/8d22d6239230b9f3c446f0bac719e46460cbdb30\"\u003e\u003ccode\u003e8d22d62\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 52.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41288\"\u003e#41288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ad19eab6500686839bb7ff14ec8f2a8463a32a57\"\u003e\u003ccode\u003ead19eab\u003c/code\u003e\u003c/a\u003e [PH2][Settings][Security]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.73.1...v1.78.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.8.2 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.8.2...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.7 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.21 to 9.7.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.2\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to \u003ccode\u003emkdocs build\u003c/code\u003e about impending MkDocs 2.0 incompatibility (doesn't affect strict mode)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.1\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is now in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features. Going forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the Insiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote on deprecated plugins\u003c/strong\u003e: The [projects] and [typeset] plugins are included in this release, but must be considered deprecated. Both plugins proved unsustainable to maintain and represent architectural dead ends. They are provided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eChanges\u003c/strong\u003e:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pinned blog posts and author profiles\u003c/li\u003e\n\u003cli\u003eAdded support for customizing pagination for blog index pages\u003c/li\u003e\n\u003cli\u003eAdded support for customizing blog category sort order\u003c/li\u003e\n\u003cli\u003eAdded support for staying on page when switching languages\u003c/li\u003e\n\u003cli\u003eAdded support for disabling tags in table of contents\u003c/li\u003e\n\u003cli\u003eAdded support for nested tags and shadow tags\u003c/li\u003e\n\u003cli\u003eAdded support for footnote tooltips\u003c/li\u003e\n\u003cli\u003eAdded support for instant previews\u003c/li\u003e\n\u003cli\u003eAdded support for instant prefetching\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card layouts\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card background images\u003c/li\u003e\n\u003cli\u003eAdded support for selectable rangs in code blocks\u003c/li\u003e\n\u003cli\u003eAdded support for custom selectors for code annotations\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/da5d442f904d0c938f4dadc384a7126e8ce30cd0\"\u003e\u003ccode\u003eda5d442\u003c/code\u003e\u003c/a\u003e Prepare 9.7.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/03e8baecdcb62bf3478b68487c2a1fa61a4c938c\"\u003e\u003ccode\u003e03e8bae\u003c/code\u003e\u003c/a\u003e Fixed order of imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/70dee38366615652d7198ae85ff208a4b4c0e80d\"\u003e\u003ccode\u003e70dee38\u003c/code\u003e\u003c/a\u003e Switched warning message to print to stderr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b78109b36b2aaf39a02eb2b75af6df856f0c5600\"\u003e\u003ccode\u003eb78109b\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/e1dd2c88ecd26810050bacf2e67f47a0c2cee4ba\"\u003e\u003ccode\u003ee1dd2c8\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6972761d8202f0aafb6f3ea7177c39c65337a978\"\u003e\u003ccode\u003e6972761\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/e21a119e38f7bca184e469eaeefa3d5535e5022b\"\u003e\u003ccode\u003ee21a119\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d5654b500a7021625d3c78f59842805c45e7b65a\"\u003e\u003ccode\u003ed5654b5\u003c/code\u003e\u003c/a\u003e Prepare 9.7.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b18af2f74a98e0d54f7f11b4e029d7ea29166df3\"\u003e\u003ccode\u003eb18af2f\u003c/code\u003e\u003c/a\u003e Opened up version ranges in optional dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/39cdfbd87c80079cd06a6d2a953cd53f531db61d\"\u003e\u003ccode\u003e39cdfbd\u003c/code\u003e\u003c/a\u003e Added social card for blog post\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.21...9.7.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.17.1 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.17.1...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250708 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-tools` from 1.73.1 to 1.78.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.78.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.78.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egutsy\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadding address_sorting dep in naming test build. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41045\"\u003e#41045\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41358\"\u003e#41358\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[python] aio: fix race condition causing \u003ccode\u003easyncio.run()\u003c/code\u003e to hang forever during the shutdown process. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40989\"\u003e#40989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Migrate to pyproject.toml build system from setup.py builds. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40833\"\u003e#40833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Log error details when ExecuteBatchError occurs (at DEBUG level). (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40921\"\u003e#40921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Update setuptools min version to 77.0.1 . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40931\"\u003e#40931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRuby\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ruby] Fix version comparison for the ruby_abi_version symbol for ruby 4 compatibility. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41061\"\u003e#41061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.78.0-pre2\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.78.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/5e6ba94242b92e363220bc2163d55ce3554d4ecc\"\u003e\u003ccode\u003e5e6ba94\u003c/code\u003e\u003c/a\u003e [build] add missing includes (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41518\"\u003e#41518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e364c5ca7f28da753be233b4f1966ab309c01ed3\"\u003e\u003ccode\u003ee364c5c\u003c/code\u003e\u003c/a\u003e [PHP] ignore PHPUnit security advisory in Mac build (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea4d6271b2a3e94c1549317cc1e523be8f294dee\"\u003e\u003ccode\u003eea4d627\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41489\"\u003e#41489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/9840ecd84d075e53d5a01b93e3ea7c71cb641944\"\u003e\u003ccode\u003e9840ecd\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre2 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41397\"\u003e#41397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea1d162a851c178dad9e8f90d7172c44228a93cb\"\u003e\u003ccode\u003eea1d162\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/818a08f379de39de0dc594ac063b0ce99875ec47\"\u003e\u003ccode\u003e818a08f\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][PHP] Fix runtime error with PHp8.5 alpha because zend_exc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7f13023412c1a589af7558eb0b9f8f664a76431\"\u003e\u003ccode\u003ef7f1302\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Build] Move xds-protos templates to the new path (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/4\"\u003e#4\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a38203462e4e64bc847942f08b6dffb780e5e70b\"\u003e\u003ccode\u003ea382034\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre1 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41290\"\u003e#41290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/8d22d6239230b9f3c446f0bac719e46460cbdb30\"\u003e\u003ccode\u003e8d22d62\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 52.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41288\"\u003e#41288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ad19eab6500686839bb7ff14ec8f2a8463a32a57\"\u003e\u003ccode\u003ead19eab\u003c/code\u003e\u003c/a\u003e [PH2][Settings][Security]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.73.1...v1.78.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/frequenz-floss/frequenz-api-assets/pull/64","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Ffrequenz-api-assets/issues/64","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/64/packages"},{"uuid":"3973322702","node_id":"PR_kwDOG1Zs187FZyLR","number":12136,"state":"open","title":"Chore(deps): Bump the utilities-patch group across 1 directory with 10 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-22T02:03:08.000Z","updated_at":"2026-02-22T02:12:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":10,"packages":[{"name":"django-soft-delete","old_version":"1.0.22","new_version":"1.0.23","repository_url":"https://github.com/san4ezy/django_softdelete"},{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-llms-openai","old_version":"0.6.18","new_version":"0.6.19"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"sentence-transformers","old_version":"5.2.2","new_version":"5.2.3","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"zensical","old_version":"0.0.21","new_version":"0.0.23","repository_url":"https://github.com/zensical/zensical"},{"name":"prek","old_version":"0.3.2","new_version":"0.3.3","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.2","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 10 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-soft-delete](https://github.com/san4ezy/django_softdelete) | `1.0.22` | `1.0.23` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.15` |\n| llama-index-llms-openai | `0.6.18` | `0.6.19` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.2` | `5.2.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.21` | `0.0.23` |\n| [prek](https://github.com/j178/prek) | `0.3.2` | `0.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.2` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\n\nUpdates `django-soft-delete` from 1.0.22 to 1.0.23\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/san4ezy/django_softdelete/blob/master/CHANGELOG.md\"\u003edjango-soft-delete's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.0.23] - 2026-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ealters_data = True\u003c/code\u003e attribute to \u003ccode\u003erestore()\u003c/code\u003e, \u003ccode\u003edelete()\u003c/code\u003e, and \u003ccode\u003ehard_delete()\u003c/code\u003e methods on both models and querysets. This prevents these methods from being accidentally executed from Django templates, following Django security best practices (Issue \u003ca href=\"https://redirect.github.com/san4ezy/django_softdelete/issues/67\"\u003e#67\u003c/a\u003e). Issue described here: \u003ca href=\"https://redirect.github.com/san4ezy/django_softdelete/issues/67\"\u003esan4ezy/django_softdelete#67\u003c/a\u003e .\u003c/li\u003e\n\u003cli\u003eAdded regression tests to ensure data-altering methods remain protected from template execution.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/san4ezy/django_softdelete/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-llms-openai` from 0.6.18 to 0.6.19\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `sentence-transformers` from 5.2.2 to 5.2.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/eae47949a4cd318cee9c7812da8b2d955230f98f\"\u003e\u003ccode\u003eeae4794\u003c/code\u003e\u003c/a\u003e Release v5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/1a6b4e6180b00d298c2321fffd96e569c0da70c5\"\u003e\u003ccode\u003e1a6b4e6\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003ecompat\u003c/code\u003e] Introduce Transformers v5.2 compatibility: trainer _nested_gather ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.2.2...v5.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.21 to 0.0.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003ch1\u003eSummary\u003c/h1\u003e\n\u003cp\u003eThis version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e10b5162 \u003cstrong\u003ecompat\u003c/strong\u003e – lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.22\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version adds support for the \u003ca href=\"https://github.com/mkdocstrings/autorefs\"\u003eautorefs\u003c/a\u003e plugin, and further improves performance for large mkdocstrings projects. The \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e is updated to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.7\"\u003ev0.0.7\u003c/a\u003e, which fixes some isses with the mobile browsering experience.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ee32ab15 \u003cstrong\u003ezensical\u003c/strong\u003e, \u003cstrong\u003ecompat\u003c/strong\u003e – support autorefs plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1b1fd84 \u003cstrong\u003ezensical\u003c/strong\u003e – reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003ee33c972 \u003cstrong\u003ecompat\u003c/strong\u003e – don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003eb3c699b \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003ee233f9f \u003cstrong\u003ecompat\u003c/strong\u003e – fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee3fc49f \u003cstrong\u003ezensical\u003c/strong\u003e – relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/d9462afc011bdfce4b948e0c1aa71af56144cf9f\"\u003e\u003ccode\u003ed9462af\u003c/code\u003e\u003c/a\u003e chore: release v0.0.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/10b5162aa6782983ebdbdd6445030d9a309579a8\"\u003e\u003ccode\u003e10b5162\u003c/code\u003e\u003c/a\u003e fix: lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7b845d9212787f972ab7d9e4b7c363121e3c50fa\"\u003e\u003ccode\u003e7b845d9\u003c/code\u003e\u003c/a\u003e chore: release v0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1b1fd8458d4a372d85c8a255618f6eb7354204b3\"\u003e\u003ccode\u003e1b1fd84\u003c/code\u003e\u003c/a\u003e fix: reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e33c972e03fe69e69ab6774bbda8ce5652fdc848\"\u003e\u003ccode\u003ee33c972\u003c/code\u003e\u003c/a\u003e fix: don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/b3c699ba45b0db862f8230832b21b2463690c99f\"\u003e\u003ccode\u003eb3c699b\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/8352b1a14f2f7ffc82e10eefee959f5e6f6d2fde\"\u003e\u003ccode\u003e8352b1a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003ezrx\u003c/code\u003e to v0.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e32ab15b1fe6bd81f1a66780e6084f563165e1c1\"\u003e\u003ccode\u003ee32ab15\u003c/code\u003e\u003c/a\u003e feature: support autorefs plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e233f9f7d4520e8a6a382c05b9250149e63ce58b\"\u003e\u003ccode\u003ee233f9f\u003c/code\u003e\u003c/a\u003e fix: fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e3fc49f72fb299f467557edabda6a004c84597fd\"\u003e\u003ccode\u003ee3fc49f\u003c/code\u003e\u003c/a\u003e fix: relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.21...v0.0.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.2 to 0.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.3\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c741c8c277d97f206aea369c4e69405fafc3cf29\"\u003e\u003ccode\u003ec741c8c\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1655\"\u003e#1655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7c52973ec0009f7074ea55afefc81a1314456c07\"\u003e\u003ccode\u003e7c52973\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.10.2 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1639\"\u003e#1639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34d30bc543d024851f07b33cbd33f7dc6cabdf08\"\u003e\u003ccode\u003e34d30bc\u003c/code\u003e\u003c/a\u003e docs: add prek usage reference for homeassistant Powercalc project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/97c3e0dd0eeee4e27ef663af6749bf50a5f86b84\"\u003e\u003ccode\u003e97c3e0d\u003c/code\u003e\u003c/a\u003e Update Rust crate async-compression to v0.4.39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/903e324bfe77564b195b9d63033cdda655548c09\"\u003e\u003ccode\u003e903e324\u003c/code\u003e\u003c/a\u003e Update Rust crate clap to v4.5.58\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/6412d77cc7deb77914aee5d94c38f526dea48fd8\"\u003e\u003ccode\u003e6412d77\u003c/code\u003e\u003c/a\u003e Update Rust crate clap_complete to v4.5.66 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/04b4a7226c36ac44fdc9c0d29fe05c4a4f04b4e7\"\u003e\u003ccode\u003e04b4a72\u003c/code\u003e\u003c/a\u003e Update Rust crate libc to v0.2.182\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e9e1850c0a92e4c6134b34185e4395a2bd553cf9\"\u003e\u003ccode\u003ee9e1850\u003c/code\u003e\u003c/a\u003e Update Rust crate lazy-regex to v3.6.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e024d65e172ccb6838e64753b91781a584029360\"\u003e\u003ccode\u003ee024d65\u003c/code\u003e\u003c/a\u003e Update Rust crate memchr to v2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/cd79359265f00a7684f94f0b5bff2b3ddccc350d\"\u003e\u003ccode\u003ecd79359\u003c/code\u003e\u003c/a\u003e Update Rust crate indicatif to v0.18.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1644\"\u003e#1644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.2...v0.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.2\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eExpand the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23385\"\u003e#23385\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eIn preview, Ruff now enables a significantly expanded default rule set of 412 rules, up from the stable default set of 59 rules. The new rules are mostly a superset of the stable defaults, with the exception of these rules, which are removed from the preview defaults:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-imports-on-one-line\"\u003e\u003ccode\u003emultiple-imports-on-one-line\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE401\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE402\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE701\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-statements-on-one-line-semicolon\"\u003e\u003ccode\u003emultiple-statements-on-one-line-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE702\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/useless-semicolon\"\u003e\u003ccode\u003euseless-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE703\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/none-comparison\"\u003e\u003ccode\u003enone-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE711\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/true-false-comparison\"\u003e\u003ccode\u003etrue-false-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE712\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-in-test\"\u003e\u003ccode\u003enot-in-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE713\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-is-test\"\u003e\u003ccode\u003enot-is-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE714\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/type-comparison\"\u003e\u003ccode\u003etype-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE721\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lambda-assignment\"\u003e\u003ccode\u003elambda-assignment\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE731\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-variable-name\"\u003e\u003ccode\u003eambiguous-variable-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE741\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-class-name\"\u003e\u003ccode\u003eambiguous-class-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE742\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-function-name\"\u003e\u003ccode\u003eambiguous-function-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE743\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star\"\u003e\u003ccode\u003eundefined-local-with-import-star\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF403\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF405\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/forward-annotation-syntax-error\"\u003e\u003ccode\u003eforward-annotation-syntax-error\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF722\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you use preview and prefer the old defaults, you can restore them with configuration like:\u003c/p\u003e\n\u003cpre lang=\"toml\"\u003e\u003ccode\u003e\r\n# ruff.toml\r\n\u003cp\u003e[lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\u003c/p\u003e\n\u003ch1\u003epyproject.toml\u003c/h1\u003e\n\u003cp\u003e[tool.ruff.lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIf you do give them a try, feel free to share your feedback in the \u003ca href=\"https://github.com/astral-sh/ruff/discussions/23203\"\u003eGitHub discussion\u003c/a\u003e!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Also check string annotations (\u003ccode\u003ePYI041\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19023\"\u003e#19023\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.2\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eExpand the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23385\"\u003e#23385\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eIn preview, Ruff now enables a significantly expanded default rule set of 412\nrules, up from the stable default set of 59 rules. The new rules are mostly a\nsuperset of the stable defaults, with the exception of these rules, which are\nremoved from the preview defaults:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-imports-on-one-line\"\u003e\u003ccode\u003emultiple-imports-on-one-line\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE401\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE402\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE701\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-statements-on-one-line-semicolon\"\u003e\u003ccode\u003emultiple-statements-on-one-line-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE702\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/useless-semicolon\"\u003e\u003ccode\u003euseless-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE703\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/none-comparison\"\u003e\u003ccode\u003enone-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE711\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/true-false-comparison\"\u003e\u003ccode\u003etrue-false-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE712\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-in-test\"\u003e\u003ccode\u003enot-in-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE713\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-is-test\"\u003e\u003ccode\u003enot-is-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE714\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/type-comparison\"\u003e\u003ccode\u003etype-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE721\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lambda-assignment\"\u003e\u003ccode\u003elambda-assignment\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE731\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-variable-name\"\u003e\u003ccode\u003eambiguous-variable-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE741\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-class-name\"\u003e\u003ccode\u003eambiguous-class-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE742\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-function-name\"\u003e\u003ccode\u003eambiguous-function-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE743\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star\"\u003e\u003ccode\u003eundefined-local-with-import-star\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF403\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF405\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/forward-annotation-syntax-error\"\u003e\u003ccode\u003eforward-annotation-syntax-error\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF722\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you use preview and prefer the old defaults, you can restore them with\nconfiguration like:\u003c/p\u003e\n\u003cpre lang=\"toml\"\u003e\u003ccode\u003e\n# ruff.toml\n\u003cp\u003e[lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\u003c/p\u003e\n\u003ch1\u003epyproject.toml\u003c/h1\u003e\n\u003cp\u003e[tool.ruff.lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIf you do give them a try, feel free to share your feedback in the \u003ca href=\"https://github.com/astral-sh/ruff/discussions/23203\"\u003eGitHub\ndiscussion\u003c/a\u003e!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9d18ee9115f9cbb4c21478baa7c1fa2b46e0759c\"\u003e\u003ccode\u003e9d18ee9\u003c/code\u003e\u003c/a\u003e Hard code workflow name and \u003ccode\u003ecancel-in-progress\u003c/code\u003e only for PRs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23431\"\u003e#23431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc15f024b931fe56365f40de3fab01219c092c4\"\u003e\u003ccode\u003e7cc15f0\u003c/code\u003e\u003c/a\u003e Bump 0.15.2 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23430\"\u003e#23430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d1b544393ae9cddd8e48ebee8dbfd54bda89f375\"\u003e\u003ccode\u003ed1b5443\u003c/code\u003e\u003c/a\u003e Add extension mapping to configuration file options (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23384\"\u003e#23384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/222574af90c5c0ca8f84c8385cf30c7c10ac2496\"\u003e\u003ccode\u003e222574a\u003c/code\u003e\u003c/a\u003e Expand the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23385\"\u003e#23385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1465b5de3829549b45397e9587b83ab7ac6d26d0\"\u003e\u003ccode\u003e1465b5d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-async\u003c/code\u003e] Fix \u003ccode\u003ein_async_context\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23426\"\u003e#23426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/410902fa401afda969cc000f13be341896e6868e\"\u003e\u003ccode\u003e410902f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Fix handling of \u003ccode\u003etyping.{io,re}\u003c/code\u003e (\u003ccode\u003eUP035\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23131\"\u003e#23131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/729610acd9e19f57526e8ca40f355626154826bb\"\u003e\u003ccode\u003e729610a\u003c/code\u003e\u003c/a\u003e [ty] Fall back to ambiguous for large control flow graphs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23399\"\u003e#23399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1425c185b0a47be87112762f65b5bf7e323fb950\"\u003e\u003ccode\u003e1425c18\u003c/code\u003e\u003c/a\u003e [ty] Add code folding support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/97acaaea5f993f33d3f5bb27c5db760a2f3d1e8a\"\u003e\u003ccode\u003e97acaae\u003c/code\u003e\u003c/a\u003e [ty] Fix stack overflow for self-referential \u003ccode\u003eTypeOf\u003c/code\u003e in annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23407\"\u003e#23407\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1f380c82584a6dab7e8715bc7dd5ae187da1e69a\"\u003e\u003ccode\u003e1f380c8\u003c/code\u003e\u003c/a\u003e [ty] Update tests \u003ccode\u003ereveal_type\u003c/code\u003e and \u003ccode\u003eNever\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23418\"\u003e#23418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12136","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12136","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12136/packages"},{"uuid":"3970246270","node_id":"PR_kwDOG1Zs187FQPet","number":12127,"state":"open","title":"Chore(deps): Bump the utilities-patch group with 7 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-20T20:26:43.000Z","updated_at":"2026-02-22T04:00:19.588Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":7,"packages":[{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-llms-openai","old_version":"0.6.18","new_version":"0.6.19"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"sentence-transformers","old_version":"5.2.2","new_version":"5.2.3","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"prek","old_version":"0.3.2","new_version":"0.3.3","repository_url":"https://github.com/j178/prek"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.15` |\n| llama-index-llms-openai | `0.6.18` | `0.6.19` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.2` | `5.2.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [prek](https://github.com/j178/prek) | `0.3.2` | `0.3.3` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-llms-openai` from 0.6.18 to 0.6.19\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `sentence-transformers` from 5.2.2 to 5.2.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/eae47949a4cd318cee9c7812da8b2d955230f98f\"\u003e\u003ccode\u003eeae4794\u003c/code\u003e\u003c/a\u003e Release v5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/1a6b4e6180b00d298c2321fffd96e569c0da70c5\"\u003e\u003ccode\u003e1a6b4e6\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003ecompat\u003c/code\u003e] Introduce Transformers v5.2 compatibility: trainer _nested_gather ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.2.2...v5.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.2 to 0.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.3\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c741c8c277d97f206aea369c4e69405fafc3cf29\"\u003e\u003ccode\u003ec741c8c\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1655\"\u003e#1655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7c52973ec0009f7074ea55afefc81a1314456c07\"\u003e\u003ccode\u003e7c52973\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.10.2 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1639\"\u003e#1639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34d30bc543d024851f07b33cbd33f7dc6cabdf08\"\u003e\u003ccode\u003e34d30bc\u003c/code\u003e\u003c/a\u003e docs: add prek usage reference for homeassistant Powercalc project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/97c3e0dd0eeee4e27ef663af6749bf50a5f86b84\"\u003e\u003ccode\u003e97c3e0d\u003c/code\u003e\u003c/a\u003e Update Rust crate async-compression to v0.4.39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/903e324bfe77564b195b9d63033cdda655548c09\"\u003e\u003ccode\u003e903e324\u003c/code\u003e\u003c/a\u003e Update Rust crate clap to v4.5.58\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/6412d77cc7deb77914aee5d94c38f526dea48fd8\"\u003e\u003ccode\u003e6412d77\u003c/code\u003e\u003c/a\u003e Update Rust crate clap_complete to v4.5.66 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/04b4a7226c36ac44fdc9c0d29fe05c4a4f04b4e7\"\u003e\u003ccode\u003e04b4a72\u003c/code\u003e\u003c/a\u003e Update Rust crate libc to v0.2.182\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e9e1850c0a92e4c6134b34185e4395a2bd553cf9\"\u003e\u003ccode\u003ee9e1850\u003c/code\u003e\u003c/a\u003e Update Rust crate lazy-regex to v3.6.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e024d65e172ccb6838e64753b91781a584029360\"\u003e\u003ccode\u003ee024d65\u003c/code\u003e\u003c/a\u003e Update Rust crate memchr to v2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/cd79359265f00a7684f94f0b5bff2b3ddccc350d\"\u003e\u003ccode\u003ecd79359\u003c/code\u003e\u003c/a\u003e Update Rust crate indicatif to v0.18.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1644\"\u003e#1644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.2...v0.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12127/packages"},{"uuid":"3968222814","node_id":"PR_kwDOLYRIeM7FJib2","number":16,"state":"closed","title":"Bump the optional group with 15 updates","user":"dependabot[bot]","labels":["part:tooling"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-20T12:04:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-20T12:02:39.000Z","updated_at":"2026-02-20T12:04:44.000Z","time_to_close":123,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"optional","update_count":15,"packages":[{"name":"flake8","old_version":"7.0.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"flake8-pyproject","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/john-hen/Flake8-pyproject"},{"name":"pydoclint","old_version":"0.4.1","new_version":"0.8.3","repository_url":"https://github.com/jsh9/pydoclint"},{"name":"markdown","old_version":"3.6","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mike","old_version":"2.1.1","new_version":"2.1.3","repository_url":"https://github.com/jimporter/mike"},{"name":"mkdocs-gen-files","old_version":"0.5.0","new_version":"0.6.0","repository_url":"https://github.com/oprypin/mkdocs-gen-files"},{"name":"mkdocs-literate-nav","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-macros-plugin","old_version":"1.0.5","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"mkdocs-material","old_version":"9.5.25","new_version":"9.7.2","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"frequenz-repo-config","old_version":"0.9.2","new_version":"0.14.0"},{"name":"mypy","old_version":"1.10.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"types-markdown","old_version":"3.6.0.20240316","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"frequenz-repo-config","old_version":"0.9.2","new_version":"0.14.0"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"async-solipsism","old_version":"0.6","new_version":"0.9","repository_url":"https://github.com/bmerry/async-solipsism"}],"path":null,"ecosystem":"pip"},"body":"Bumps the optional group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [flake8-pyproject](https://github.com/john-hen/Flake8-pyproject) | `1.2.3` | `1.2.4` |\n| [pydoclint](https://github.com/jsh9/pydoclint) | `0.4.1` | `0.8.3` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.6` | `3.10.2` |\n| [mike](https://github.com/jimporter/mike) | `2.1.1` | `2.1.3` |\n| [mkdocs-gen-files](https://github.com/oprypin/mkdocs-gen-files) | `0.5.0` | `0.6.0` |\n| [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) | `0.6.1` | `0.6.2` |\n| [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin) | `1.0.5` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.25` | `9.7.2` |\n| [frequenz-repo-config[lib]](https://github.com/frequenz-floss/frequenz-repo-config-python) | `0.9.2` | `0.14.0` |\n| [mypy](https://github.com/python/mypy) | `1.10.0` | `1.19.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.6.0.20240316` | `3.10.2.20260211` |\n| [frequenz-repo-config[extra-lint-examples]](https://github.com/frequenz-floss/frequenz-repo-config-python) | `0.9.2` | `0.14.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [async-solipsism](https://github.com/bmerry/async-solipsism) | `0.6` | `0.9` |\n\nUpdates `flake8` from 7.0.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/c48217e1fc006c2dddd14df54e83b67da15de5cd\"\u003e\u003ccode\u003ec48217e\u003c/code\u003e\u003c/a\u003e Release 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f9e0f33281d5bb892cae2c674ac398439d99c732\"\u003e\u003ccode\u003ef9e0f33\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1986\"\u003e#1986\u003c/a\u003e from PyCQA/document-f542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6bcdb628597fa2d03494965089ff87a492ffc1e9\"\u003e\u003ccode\u003e6bcdb62\u003c/code\u003e\u003c/a\u003e document F542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/70a15b8890d5bdf8c449ebb1b5259bd0140cc16b\"\u003e\u003ccode\u003e70a15b8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1985\"\u003e#1985\u003c/a\u003e from PyCQA/upgrade-deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/4941a3e32e54488698ecbc23993bfeb2a60c0fc5\"\u003e\u003ccode\u003e4941a3e\u003c/code\u003e\u003c/a\u003e upgrade pyflakes / pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/23e4005c5501999c29e1e3774de7ed18d1e4e22d\"\u003e\u003ccode\u003e23e4005\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1983\"\u003e#1983\u003c/a\u003e from PyCQA/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/019424b80d3d7d5d8a2a1638f5877080546e3f46\"\u003e\u003ccode\u003e019424b\u003c/code\u003e\u003c/a\u003e add support for t-strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6b6f3d5fefecc994a06f425c18c3cddc9b71e4a4\"\u003e\u003ccode\u003e6b6f3d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1980\"\u003e#1980\u003c/a\u003e from PyCQA/asottile-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/8dfa6695b4fb1e1401b357367a0a71037d29f6aa\"\u003e\u003ccode\u003e8dfa669\u003c/code\u003e\u003c/a\u003e add rtd sphinx config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/ce3411118382d9332feb2749c8f417d10bfa2584\"\u003e\u003ccode\u003ece34111\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1976\"\u003e#1976\u003c/a\u003e from PyCQA/document-f824\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.0.0...7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8-pyproject` from 1.2.3 to 1.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-hen/Flake8-pyproject/releases\"\u003eflake8-pyproject's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes typo in name of meta variable in \u003ccode\u003e--toml-config\u003c/code\u003e help message. (\u003ca href=\"https://redirect.github.com/john-hen/Flake8-pyproject/issues/21\"\u003e#21\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRegisters GitHub repo as trusted publisher for PyPI releases. (\u003ca href=\"https://redirect.github.com/john-hen/Flake8-pyproject/issues/38\"\u003e#38\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/3c516a9319beee324f9a200dfb4e08677de4a63f\"\u003e\u003ccode\u003e3c516a9\u003c/code\u003e\u003c/a\u003e Bumped version to 1.2.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/df70f19558f784eb0cb7988440735d56f53f3cae\"\u003e\u003ccode\u003edf70f19\u003c/code\u003e\u003c/a\u003e Added GitHub workflow for releases on PyPI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/d46e99c695149cd860a918c354de0d1d89166b7e\"\u003e\u003ccode\u003ed46e99c\u003c/code\u003e\u003c/a\u003e Only run scheduled test weekly instead of nightly.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/da0b9ed7d586490aff8503e38f2d481c1706bdee\"\u003e\u003ccode\u003eda0b9ed\u003c/code\u003e\u003c/a\u003e Added link to GitHub releases as a project URL.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/8e4b87fbe7291687f41b11180c8b3ae486ac538e\"\u003e\u003ccode\u003e8e4b87f\u003c/code\u003e\u003c/a\u003e Cosmetic changes to code format of dev tools in \u003ccode\u003etools\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/4227bd4a987b66a9ab46f0b4e04b098e388598e7\"\u003e\u003ccode\u003e4227bd4\u003c/code\u003e\u003c/a\u003e Use longer names for dev tools in \u003ccode\u003etools\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/3866f48fbcd63231622f54e848268273605be1a8\"\u003e\u003ccode\u003e3866f48\u003c/code\u003e\u003c/a\u003e Mention early on that we need to be called in \u003ccode\u003epyproject.toml\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/40bf63915dabd85a53a7d06c24232a3b278c4b25\"\u003e\u003ccode\u003e40bf639\u003c/code\u003e\u003c/a\u003e Removed configuration and documentation of pre-commit hook.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/9df7abb5a4b1b25f032c7d3f06fd3f074424c471\"\u003e\u003ccode\u003e9df7abb\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/2c230622c7e81e3f2f6cd632272c92fd6bdda83b\"\u003e\u003ccode\u003e2c23062\u003c/code\u003e\u003c/a\u003e Fixed reporting of code coverage.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/john-hen/Flake8-pyproject/compare/1.2.3...1.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydoclint` from 0.4.1 to 0.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jsh9/pydoclint/releases\"\u003epydoclint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.8.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix baseline renegeration bug by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/275\"\u003ejsh9/pydoclint#275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd config option to allow omitting stars in varargs by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/276\"\u003ejsh9/pydoclint#276\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/277\"\u003ejsh9/pydoclint#277\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.8.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to partially match violation codes by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/272\"\u003ejsh9/pydoclint#272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how multiple \u003cstrong\u003einit\u003c/strong\u003e() are recognized by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/273\"\u003ejsh9/pydoclint#273\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.8.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange logic to detect docstring style mismatch by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/271\"\u003ejsh9/pydoclint#271\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd inline violation suppression for native mode by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/270\"\u003ejsh9/pydoclint#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.7.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefresh linters \u0026amp; formatters by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/269\"\u003ejsh9/pydoclint#269\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.7.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003e@property\u003c/code\u003e + \u003ccode\u003e@abstractmethod\u003c/code\u003e without a Returns: section by \u003ca href=\"https://github.com/barometz\"\u003e\u003ccode\u003e@​barometz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/261\"\u003ejsh9/pydoclint#261\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barometz\"\u003e\u003ccode\u003e@​barometz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/261\"\u003ejsh9/pydoclint#261\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.4...0.7.5\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.4...0.7.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.7.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jsh9/pydoclint/blob/main/CHANGELOG.md\"\u003epydoclint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.8.3] - 2025-11-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded\n\u003cul\u003e\n\u003cli\u003eA new config option \u003ccode\u003e--omit-stars-when-documenting-varargs\u003c/code\u003e (shortform:\n\u003ccode\u003e-oswdv\u003c/code\u003e) so docstrings may describe varargs without the leading \u003ccode\u003e*\u003c/code\u003e\ncharacters (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/268\"\u003ejsh9/pydoclint#268\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed\n\u003cul\u003e\n\u003cli\u003eA bug where \u003ccode\u003e--auto-regenerate-baseline\u003c/code\u003e removes entries of files that have\nnot yet been fixed (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/274\"\u003ejsh9/pydoclint#274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.8.2] - 2025-11-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded\n\u003cul\u003e\n\u003cli\u003eAbility to partially match violation codes in inline \u003ccode\u003enoqa\u003c/code\u003e in the native\nmode (which \u003cem\u003eflake8\u003c/em\u003e already supports)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed\n\u003cul\u003e\n\u003cli\u003eA bug: when there are more than one \u003ccode\u003e__init__()\u003c/code\u003e in a class (overloaded),\nthe first \u003ccode\u003e__init__()\u003c/code\u003e is incorrectly recognized as the \u0026quot;right\u0026quot; one. (The\nlast \u003ccode\u003e__init__()\u003c/code\u003e should be considered the right one.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.8.1] - 2025-11-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged\n\u003cul\u003e\n\u003cli\u003eThe logic to detect docstring style mismatches, fixing a false positive\ncase where non-Sphinx style docstrings are detected as Sphinx style\n(because there are some rST keywords in them)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.8.0] - 2025-11-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded\n\u003cul\u003e\n\u003cli\u003eNew functionality: \u003cem\u003epydoclint\u003c/em\u003e native mode can parse \u0026quot;noqa\u0026quot; comments and\nthus users can suppress violations in the native mode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.7.6] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged\n\u003cul\u003e\n\u003cli\u003eUpdated linter and auto-formatter configurations\u003c/li\u003e\n\u003cli\u003eMade a lot of changes to fix code style; some logic was also updated per\nthe suggestions of linters\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/98bb10c4e73a050e31471409df8edfaeb88befb8\"\u003e\u003ccode\u003e98bb10c\u003c/code\u003e\u003c/a\u003e Add config option to allow omitting stars in varargs (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/277\"\u003e#277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/c37407d03df27b4c37b31e697fd474377c3c4efc\"\u003e\u003ccode\u003ec37407d\u003c/code\u003e\u003c/a\u003e Fix baseline renegeration bug (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/276\"\u003e#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/3386cd2ad39784792a0d39d942dd4b26960c2a27\"\u003e\u003ccode\u003e3386cd2\u003c/code\u003e\u003c/a\u003e Fix baseline renegeration bug (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/275\"\u003e#275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/8c1081806da276917ac686a12f0c435414955da0\"\u003e\u003ccode\u003e8c10818\u003c/code\u003e\u003c/a\u003e Fix how multiple \u003cstrong\u003einit\u003c/strong\u003e() are recognized (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/273\"\u003e#273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/51435e3714765f9d4b220c868ab185670f3bb14b\"\u003e\u003ccode\u003e51435e3\u003c/code\u003e\u003c/a\u003e Add ability to partially match violation codes (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/e361239034992fbceac83994e47a40a5e7ecf3ea\"\u003e\u003ccode\u003ee361239\u003c/code\u003e\u003c/a\u003e Change logic to detect docstring style mismatch (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/271\"\u003e#271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/bf4c4021dccf832777452e05e94f98a36c59636b\"\u003e\u003ccode\u003ebf4c402\u003c/code\u003e\u003c/a\u003e Add hyperlink\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/a7585273e2b3c8e84a1883d33a168519947c807f\"\u003e\u003ccode\u003ea758527\u003c/code\u003e\u003c/a\u003e Update --check-style-mismatch explanations in config_options.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/e8ffd8988fe57ce4dc8a0625c3281b24ca396240\"\u003e\u003ccode\u003ee8ffd89\u003c/code\u003e\u003c/a\u003e Add inline violation suppression for native mode (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/0a9ad0c159fe5ced98dbbcd3b850a8850ed009b7\"\u003e\u003ccode\u003e0a9ad0c\u003c/code\u003e\u003c/a\u003e Refresh linters \u0026amp; formatters (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.4.1...0.8.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.6 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed comment parsing in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed declarations in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed HTML tag \u003ccode\u003e\u0026lt;foo\u003c/code\u003e and Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.2] - 2025-06-19\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.6...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.1 to 2.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.3\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen deploying using a deploy prefix, only delete stale versions of the docs within that prefix\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.1.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove ambiguity of some Git commands so that file and branch names don't collide\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.3 (2024-08-12)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen deploying using a deploy prefix, only delete stale versions of the docs\nwithin that prefix\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003ev2.1.2 (2024-06-23)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove ambiguity of some Git commands so that file and branch names don't\ncollide\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/c4e96085f86e6930e9669e12d81941eff7c3de1d\"\u003e\u003ccode\u003ec4e9608\u003c/code\u003e\u003c/a\u003e Update version to 2.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/3b19e27e9041cca20131f97419a9d7d88f85cf37\"\u003e\u003ccode\u003e3b19e27\u003c/code\u003e\u003c/a\u003e Announce the previous change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/dd9826a855965b0ce6bd06d290665f43ce9dabab\"\u003e\u003ccode\u003edd9826a\u003c/code\u003e\u003c/a\u003e Consult deploy prefix when deleting files during deploy; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/227\"\u003e#227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/91cf5ee70da446a80bbc6108513581d0d6858ecf\"\u003e\u003ccode\u003e91cf5ee\u003c/code\u003e\u003c/a\u003e Properly escape parameters in regex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/90cf1314af3452003eaf40c9f97853efd2ee4e86\"\u003e\u003ccode\u003e90cf131\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/62aaeafe60927b0653b319585cbe4a1a1eb1bc23\"\u003e\u003ccode\u003e62aaeaf\u003c/code\u003e\u003c/a\u003e Update version to 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/3f7d756e26fca03660e6f08927c7cd911e933c78\"\u003e\u003ccode\u003e3f7d756\u003c/code\u003e\u003c/a\u003e Use \u0026quot;--\u0026quot; to disambiguate Git arguments in a few more places; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/218\"\u003e#218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/5e6970d65beaf2c92fa1d22dbf524a931a393e8b\"\u003e\u003ccode\u003e5e6970d\u003c/code\u003e\u003c/a\u003e Belatedly update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/9291efbd6961d652c16c000dc1fe4f2f1e19f94c\"\u003e\u003ccode\u003e9291efb\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.1...v2.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-gen-files` from 0.5.0 to 0.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/releases\"\u003emkdocs-gen-files's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompatibility with MkDocs 1.6 is improved - generated files don't have to have an \u003ccode\u003eabs_src_path\u003c/code\u003e - \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/7baa03225e6c34cc85d17f79c47e42eb2c2e359e\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/commit/7baa03225e6c34cc85d17f79c47e42eb2c2e359e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThere was a bug: using \u003ccode\u003eedit_uri_template\u003c/code\u003e in MkDocs would prevent \u003ccode\u003eset_edit_path()\u003c/code\u003e from working.\nThis is now fixed - \u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/37\"\u003e#37\u003c/a\u003e - thanks to \u003ca href=\"https://github.com/frankkusters\"\u003e\u003ccode\u003e@​frankkusters\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe MkDocs configuration file now can be \u003ccode\u003emkdocs.yaml\u003c/code\u003e, not only \u003ccode\u003emkdocs.yml\u003c/code\u003e. Thanks to \u003ca href=\"https://github.com/mgor\"\u003e\u003ccode\u003e@​mgor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/pull/39\"\u003eoprypin/mkdocs-gen-files#39\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMkDocs 1.4.1 is now the lowest supported version -  \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/2e47124f6a00150b40e2694cfb721d4f373be914\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/commit/2e47124f6a00150b40e2694cfb721d4f373be914\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.9 is now the lowest supported version.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://oprypin.github.io/mkdocs-gen-files/extras.html#programmatically-generating-the-navigation\"\u003enav generator\u003c/a\u003e can support empty paths - \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/440b0bfafa35bd1b1b3b3ed5aaa7b9f11d9cfe7c\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/commit/440b0bfafa35bd1b1b3b3ed5aaa7b9f11d9cfe7c\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/5136a79ab5af156688cca28fb1c081204250159b\"\u003e\u003ccode\u003e5136a79\u003c/code\u003e\u003c/a\u003e v0.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/df9d4dc3fb81edb6b9337e03a24421cc6f040d52\"\u003e\u003ccode\u003edf9d4dc\u003c/code\u003e\u003c/a\u003e Add a workaround that allows edit_uri_template to work in MkDocs 1.6+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/e0e32472a5651f30545354cbd903e26091f50b38\"\u003e\u003ccode\u003ee0e3247\u003c/code\u003e\u003c/a\u003e allow \u003ccode\u003e.yaml\u003c/code\u003e extension for mkdocs configuration file (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/bfe7bbcf0b336d5d9f5d395224b4d063c10c3778\"\u003e\u003ccode\u003ebfe7bbc\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/d56e1d95d927bc53afc5f18ec9ef8167e9b4de13\"\u003e\u003ccode\u003ed56e1d9\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/440b0bfafa35bd1b1b3b3ed5aaa7b9f11d9cfe7c\"\u003e\u003ccode\u003e440b0bf\u003c/code\u003e\u003c/a\u003e Support empty path in \u003ccode\u003eNav\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/85d56eb8ed6eccf1528ca158dbf97c8f0b6bb72e\"\u003e\u003ccode\u003e85d56eb\u003c/code\u003e\u003c/a\u003e Add more lints, update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/1a822d9e0d376d8ecae95fb961144a5af4887ef1\"\u003e\u003ccode\u003e1a822d9\u003c/code\u003e\u003c/a\u003e Update template, fix lints, update docs deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/7baa03225e6c34cc85d17f79c47e42eb2c2e359e\"\u003e\u003ccode\u003e7baa032\u003c/code\u003e\u003c/a\u003e Fix types and compatibility with MkDocs 1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/6fd0fe048ebf928763458d8dba1a476ca2196117\"\u003e\u003ccode\u003e6fd0fe0\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.1 to 0.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/6cc020ab973468678fa4420434ce84ee53ea2208?w=1\"\u003eFix compatibility with MkDocs 1.6+\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire at least MkDocs 1.4\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther refactors, see \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.1...v0.6.2\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.1...v0.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/7423f00fe2c26c879310f76631b8180cb2bb6ace\"\u003e\u003ccode\u003e7423f00\u003c/code\u003e\u003c/a\u003e v0.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/285344cc3e328c484deb5d932b722a252336e71b\"\u003e\u003ccode\u003e285344c\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/c39fba6d1d789fb7ab9ee31d75fc2ec5973797c0\"\u003e\u003ccode\u003ec39fba6\u003c/code\u003e\u003c/a\u003e Put more items into TYPE_CHECKING\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/889bcb240e2757f4a2a0efd3a0ef9d58db96427d\"\u003e\u003ccode\u003e889bcb2\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/12f9f79e8ce5d6ee2c934e7787d20d0f055e4c50\"\u003e\u003ccode\u003e12f9f79\u003c/code\u003e\u003c/a\u003e Add more lints, update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/57210ef5a0e855d7cf49be6e2136e9208493cc13\"\u003e\u003ccode\u003e57210ef\u003c/code\u003e\u003c/a\u003e Update template, fix lints, update docs deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/6cc020ab973468678fa4420434ce84ee53ea2208\"\u003e\u003ccode\u003e6cc020a\u003c/code\u003e\u003c/a\u003e Fix types and compatibility with MkDocs 1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/9c0564974487df94a62158028fd5e839f6779f68\"\u003e\u003ccode\u003e9c05649\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/07787d5ac634eca808742de2dfafad60f676d90c\"\u003e\u003ccode\u003e07787d5\u003c/code\u003e\u003c/a\u003e Refactor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/1a7b4d74d283cdabe0b625614cf00e299d678c3f\"\u003e\u003ccode\u003e1a7b4d7\u003c/code\u003e\u003c/a\u003e Refactor for type annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.1...v0.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.0.5 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/releases\"\u003emkdocs-macros-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev.1.3.7 With Test Framework\u003c/h2\u003e\n\u003ch2\u003e1.3.7, 2024-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: incompatibility with the d2 module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.6, 2024-10-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: complete test framework, using pytest and Mkdocs-Test (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/244\"\u003e#244\u003c/a\u003e)\nA number of automated test cases are implemented.\u003c/li\u003e\n\u003cli\u003eChanged: move from setup.py to pyproject.toml (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0, 2024-09-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: three hooks \u003ccode\u003eregister_variables/macros/filters\u003c/code\u003e to facilitate\ncooperation with other MkDocs plugins.\u003c/li\u003e\n\u003cli\u003eFixed: `define_env() was always required in module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: trace the case when no module is found (INFO)\u003c/li\u003e\n\u003cli\u003eImproved documentation, particularly about HTML pages\u003c/li\u003e\n\u003cli\u003eAdded: parameters \u003ccode\u003ej2_comment_start_string\u003c/code\u003e and\n\u003ccode\u003ej2_comment_end_string\u003c/code\u003e to plugin's parameters,\nto specify alternate markers for comments.\u003c/li\u003e\n\u003cli\u003eAdded the multiline parameter \u003ccode\u003eforce_render_paths\u003c/code\u003e in the config file,\nto specify directories or file patterns to be rendered for the case when \u003ccode\u003erender_by_default = false\u003c/code\u003e\n(the \u003ccode\u003erender_macros\u003c/code\u003e parameter in the YAML header of the page\nhas the last word).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.5, 2023-10-31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: git.short_tag (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: Mermaid diagrams in the documentation (Readthedocs)\u003c/li\u003e\n\u003cli\u003eFixed: Changelog was no longer displayed (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/186\"\u003e#186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.7, 2024-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: incompatibility with the d2 module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.6, 2024-10-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: complete test framework, using pytest and Mkdocs-Test (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/244\"\u003e#244\u003c/a\u003e)\nA number of automated test cases are implemented.\u003c/li\u003e\n\u003cli\u003eChanged: move from setup.py to pyproject.toml (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0, 2024-09-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: three hooks \u003ccode\u003eregister_variables/macros/filters\u003c/code\u003e to facilitate\ncooperation with other MkDocs plugins.\u003c/li\u003e\n\u003cli\u003eFixed: `define_env() was always required in module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: trace the case when no module is found (INFO)\u003c/li\u003e\n\u003cli\u003eImproved documentation, particularly about HTML pages\u003c/li\u003e\n\u003cli\u003eAdded: parameters \u003ccode\u003ej2_comment_start_string\u003c/code\u003e and\n\u003ccode\u003ej2_comment_end_string\u003c/code\u003e to plugin's parameters,\nto specify alternate markers for comments.\u003c/li\u003e\n\u003cli\u003eAdded the multiline parameter \u003ccode\u003eforce_render_paths\u003c/code\u003e in the config file,\nto specify directories or file patterns to be rendered for the case when \u003ccode\u003erender_by_default = false\u003c/code\u003e\n(the \u003ccode\u003erender_macros\u003c/code\u003e parameter in the YAML header of the page\nhas the last word).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.0.5...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.5.25 to 9.7.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.2\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to \u003ccode\u003emkdocs build\u003c/code\u003e about impending MkDocs 2.0 incompatibility (doesn't affect strict mode)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.1\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is now in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features. Going forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the Insiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote on deprecated plugins\u003c/strong\u003e: The [projects] and [typeset] plugins are included in this release, but must be considered deprecated. Both plugins proved unsustainable to maintain and represent architectural dead ends. They are provided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eChanges\u003c/strong\u003e:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pinned blog posts and author profiles\u003c/li\u003e\n\u003cli\u003eAdded support for customizing pagination for blog index pages\u003c/li\u003e\n\u003cli\u003eAdded support for customizing blog category sort order\u003c/li\u003e\n\u003cli\u003eAdded support for staying on page when switching languages\u003c/li\u003e\n\u003cli\u003eAdded support for disabling tags in table of contents\u003c/li\u003e\n\u003cli\u003eAdded support for nested tags and shadow tags\u003c/li\u003e\n\u003cli\u003eAdded support for footnote tooltips\u003c/li\u003e\n\u003cli\u003eAdded support for instant previews\u003c/li\u003e\n\u003cli\u003eAdded support for instant prefetching\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card layouts\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card background images\u003c/li\u003e\n\u003cli\u003eAdded support for selectable rangs in code blocks\u003c/li\u003e\n\u003cli\u003eAdded support for custom selectors for code annotations\u003c/li\u003e\n\u003cli\u003eAdded support for configurable log level in privacy plugin\u003c/li\u003e\n\u003cli\u003eAdded support for processing of external links in privacy plugin\u003c/li\u003e\n\u003cli\u003eAdded support for automatic image optimization via optimize plugin\u003c/li\u003e\n\u003cli\u003eAdded support for navigation paths (breadcrumbs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/e21a119e38f7bca184e469eaeefa3d5535e5022b\"\u003e\u003ccode\u003ee21a119\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d5654b500a7021625d3c78f59842805c45e7b65a\"\u003e\u003ccode\u003ed5654b5\u003c/code\u003e\u003c/a\u003e Prepare 9.7.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b18af2f74a98e0d54f7f11b4e029d7ea29166df3\"\u003e\u003ccode\u003eb18af2f\u003c/code\u003e\u003c/a\u003e Opened up version ranges in optional dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/39cdfbd87c80079cd06a6d2a953cd53f531db61d\"\u003e\u003ccode\u003e39cdfbd\u003c/code\u003e\u003c/a\u003e Added social card for blog post\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/09ee7b1913eab1988ff3a81982c39634915336e1\"\u003e\u003ccode\u003e09ee7b1\u003c/code\u003e\u003c/a\u003e Added blog post on MkDocs 2.0 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8564\"\u003e#8564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/0d11a2d01174a0ab3bec97300c4432da44128253\"\u003e\u003ccode\u003e0d11a2d\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8560\"\u003e#8560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/8fc61b5cb00845825179d6fd3e331c789f83187b\"\u003e\u003ccode\u003e8fc61b5\u003c/code\u003e\u003c/a\u003e Updated dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/3f0eaca8da7e06db5bbb8ca41febb78459baf650\"\u003e\u003ccode\u003e3f0eaca\u003c/code\u003e\u003c/a\u003e Documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/eaba2dc24f196ecbf8e9aa87f8982be4e154920b\"\u003e\u003ccode\u003eeaba2dc\u003c/code\u003e\u003c/a\u003e Re-enable publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/7e236f6866b73aa080cd4d209752f6440bf67440\"\u003e\u003ccode\u003e7e236f6\u003c/code\u003e\u003c/a\u003e Temporarily disable publishing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.5.25...9.7.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `frequenz-repo-config[lib]` from 0.9.2 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/releases\"\u003efrequenz-repo-config[lib]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003ch1\u003eFrequenz Repository Configuration Release Notes\u003c/h1\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release adds a new workflow for Dependabot auto-merge and updates mkdocstrings to v2.\u003c/p\u003e\n\u003ch2\u003eUpgrading\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cp\u003eAll upgrading should be done via the migration script or regenerating the templates.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecurl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBut you might still need to adapt your code, just have a look at the script output for further instructions.\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emkdocsstrings-python\u003c/code\u003e v2 is now supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies have been updated.\u003c/li\u003e\n\u003cli\u003eNew warning ignores for protobuf gencode versions in pytest.\u003c/li\u003e\n\u003cli\u003eAdded Dependabot auto-merge workflow using \u003ccode\u003efrequenz-floss/dependabot-auto-approve\u003c/code\u003e action.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emkdocstrings: Move \u003ccode\u003epaths\u003c/code\u003e key to the right section in \u003ccode\u003emkdocs.yml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix invalid YAML syntax in Dependabot workflow template.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump types-pyyaml from 6.0.12.20250402 to 6.0.12.20250516 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/410\"\u003efrequenz-floss/frequenz-repo-config-python#410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the patch group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/408\"\u003efrequenz-floss/frequenz-repo-config-python#408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/409\"\u003efrequenz-floss/frequenz-repo-config-python#409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove filtering of warnings in pytest by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/411\"\u003efrequenz-floss/frequenz-repo-config-python#411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mkdocsstrings config by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/412\"\u003efrequenz-floss/frequenz-repo-config-python#412\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge v0.13.x into v0.x.x by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/420\"\u003efrequenz-floss/frequenz-repo-config-python#420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the patch group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/424\"\u003efrequenz-floss/frequenz-repo-config-python#424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/423\"\u003efrequenz-floss/frequenz-repo-config-python#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate templates dependencies by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/431\"\u003efrequenz-floss/frequenz-repo-config-python#431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump types-markdown from 3.8.0.20250415 to 3.8.0.20250708 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/430\"\u003efrequenz-floss/frequenz-repo-config-python#430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mypy from 1.16.1 to 1.17.1 in the minor group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/428\"\u003efrequenz-floss/frequenz-repo-config-python#428\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the mkdocstrings group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/432\"\u003efrequenz-floss/frequenz-repo-config-python#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/blob/v0.x.x/RELEASE_NOTES.md\"\u003efrequenz-repo-config[lib]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFrequenz Repository Configuration Release Notes\u003c/h1\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release migrates lightweight GitHub Actions workflow jobs to use the new cost-effective \u003ccode\u003eubuntu-slim\u003c/code\u003e runner.\nIt also updates cookiecutter pyproject license metadata to SPDX expressions to avoid setuptools deprecation warnings.\nThe auto-dependabot workflow now uses a GitHub App installation token instead of \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e to fix merge queue and auto-merge failures.\u003c/p\u003e\n\u003ch2\u003eUpgrading\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cp\u003eAll upgrading should be done via the migration script or regenerating the templates.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecurl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBut you might still need to adapt your code:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMigrated lightweight workflow jobs to use the new \u003ccode\u003eubuntu-slim\u003c/code\u003e runner for cost savings.\nThe following jobs now use \u003ccode\u003eubuntu-slim\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eci.yaml\u003c/code\u003e: \u003ccode\u003eprotolint\u003c/code\u003e, \u003ccode\u003enox-all\u003c/code\u003e, \u003ccode\u003etest-installation-all\u003c/code\u003e, \u003ccode\u003ecreate-github-release\u003c/code\u003e, \u003ccode\u003epublish-to-pypi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eci-pr.yaml\u003c/code\u003e: \u003ccode\u003eprotolint\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eauto-dependabot.yaml\u003c/code\u003e: \u003ccode\u003eauto-merge\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erelease-notes-check.yml\u003c/code\u003e: \u003ccode\u003echeck-release-notes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edco-merge-queue.yml\u003c/code\u003e: \u003ccode\u003eDCO\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elabeler.yml\u003c/code\u003e: \u003ccode\u003eLabel\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ca href=\"https://github.com/pjknkda/flake8-datetimez\"\u003e\u003ccode\u003eflake8-datetimez\u003c/code\u003e\u003c/a\u003e plugin to the \u003ccode\u003eflake8\u003c/code\u003e session. This plugin prevents accidental use of naive \u003ccode\u003edatetime\u003c/code\u003e objects by flagging calls that create or return datetimes without timezone information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CI workflow now uses a simpler matrix.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSwitched \u003ccode\u003eproject.license\u003c/code\u003e to SPDX expressions and added \u003ccode\u003eproject.license-files\u003c/code\u003e. This removes deprecated setuptools license metadata and avoids build warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/a72bd53788be72e52e392ba037d1846e9af9bdb0\"\u003e\u003ccode\u003ea72bd53\u003c/code\u003e\u003c/a\u003e Update mypy-protobuf requirement from \u0026lt;4,\u0026gt;=3.0.0 to \u0026gt;=3.0.0,\u0026lt;5 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/489\"\u003e#489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/10341d61167efc0469c829a7e5159f4fb98db43b\"\u003e\u003ccode\u003e10341d6\u003c/code\u003e\u003c/a\u003e template: Bump protobuf and grpcio to latest versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/af4476785f83336c08114d344820f3c5e47819fa\"\u003e\u003ccode\u003eaf44767\u003c/code\u003e\u003c/a\u003e Update mypy-protobuf requirement from \u0026lt;4,\u0026gt;=3.0.0 to \u0026gt;=3.0.0,\u0026lt;5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/8a4e067b5d713b7667fa0e2fb00328de43bf2355\"\u003e\u003ccode\u003e8a4e067\u003c/code\u003e\u003c/a\u003e Prepare for release v0.14.0 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/490\"\u003e#490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/73dc4ef502a49f798a6ad672edd6b6b5478851ec\"\u003e\u003ccode\u003e73dc4ef\u003c/code\u003e\u003c/a\u003e Prepare for release v0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/3d86e084ef981c8f5c8b7256918866bd22bbc069\"\u003e\u003ccode\u003e3d86e08\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/5894e50f24b3fcd742d8d44d2c370ad9a43d734f\"\u003e\u003ccode\u003e5894e50\u003c/code\u003e\u003c/a\u003e Bump pydoclint from 0.7.3 to 0.8.3 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/4a81cbbb8281d46e23c58112bdd202ace0861c85\"\u003e\u003ccode\u003e4a81cbb\u003c/code\u003e\u003c/a\u003e Bump frequenz-floss/gh-action-nox from 1.0.1 to 1.1.0 in the compatible group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/41b3a2cb1a54c14ca1a4bc1bb983b17bee5580b1\"\u003e\u003ccode\u003e41b3a2c\u003c/code\u003e\u003c/a\u003e Bump pytest from 9.0.1 to 9.0.2 in the patch group (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/487\"\u003e#487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/c2bbc77892b57010335680effe03cb368dc54b75\"\u003e\u003ccode\u003ec2bbc77\u003c/code\u003e\u003c/a\u003e Bump the minor group with 7 updates (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/compare/v0.9.2...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.10.0 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.10.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.6.0.20240316 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `frequenz-repo-config[extra-lint-examples]` from 0.9.2 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/releases\"\u003efrequenz-repo-config[extra-lint-examples]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003ch1\u003eFrequenz Repository Configuration Release Notes\u003c/h1\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release adds a new workflow for Dependabot auto-merge and updates mkdocstrings to v2.\u003c/p\u003e\n\u003ch2\u003eUpgrading\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cp\u003eAll upgrading should be done via the migration script or regenerating the templates.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecurl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBut you might still need to adapt your code, just have a look at the script output for further instructions.\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emkdocsstrings-python\u003c/code\u003e v2 is now supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies have been updated.\u003c/li\u003e\n\u003cli\u003eNew warning ignores for protobuf gencode versions in pytest.\u003c/li\u003e\n\u003cli\u003eAdded Dependabot auto-merge workflow using \u003ccode\u003efrequenz-floss/dependabot-auto-approve\u003c/code\u003e action.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emkdocstrings: Move \u003ccode\u003epaths\u003c/code\u003e key to the right section in \u003ccode\u003emkdocs.yml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix invalid YAML syntax in Dependabot workflow template.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump types-pyyaml from 6.0.12.20250402 to 6.0.12.20250516 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/llucax/frequenz-client-microgrid-python/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/llucax%2Ffrequenz-client-microgrid-python/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"3957872661","node_id":"PR_kwDOJRBi487Env5C","number":509,"state":"open","title":"Bump the patch group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["part:tooling","type:tech-debt","tool:auto-merged"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-18T13:27:57.000Z","updated_at":"2026-02-18T14:17:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"patch","update_count":4,"packages":[{"name":"mkdocstrings-python","old_version":"2.0.1","new_version":"2.0.2","repository_url":"https://github.com/mkdocstrings/python"},{"name":"markdown","old_version":"3.10","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocstrings","old_version":"1.0.0","new_version":"1.0.3"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch group with 4 updates in the / directory: [mkdocstrings-python](https://github.com/mkdocstrings/python), [markdown](https://github.com/Python-Markdown/markdown), [mkdocstrings[python]](https://github.com/mkdocstrings/mkdocstrings) and [types-markdown](https://github.com/typeshed-internal/stub_uploader).\n\nUpdates `mkdocstrings-python` from 2.0.1 to 2.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/releases\"\u003emkdocstrings-python's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md\"\u003emkdocstrings-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/4e546b5ddc527c74cfa695890faea404a69b7ee2\"\u003e\u003ccode\u003e4e546b5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/1781871f96323002a0be145695105a04e3f17f83\"\u003e\u003ccode\u003e1781871\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e\u003ccode\u003e0ae77a3\u003c/code\u003e\u003c/a\u003e fix: Fix aliases for parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/5bab7f500db27b95e0eb6a28b2fbb846a0fba146\"\u003e\u003ccode\u003e5bab7f5\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README (\u003ca href=\"https://redirect.github.com/mkdocstrings/python/issues/325\"\u003e#325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.2] - 2025-06-19\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.0...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings[python]` from 1.0.0 to 1.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases\"\u003emkdocstrings[python]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.2\"\u003e1.0.2\u003c/a\u003e - 2026-01-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.1...1.0.2\"\u003eCompare with 1.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse global instances for handlers and autorefs (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/9f79141d7eb35aba0c89a43795df0ee22a25a61e\"\u003e9f79141\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.1\"\u003e1.0.1\u003c/a\u003e - 2026-01-19\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.0...1.0.1\"\u003eCompare with 1.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual cross-references in Zensical too (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/d37d9079e5381350b2e3ffc5f698e28a5b572d36\"\u003ed37d907\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eSupport cross-references in Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/f43f1ee2cd38a0dba64fc7d0db3c5ffb037bf7f7\"\u003ef43f1ee\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/pull/812\"\u003ePR-812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md\"\u003emkdocstrings[python]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.2\"\u003e1.0.2\u003c/a\u003e - 2026-01-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.1...1.0.2\"\u003eCompare with 1.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse global instances for handlers and autorefs (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/9f79141d7eb35aba0c89a43795df0ee22a25a61e\"\u003e9f79141\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.1\"\u003e1.0.1\u003c/a\u003e - 2026-01-19\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.0...1.0.1\"\u003eCompare with 1.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual cross-references in Zensical too (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/d37d9079e5381350b2e3ffc5f698e28a5b572d36\"\u003ed37d907\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eSupport cross-references in Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/f43f1ee2cd38a0dba64fc7d0db3c5ffb037bf7f7\"\u003ef43f1ee\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/pull/812\"\u003ePR-812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/8bdff16af916b7285eae5a07eb085c21754be3b7\"\u003e\u003ccode\u003e8bdff16\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e\u003ccode\u003e65b27ec\u003c/code\u003e\u003c/a\u003e fix: Forward extension instances directly passed from Zensical\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/1624e2c52fbdff2ee611142edbf52454427f8f8d\"\u003e\u003ccode\u003e1624e2c\u003c/code\u003e\u003c/a\u003e ci: Update lint/type-checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/cc3d6a4d286668a9a249ac38dfaf8b45470f3314\"\u003e\u003ccode\u003ecc3d6a4\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003e\u003ccode\u003edbf263d\u003c/code\u003e\u003c/a\u003e fix: Propagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/4e66617fbe26636f86117c26b2482c21892166fe\"\u003e\u003ccode\u003e4e66617\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/9f79141d7eb35aba0c89a43795df0ee22a25a61e\"\u003e\u003ccode\u003e9f79141\u003c/code\u003e\u003c/a\u003e refactor: Use global instances for handlers and autorefs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/cb8a3c781674b8e23cf0048955d70358d7bab49e\"\u003e\u003ccode\u003ecb8a3c7\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/d37d9079e5381350b2e3ffc5f698e28a5b572d36\"\u003e\u003ccode\u003ed37d907\u003c/code\u003e\u003c/a\u003e refactor: Support manual cross-references in Zensical too\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/0edd18af00fa5907bb31e8309ecf5ad4309da552\"\u003e\u003ccode\u003e0edd18a\u003c/code\u003e\u003c/a\u003e chore: Clean up after v1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.0...1.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/frequenz-floss/frequenz-repo-config-python/pull/509","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Ffrequenz-repo-config-python/issues/509","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/509/packages"},{"uuid":"3948757824","node_id":"PR_kwDOG1Zs187EJpzo","number":12102,"state":"closed","title":"Chore(deps): Bump the utilities-patch group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-16T17:20:34.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-16T17:19:40.000Z","updated_at":"2026-02-16T17:20:53.000Z","time_to_close":54,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":7,"packages":[{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.14","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"zensical","old_version":"0.0.21","new_version":"0.0.23","repository_url":"https://github.com/zensical/zensical"},{"name":"prek","old_version":"0.3.2","new_version":"0.3.3","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.14` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.21` | `0.0.23` |\n| [prek](https://github.com/j178/prek) | `0.3.2` | `0.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.14\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-10]\u003c/h2\u003e\n\u003ch3\u003ellama-index-callbacks-wandb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update cacheable Anthropic models (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20581\"\u003e#20581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: add support for opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20635\"\u003e#20635\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix bedrock converse empty tool config issue (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20571\"\u003e#20571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(llms-bedrock-converse): improve bedrock converse retry handling (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20590\"\u003e#20590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20637\"\u003e#20637\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/b4b5f403acef36c17952aa9b64d5472775037459\"\u003e\u003ccode\u003eb4b5f40\u003c/code\u003e\u003c/a\u003e Release 0.14.14 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20670\"\u003e#20670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/500eca1748117e20d75922023fb2502c4950eb4e\"\u003e\u003ccode\u003e500eca1\u003c/code\u003e\u003c/a\u003e docs: Clarify async streaming usage for LLM and ChatEngine (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20653\"\u003e#20653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/d875559bda34622b16e230a711c1f885633ae171\"\u003e\u003ccode\u003ed875559\u003c/code\u003e\u003c/a\u003e fix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20\"\u003e#20\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/a141cd674492bcdb14afcb6af9db8ecc6de1754d\"\u003e\u003ccode\u003ea141cd6\u003c/code\u003e\u003c/a\u003e Add support for adaptive thinking in Bedrock (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20659\"\u003e#20659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/e0fc5f79963223681d6934e07dc4b46100d6544d\"\u003e\u003ccode\u003ee0fc5f7\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 2 directories with 7 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20662\"\u003e#20662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c915902f2e6a16b484ee9f968ad7e57713a51d05\"\u003e\u003ccode\u003ec915902\u003c/code\u003e\u003c/a\u003e docs: Couchbase example documentation fix (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20658\"\u003e#20658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/35e0406472518181f52d4d5b4e743dea88d4e751\"\u003e\u003ccode\u003e35e0406\u003c/code\u003e\u003c/a\u003e update readme (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20656\"\u003e#20656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c7ad9616f51d048d09138a645c088e203b3182be\"\u003e\u003ccode\u003ec7ad961\u003c/code\u003e\u003c/a\u003e fix: avoid ValueError in ag-ui message conversion for multi-block ChatMessage...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/9400c9019d23cd5f12f74d4b60b10f19292d979b\"\u003e\u003ccode\u003e9400c90\u003c/code\u003e\u003c/a\u003e feat: add chonkie integration (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20622\"\u003e#20622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/1ca1369a6eaaee1e575a7823502e021721ee5964\"\u003e\u003ccode\u003e1ca1369\u003c/code\u003e\u003c/a\u003e Fix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.21 to 0.0.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003ch1\u003eSummary\u003c/h1\u003e\n\u003cp\u003eThis version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e10b5162 \u003cstrong\u003ecompat\u003c/strong\u003e – lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.22\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version adds support for the \u003ca href=\"https://github.com/mkdocstrings/autorefs\"\u003eautorefs\u003c/a\u003e plugin, and further improves performance for large mkdocstrings projects. The \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e is updated to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.7\"\u003ev0.0.7\u003c/a\u003e, which fixes some isses with the mobile browsering experience.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ee32ab15 \u003cstrong\u003ezensical\u003c/strong\u003e, \u003cstrong\u003ecompat\u003c/strong\u003e – support autorefs plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1b1fd84 \u003cstrong\u003ezensical\u003c/strong\u003e – reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003ee33c972 \u003cstrong\u003ecompat\u003c/strong\u003e – don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003eb3c699b \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003ee233f9f \u003cstrong\u003ecompat\u003c/strong\u003e – fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee3fc49f \u003cstrong\u003ezensical\u003c/strong\u003e – relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/d9462afc011bdfce4b948e0c1aa71af56144cf9f\"\u003e\u003ccode\u003ed9462af\u003c/code\u003e\u003c/a\u003e chore: release v0.0.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/10b5162aa6782983ebdbdd6445030d9a309579a8\"\u003e\u003ccode\u003e10b5162\u003c/code\u003e\u003c/a\u003e fix: lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7b845d9212787f972ab7d9e4b7c363121e3c50fa\"\u003e\u003ccode\u003e7b845d9\u003c/code\u003e\u003c/a\u003e chore: release v0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1b1fd8458d4a372d85c8a255618f6eb7354204b3\"\u003e\u003ccode\u003e1b1fd84\u003c/code\u003e\u003c/a\u003e fix: reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e33c972e03fe69e69ab6774bbda8ce5652fdc848\"\u003e\u003ccode\u003ee33c972\u003c/code\u003e\u003c/a\u003e fix: don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/b3c699ba45b0db862f8230832b21b2463690c99f\"\u003e\u003ccode\u003eb3c699b\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/8352b1a14f2f7ffc82e10eefee959f5e6f6d2fde\"\u003e\u003ccode\u003e8352b1a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003ezrx\u003c/code\u003e to v0.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e32ab15b1fe6bd81f1a66780e6084f563165e1c1\"\u003e\u003ccode\u003ee32ab15\u003c/code\u003e\u003c/a\u003e feature: support autorefs plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e233f9f7d4520e8a6a382c05b9250149e63ce58b\"\u003e\u003ccode\u003ee233f9f\u003c/code\u003e\u003c/a\u003e fix: fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e3fc49f72fb299f467557edabda6a004c84597fd\"\u003e\u003ccode\u003ee3fc49f\u003c/code\u003e\u003c/a\u003e fix: relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.21...v0.0.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.2 to 0.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.3\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c741c8c277d97f206aea369c4e69405fafc3cf29\"\u003e\u003ccode\u003ec741c8c\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1655\"\u003e#1655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7c52973ec0009f7074ea55afefc81a1314456c07\"\u003e\u003ccode\u003e7c52973\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.10.2 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1639\"\u003e#1639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34d30bc543d024851f07b33cbd33f7dc6cabdf08\"\u003e\u003ccode\u003e34d30bc\u003c/code\u003e\u003c/a\u003e docs: add prek usage reference for homeassistant Powercalc project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/97c3e0dd0eeee4e27ef663af6749bf50a5f86b84\"\u003e\u003ccode\u003e97c3e0d\u003c/code\u003e\u003c/a\u003e Update Rust crate async-compression to v0.4.39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/903e324bfe77564b195b9d63033cdda655548c09\"\u003e\u003ccode\u003e903e324\u003c/code\u003e\u003c/a\u003e Update Rust crate clap to v4.5.58\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/6412d77cc7deb77914aee5d94c38f526dea48fd8\"\u003e\u003ccode\u003e6412d77\u003c/code\u003e\u003c/a\u003e Update Rust crate clap_complete to v4.5.66 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/04b4a7226c36ac44fdc9c0d29fe05c4a4f04b4e7\"\u003e\u003ccode\u003e04b4a72\u003c/code\u003e\u003c/a\u003e Update Rust crate libc to v0.2.182\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e9e1850c0a92e4c6134b34185e4395a2bd553cf9\"\u003e\u003ccode\u003ee9e1850\u003c/code\u003e\u003c/a\u003e Update Rust crate lazy-regex to v3.6.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e024d65e172ccb6838e64753b91781a584029360\"\u003e\u003ccode\u003ee024d65\u003c/code\u003e\u003c/a\u003e Update Rust crate memchr to v2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/cd79359265f00a7684f94f0b5bff2b3ddccc350d\"\u003e\u003ccode\u003ecd79359\u003c/code\u003e\u003c/a\u003e Update Rust crate indicatif to v0.18.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1644\"\u003e#1644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.2...v0.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d\"\u003e\u003ccode\u003ea2f11d2\u003c/code\u003e\u003c/a\u003e Prepare for 0.15.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23253\"\u003e#23253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff\"\u003e\u003ccode\u003ed29628e\u003c/code\u003e\u003c/a\u003e Remove docker-run-action (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23254\"\u003e#23254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0\"\u003e\u003ccode\u003e8a04266\u003c/code\u003e\u003c/a\u003e [ty] Allow discovering dependencies in system Python environments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22994\"\u003e#22994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163\"\u003e\u003ccode\u003e55d06c8\u003c/code\u003e\u003c/a\u003e Ensure pending suppression diagnostics are reported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea\"\u003e\u003ccode\u003ed056a9f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] support for configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a\"\u003e\u003ccode\u003ee22fa4f\u003c/code\u003e\u003c/a\u003e [ty] Fix method calls on subclasses of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23248\"\u003e#23248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c\"\u003e\u003ccode\u003efa56c15\u003c/code\u003e\u003c/a\u003e [ty] Fix bound method access on \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23246\"\u003e#23246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2\"\u003e\u003ccode\u003e4fd07d0\u003c/code\u003e\u003c/a\u003e Make range suppression test snapshot actually useful (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23251\"\u003e#23251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f\"\u003e\u003ccode\u003e8c63bce\u003c/code\u003e\u003c/a\u003e [ty] Include conditional symbols (like \u003ccode\u003edatetime.UTC\u003c/code\u003e) in auto-import in more...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d\"\u003e\u003ccode\u003e46be943\u003c/code\u003e\u003c/a\u003e Exclude WASM artifacts from GitHub releases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23221\"\u003e#23221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12102","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12102","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12102/packages"},{"uuid":"3948702152","node_id":"PR_kwDOQignMc7EJdvV","number":24,"state":"closed","title":"chore(deps): bump the python-dependencies group in /backend with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-16T17:10:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-16T17:06:03.000Z","updated_at":"2026-02-16T17:10:12.000Z","time_to_close":241,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":8,"packages":[{"name":"fastapi","old_version":"0.128.6","new_version":"0.129.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"redis","old_version":"7.1.0","new_version":"7.1.1","repository_url":"https://github.com/redis/redis-py"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-passlib","old_version":"1.7.7.20250602","new_version":"1.7.7.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"tox","old_version":"4.34.1","new_version":"4.36.0","repository_url":"https://github.com/tox-dev/tox"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the python-dependencies group in /backend with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.6` | `0.129.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.0` |\n| [redis](https://github.com/redis/redis-py) | `7.1.0` | `7.1.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.1` |\n| [types-passlib](https://github.com/typeshed-internal/stub_uploader) | `1.7.7.20250602` | `1.7.7.20260211` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n| [tox](https://github.com/tox-dev/tox) | `4.34.1` | `4.36.0` |\n\nUpdates `fastapi` from 0.128.6 to 0.129.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.129.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14897\"\u003e#14897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🎨 Update internal types for Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14898\"\u003e#14898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update highlights in webhooks docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14905\"\u003e#14905\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update source examples and docs from Python 3.9 to 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14900\"\u003e#14900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Update docs.py scripts to migrate Python 3.9 to Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14906\"\u003e#14906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.128.8\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix grammar in \u003ccode\u003edocs/en/docs/tutorial/first-steps.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14708\"\u003e#14708\u003c/a\u003e by \u003ca href=\"https://github.com/SanjanaS10\"\u003e\u003ccode\u003e@​SanjanaS10\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak PDM hook script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14895\"\u003e#14895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Update build setup for \u003ccode\u003efastapi-slim\u003c/code\u003e, deprecate it, and make it only depend on \u003ccode\u003efastapi\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14894\"\u003e#14894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.128.7\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Show a clear error on attempt to include router into itself. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14258\"\u003e#14258\u003c/a\u003e by \u003ca href=\"https://github.com/JavierSanchezCastro\"\u003e\u003ccode\u003e@​JavierSanchezCastro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Replace \u003ccode\u003edict\u003c/code\u003e by \u003ccode\u003eMapping\u003c/code\u003e on \u003ccode\u003eHTTPException.headers\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12997\"\u003e#12997\u003c/a\u003e by \u003ca href=\"https://github.com/rijenkii\"\u003e\u003ccode\u003e@​rijenkii\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Simplify reading files in memory, do it sequentially instead of (fake) parallel. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14884\"\u003e#14884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Use \u003ccode\u003edfn\u003c/code\u003e tag for definitions instead of \u003ccode\u003eabbr\u003c/code\u003e in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14744\"\u003e#14744\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Tweak comment in test to reference PR. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14885\"\u003e#14885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update LLM-prompt for \u003ccode\u003eabbr\u003c/code\u003e and \u003ccode\u003edfn\u003c/code\u003e tags. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14747\"\u003e#14747\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Test order for the submitted byte Files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14828\"\u003e#14828\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Configure \u003ccode\u003etest\u003c/code\u003e workflow to run tests with \u003ccode\u003einline-snapshot=review\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14876\"\u003e#14876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a2e51363c721ee6fccb148bff95ca328b4efdfed\"\u003e\u003ccode\u003ea2e5136\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.129.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b7ce02ae86ee466380d2db09be008cfe83a1ca35\"\u003e\u003ccode\u003eb7ce02a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/31d9750aceaff347bd55be37880b7f36bc26c1b1\"\u003e\u003ccode\u003e31d9750\u003c/code\u003e\u003c/a\u003e 🔨 Update docs.py scripts to migrate Python 3.9 to Python 3.10 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14906\"\u003e#14906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/109cc8aff126b60971ec27d68d32b8713f0ec72a\"\u003e\u003ccode\u003e109cc8a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c82a3d8a13af58e092ba95ffb4b8a64b9ca82726\"\u003e\u003ccode\u003ec82a3d8\u003c/code\u003e\u003c/a\u003e 📝 Update highlights in webhooks docs (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14905\"\u003e#14905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0e460654af7101866b7d0f22735ef6337fe13d0c\"\u003e\u003ccode\u003e0e46065\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c9e2277d8b3b0feead4bdad97fca7cf05c9263fd\"\u003e\u003ccode\u003ec9e2277\u003c/code\u003e\u003c/a\u003e 📝 Update source examples and docs from Python 3.9 to 3.10 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14900\"\u003e#14900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d06ab3f5c7c1b6229e28af37905eb51ab4b4cdb7\"\u003e\u003ccode\u003ed06ab3f\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3da206c06df1283518a54b18f27bed33f2d22612\"\u003e\u003ccode\u003e3da206c\u003c/code\u003e\u003c/a\u003e 🎨 Update internal types for Python 3.10 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14898\"\u003e#14898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cc903bd440a4a443510c7b10ef7e9a1f88f44e0e\"\u003e\u003ccode\u003ecc903bd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.6...0.129.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.12.0 to 2.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: Deterministic alias selection when using validate_by_name by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/707\"\u003epydantic/pydantic-settings#707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd deep merge functionality to config file sources by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for AWS Secrets Manager VersionId parameter by \u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Return \u003ccode\u003eNone\u003c/code\u003e for inaccessible GCP Secret Manager secrets by \u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix for cli_kebab_case=\u0026quot;all\u0026quot; and CliImplicitFlag[bool] by \u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpack type alisases when looking for \u003ccode\u003eNoDecode\u003c/code\u003e by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/695\"\u003epydantic/pydantic-settings#695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCliToggleFlag and CliDualFlag by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/717\"\u003epydantic/pydantic-settings#717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix for CLI duplicate enum field values. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/722\"\u003epydantic/pydantic-settings#722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixed load nested config from env by \u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-Path files support (for example Traversable) and open files using Path.open method by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd one more traversable test by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/725\"\u003epydantic/pydantic-settings#725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI fix fox external list args. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/727\"\u003epydantic/pydantic-settings#727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle case-insensitive retrieval in GoogleSecretManagerSettingsSource by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/730\"\u003epydantic/pydantic-settings#730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI test fixes for help text formatting. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/735\"\u003epydantic/pydantic-settings#735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid conflicts with the \u003ccode\u003eNAME\u003c/code\u003e environment variable in WSL by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: When restoring init kwargs, use deterministic order by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/746\"\u003epydantic/pydantic-settings#746\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd env_prefix_target by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/749\"\u003epydantic/pydantic-settings#749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e(default: …)\u003c/code\u003e in the help message for \u003ccode\u003eCliToggleFlag\u003c/code\u003e by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/740\"\u003epydantic/pydantic-settings#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for CLI serialize styles. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/755\"\u003epydantic/pydantic-settings#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for overriding default help on CLI internal parser. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/758\"\u003epydantic/pydantic-settings#758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI format_help method support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/759\"\u003epydantic/pydantic-settings#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(gcp): support SecretVersion annotation for per-field secret versioning by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/763\"\u003epydantic/pydantic-settings#763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003esnake_case_conversion\u003c/code\u003e with \u003ccode\u003eenv_prefix\u003c/code\u003e for Azure Key Vault source by \u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Only override preferred_key when no value was found by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/767\"\u003epydantic/pydantic-settings#767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate deps by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/768\"\u003epydantic/pydantic-settings#768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI coerce numeric types. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/769\"\u003epydantic/pydantic-settings#769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Union Discriminator Choices in Help by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/764\"\u003epydantic/pydantic-settings#764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) by \u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.13.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/777\"\u003epydantic/pydantic-settings#777\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/198e71cf0cd570501535de7ae93a70953150f073\"\u003e\u003ccode\u003e198e71c\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/777\"\u003e#777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/de71e84057b63b251ec84883b5e2ae886f82084f\"\u003e\u003ccode\u003ede71e84\u003c/code\u003e\u003c/a\u003e Add nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0f8f951b89b137bd563ce74dac016ba2c4cdc7a2\"\u003e\u003ccode\u003e0f8f951\u003c/code\u003e\u003c/a\u003e CLI Union Discriminator Choices in Help (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/764\"\u003e#764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ce9804c4620d38f0c3b3c1e3ebe10d934fd4ba2e\"\u003e\u003ccode\u003ece9804c\u003c/code\u003e\u003c/a\u003e CLI coerce numeric types. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/769\"\u003e#769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e460f0b4d8e8dd0916562d3390b9eec960736bb6\"\u003e\u003ccode\u003ee460f0b\u003c/code\u003e\u003c/a\u003e Update deps (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/768\"\u003e#768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/a04b03450e62f583cdaee2d93df693b991aeb319\"\u003e\u003ccode\u003ea04b034\u003c/code\u003e\u003c/a\u003e fix: Only override preferred_key when no value was found (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/767\"\u003e#767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f6ddaee324a6f35e418505a0222bd26f1894446e\"\u003e\u003ccode\u003ef6ddaee\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003esnake_case_conversion\u003c/code\u003e with \u003ccode\u003eenv_prefix\u003c/code\u003e for Azure Key Vault source (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/6ce78bcfb737ddc552b077dcfcc3586f153bcaeb\"\u003e\u003ccode\u003e6ce78bc\u003c/code\u003e\u003c/a\u003e feat(gcp): support SecretVersion annotation for per-field secret versioning (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/21c709383721610992bcd34de04386b7d911089b\"\u003e\u003ccode\u003e21c7093\u003c/code\u003e\u003c/a\u003e CLI format_help method support (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0e96e9c27eb73599054b83959bb938c82bbebde7\"\u003e\u003ccode\u003e0e96e9c\u003c/code\u003e\u003c/a\u003e Add support for overriding default help on CLI internal parser. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.1.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded initial health check policies, refactored add_database method (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3906\"\u003e#3906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisabled SCH in MultiDBClient underlying clients by default (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3938\"\u003e#3938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded logging for MultiDBClients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3865\"\u003e#3865\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3896\"\u003e#3896\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7351a1e2d68f386ce6079e274df6bf2ae1406188\"\u003e\u003ccode\u003e7351a1e\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b81c856c6b9f965cc5e4bb5fdcb2d3f323687357\"\u003e\u003ccode\u003eb81c856\u003c/code\u003e\u003c/a\u003e Disabled SCH in MultiDBClient underlying clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3938\"\u003e#3938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0438784ff41c0f14c6dd78682b9a8d9149a7b33b\"\u003e\u003ccode\u003e0438784\u003c/code\u003e\u003c/a\u003e Added initial health check policies, refactored add_database method (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3906\"\u003e#3906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/76befb443c583815cc99100a58ef943096f27b50\"\u003e\u003ccode\u003e76befb4\u003c/code\u003e\u003c/a\u003e Added logging for MultiDBClients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3896\"\u003e#3896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/faee0fbbafd1ab4ad7f5402385f71660c5601948\"\u003e\u003ccode\u003efaee0fb\u003c/code\u003e\u003c/a\u003e Remove high-severity exception logging (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3865\"\u003e#3865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.1.0...v7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.1.0 to 12.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.1.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePatch libavif for svt-av1 4.0 compatibility \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9413\"\u003e#9413\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOB Write with invalid tile extents \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5158d98c807e719c5938aa3886913ef0ea6814e9\"\u003e\u003ccode\u003e5158d98\u003c/code\u003e\u003c/a\u003e 12.1.1 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/9000313cc5d4a31bdcdd6d7f0781101abab553aa\"\u003e\u003ccode\u003e9000313\u003c/code\u003e\u003c/a\u003e Fix OOB Write with invalid tile extents (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cd0111849fb32c40860e3ee3d57b9b1cee4260cf\"\u003e\u003ccode\u003ecd01118\u003c/code\u003e\u003c/a\u003e Patch libavif for svt-av1 4.0 compatibility\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.1.0...12.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d\"\u003e\u003ccode\u003ea2f11d2\u003c/code\u003e\u003c/a\u003e Prepare for 0.15.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23253\"\u003e#23253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff\"\u003e\u003ccode\u003ed29628e\u003c/code\u003e\u003c/a\u003e Remove docker-run-action (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23254\"\u003e#23254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0\"\u003e\u003ccode\u003e8a04266\u003c/code\u003e\u003c/a\u003e [ty] Allow discovering dependencies in system Python environments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22994\"\u003e#22994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163\"\u003e\u003ccode\u003e55d06c8\u003c/code\u003e\u003c/a\u003e Ensure pending suppression diagnostics are reported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea\"\u003e\u003ccode\u003ed056a9f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] support for configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a\"\u003e\u003ccode\u003ee22fa4f\u003c/code\u003e\u003c/a\u003e [ty] Fix method calls on subclasses of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23248\"\u003e#23248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c\"\u003e\u003ccode\u003efa56c15\u003c/code\u003e\u003c/a\u003e [ty] Fix bound method access on \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23246\"\u003e#23246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2\"\u003e\u003ccode\u003e4fd07d0\u003c/code\u003e\u003c/a\u003e Make range suppression test snapshot actually useful (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23251\"\u003e#23251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f\"\u003e\u003ccode\u003e8c63bce\u003c/code\u003e\u003c/a\u003e [ty] Include conditional symbols (like \u003ccode\u003edatetime.UTC\u003c/code\u003e) in auto-import in more...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d\"\u003e\u003ccode\u003e46be943\u003c/code\u003e\u003c/a\u003e Exclude WASM artifacts from GitHub releases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23221\"\u003e#23221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-passlib` from 1.7.7.20250602 to 1.7.7.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.34.1 to 4.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.36.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(config): allow skip_missing_interpreters per environment by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3684\"\u003etox-dev/tox#3684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn non-zero exit code from \u003ccode\u003etox config\u003c/code\u003e when exceptions occur by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3683\"\u003etox-dev/tox#3683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development.rst to reflect current standards by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3685\"\u003etox-dev/tox#3685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild dependencies should only come from build backend by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3687\"\u003etox-dev/tox#3687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd packaging environment docs to regular Configuration by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3686\"\u003etox-dev/tox#3686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3688\"\u003etox-dev/tox#3688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs(plugins): document CLI argument conventions by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3689\"\u003etox-dev/tox#3689\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExclude self-dependencies in run_order to prevent KeyError by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3690\"\u003etox-dev/tox#3690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop setup.py mentions from the installation page by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3693\"\u003etox-dev/tox#3693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 perf(tests): prevent stale fixture state and fix flaky timing assertions by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3692\"\u003etox-dev/tox#3692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(run): add fail-fast option to stop on first failure by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3691\"\u003etox-dev/tox#3691\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs(plugins): document toxfile.py inline plugins by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3694\"\u003etox-dev/tox#3694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(cli): add shell completion via argcomplete by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3695\"\u003etox-dev/tox#3695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(package): validate extras against package metadata by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3696\"\u003etox-dev/tox#3696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(depends): add glob pattern support for depends option by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3697\"\u003etox-dev/tox#3697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(env): add disallow_pass_env to exclude env vars by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3698\"\u003etox-dev/tox#3698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: restructure documentation following Diataxis framework by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3702\"\u003etox-dev/tox#3702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: config enhancements, man page, version tracking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3703\"\u003etox-dev/tox#3703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a _resolve_path() static method to InstallPackageAction by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3699\"\u003etox-dev/tox#3699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFollow FORCE_COLOR. Any non-empty value now enables color by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3700\"\u003etox-dev/tox#3700\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3683\"\u003etox-dev/tox#3683\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.35.0...4.36.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.35.0...4.36.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.35.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix misleading ENVDIR reference in devenv description by \u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3670\"\u003etox-dev/tox#3670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI post packaging releese by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3673\"\u003etox-dev/tox#3673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix code block format in docs/plugins.rst by \u003ca href=\"https://github.com/mushitoriami\"\u003e\u003ccode\u003e@​mushitoriami\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3675\"\u003etox-dev/tox#3675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): correct path for built documentation by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3680\"\u003etox-dev/tox#3680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument injected environment variables by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3681\"\u003etox-dev/tox#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow toxfile.py inline plugin in --version output by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3682\"\u003etox-dev/tox#3682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3670\"\u003etox-dev/tox#3670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mushitoriami\"\u003e\u003ccode\u003e@​mushitoriami\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3675\"\u003etox-dev/tox#3675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3680\"\u003etox-dev/tox#3680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3681\"\u003etox-dev/tox#3681\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.34.1...4.35.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.34.1...4.35.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFeatures - 4.36.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003eskip_missing_interpreters\u003c/code\u003e to be set per environment, overriding the global setting. This enables marking\nspecific environments as optional while keeping others required. (:issue:\u003ccode\u003e435\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e CLI flag and \u003ccode\u003efail_fast\u003c/code\u003e per-environment config option to stop executing remaining environments\nwhen the first failure occurs - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e578\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd shell completion support for bash, zsh, and fish via :pypi:\u003ccode\u003eargcomplete\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e918\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eValidate that configured extras exist in package metadata, raising a clear error for unknown extras - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e1113\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd glob pattern support in \u003ccode\u003edepends\u003c/code\u003e (e.g. \u003ccode\u003edepends = py3*\u003c/code\u003e) to match environments by wildcard instead of listing\nthem explicitly - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e1152\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edisallow_pass_env\u003c/code\u003e configuration option to exclude specific environment variables after \u003ccode\u003epass_env\u003c/code\u003e glob\nexpansion - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e1387\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003efile:\u003c/code\u003e URIs in \u003ccode\u003e--installpkg\u003c/code\u003e (e.g. \u003ccode\u003e--installpkg file:///path/to/pkg.whl\u003c/code\u003e), including proper handling\nof percent-encoded characters - by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e. (:issue:\u003ccode\u003e3498\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBugfixes - 4.36.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an error when \u003ccode\u003edeps\u003c/code\u003e is configured on a PEP-517 packaging environment (e.g. \u003ccode\u003e.pkg\u003c/code\u003e), since build\ndependencies should be specified via the \u003ccode\u003e[build-system]\u003c/code\u003e table in \u003ccode\u003epyproject.toml\u003c/code\u003e - by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e\n(:issue:\u003ccode\u003e3412\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFollow \u003ccode\u003eFORCE_COLOR \u0026lt;https://force-color.org/\u0026gt;\u003c/code\u003e_ recommendations: any non-empty value now enables color (previously\nonly \u003ccode\u003eyes\u003c/code\u003e, \u003ccode\u003etrue\u003c/code\u003e, or \u003ccode\u003e1\u003c/code\u003e were accepted, and other values caused a crash). Also add support for\n\u003ccode\u003eTTY_COMPATIBLE\u003c/code\u003e (\u003ccode\u003e1\u003c/code\u003e forces color, \u003ccode\u003e0\u003c/code\u003e disables it) — by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e. (:issue:\u003ccode\u003e3579\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReturn non-zero exit code from tox config when configuration exceptions occur. (:issue:\u003ccode\u003e3649\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix flaky spinner test assertion caused by timing variations on slower systems. (:issue:\u003ccode\u003e3692\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDocumentation - 4.36.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDocument how to provide environments via \u003ccode\u003etoxfile.py\u003c/code\u003e inline plugins using \u003ccode\u003etox_extend_envs\u003c/code\u003e and \u003ccode\u003eMemoryLoader\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eby :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e828\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocument shell completion setup for bash, zsh, and fish in the CLI reference - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e918\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument negative factor conditions and multi-factor combinations with negation in the INI configuration reference -\nby :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3276\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a substitution quick reference table covering all available \u003ccode\u003e{...}\u003c/code\u003e replacement variables - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3326\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TOML configuration reference with complete examples for \u003ccode\u003etox.toml\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e formats, and emphasize\nTOML as the recommended format throughout - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3393\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the \u003ccode\u003etox exec\u003c/code\u003e subcommand with usage examples in the how-to guides - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3403\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eComprehensive documentation improvements: added how-to guides for tox exec, CI/CD, coverage, build backends, labels,\nmigration, debugging, and extras; expanded plugin documentation with all hook examples and packaging guide; added env\nvar handling guide, factor conditions reference, and substitution quick reference; integrated docstrfmt for consistent\nRST formatting; fixed docstring issues in source code - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3475\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003edevelopment.rst\u003c/code\u003e to reflect current standards: replace references to\n\u003ccode\u003eflake8\u003c/code\u003e/\u003ccode\u003eblack\u003c/code\u003e/\u003ccode\u003eisort\u003c/code\u003e/\u003ccode\u003epyupgrade\u003c/code\u003e with \u003ccode\u003eruff\u003c/code\u003e, remove outdated Python 2.7 compatibility note, and fix CI\nconfig filename - by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e (:issue:\u003ccode\u003e3483\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop \u003ccode\u003esetup.py\u003c/code\u003e mentions from the installation page — by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e. (:issue:\u003ccode\u003e3588\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/5408fd13a955e61d788b517e691e69fef83ce1e9\"\u003e\u003ccode\u003e5408fd1\u003c/code\u003e\u003c/a\u003e release 4.36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/99c315f1bfec0532a458e25fd69848628d4a7d66\"\u003e\u003ccode\u003e99c315f\u003c/code\u003e\u003c/a\u003e 👷 ci(release): add workflow dispatch for release preparation (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3704\"\u003e#3704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/f03d16682e4307f7691bee9caeed60c4c934cefa\"\u003e\u003ccode\u003ef03d166\u003c/code\u003e\u003c/a\u003e Follow FORCE_COLOR. Any non-empty value now enables color (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3700\"\u003e#3700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/03185a7bcef03a71eb8d3df0a010297e37e34e29\"\u003e\u003ccode\u003e03185a7\u003c/code\u003e\u003c/a\u003e Added a _resolve_path() static method to InstallPackageAction (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/30884c2f362d97cdf43df5a67516c0f67d3cef0e\"\u003e\u003ccode\u003e30884c2\u003c/code\u003e\u003c/a\u003e 📝 docs: enhance config reference, expand guides, integrate docstrfmt (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3703\"\u003e#3703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/d6687f21b88daad537698ff930a93bed81652294\"\u003e\u003ccode\u003ed6687f2\u003c/code\u003e\u003c/a\u003e 📝 docs: restructure documentation following Diataxis framework (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3702\"\u003e#3702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/a40b7da27dc8bf28216b0ad3bb54e6b767184052\"\u003e\u003ccode\u003ea40b7da\u003c/code\u003e\u003c/a\u003e ✨ feat(env): add disallow_pass_env to exclude env vars (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/8e85762372840eb6a72ff481efb86de5f1f69ac3\"\u003e\u003ccode\u003e8e85762\u003c/code\u003e\u003c/a\u003e ✨ feat(depends): add glob pattern support for depends option (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3697\"\u003e#3697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4afd60bc181492214689a04430669a1f583589d3\"\u003e\u003ccode\u003e4afd60b\u003c/code\u003e\u003c/a\u003e ✨ feat(package): validate extras against package metadata (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3696\"\u003e#3696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/c50d3437c07910575de12c117065a9ce7f74eb92\"\u003e\u003ccode\u003ec50d343\u003c/code\u003e\u003c/a\u003e ✨ feat(cli): add shell completion via argcomplete (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3695\"\u003e#3695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.34.1...4.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/morzan1001/Dependency-Control/pull/24","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/morzan1001%2FDependency-Control/issues/24","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/24/packages"},{"uuid":"3945030168","node_id":"PR_kwDOCkIcu87D9YnI","number":35018,"state":"open","title":"build(deps): bump the simple group in /ci/builder with 3 updates","user":"dependabot[bot]","labels":["A-dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-15T22:07:04.000Z","updated_at":"2026-02-15T22:07:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"simple","update_count":3,"packages":[{"name":"cryptography","old_version":"46.0.4","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"jupyterlab","old_version":"4.5.3","new_version":"4.5.4","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":"/ci/builder","ecosystem":"pip"},"body":"Bumps the simple group in /ci/builder with 3 updates: [cryptography](https://github.com/pyca/cryptography), [jupyterlab](https://github.com/jupyterlab/jupyterlab) and [types-markdown](https://github.com/typeshed-internal/stub_uploader).\n\nUpdates `cryptography` from 46.0.4 to 46.0.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.4...46.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyterlab` from 4.5.3 to 4.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyterlab/jupyterlab/releases\"\u003ejupyterlab's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.4\u003c/h2\u003e\n\u003ch2\u003e4.5.4\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.3...19f81fcfb33889b59260da8b5aa9221379f10d11\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using system clipboard in Notebook widget \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18474\"\u003e#18474\u003c/a\u003e (\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate CodeMirror versions, fixing a few selection issues \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18466\"\u003e#18466\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix debugger variable panel to render value 0 properly \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18464\"\u003e#18464\u003c/a\u003e (\u003ca href=\"https://github.com/itsmevichu\"\u003e\u003ccode\u003e@​itsmevichu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsider both the content type and pattern match in \u003ccode\u003eDocumentRegistry.getFileTypeForModel()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18409\"\u003e#18409\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efalse in saveAs to avoid fetching file body \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18379\"\u003e#18379\u003c/a\u003e (\u003ca href=\"https://github.com/DeborahOlaboye\"\u003e\u003ccode\u003e@​DeborahOlaboye\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump Lumino packages to the 2026.2.5 release, fixing iframe resizing \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18440\"\u003e#18440\u003c/a\u003e (\u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify notebook and cell metadata API changes in JupyterLab 4 \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18304\"\u003e#18304\u003c/a\u003e (\u003ca href=\"https://github.com/Krish-876\"\u003e\u003ccode\u003e@​Krish-876\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument a change in the Code Editor source updates via \u003ccode\u003esharedModel\u003c/code\u003e in JupyterLab 4 \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18260\"\u003e#18260\u003c/a\u003e (\u003ca href=\"https://github.com/Krish-876\"\u003e\u003ccode\u003e@​Krish-876\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Contents API fetch documentation of the \u003ccode\u003econtent\u003c/code\u003e default \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18383\"\u003e#18383\u003c/a\u003e (\u003ca href=\"https://github.com/ceasermikes002\"\u003e\u003ccode\u003e@​ceasermikes002\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AI rules \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18322\"\u003e#18322\u003c/a\u003e (\u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003eThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee \u003ca href=\"https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports\"\u003eour definition of contributors\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2026-01-23\u0026amp;to=2026-02-11\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/ceasermikes002\"\u003e\u003ccode\u003e@​ceasermikes002\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aceasermikes002+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/DeborahOlaboye\"\u003e\u003ccode\u003e@​DeborahOlaboye\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ADeborahOlaboye+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/itsmevichu\"\u003e\u003ccode\u003e@​itsmevichu\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aitsmevichu+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajasongrout+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/Krish-876\"\u003e\u003ccode\u003e@​Krish-876\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AKrish-876+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e)\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/2ecc1eed9944d9ad080f8c3f8206285338065af4\"\u003e\u003ccode\u003e2ecc1ee\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/19f81fcfb33889b59260da8b5aa9221379f10d11\"\u003e\u003ccode\u003e19f81fc\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18474\"\u003e#18474\u003c/a\u003e on branch 4.5.x (Avoid using system clipboard in Notebook ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/b82e6d75338a27b218298e254b6d31e1d2bd2daf\"\u003e\u003ccode\u003eb82e6d7\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18466\"\u003e#18466\u003c/a\u003e on branch 4.5.x (Update CodeMirror versions, fixing a few ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/c70c36e3c5ece87be55a836f45a6965e75a3d84c\"\u003e\u003ccode\u003ec70c36e\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18440\"\u003e#18440\u003c/a\u003e on branch 4.5.x (Bump Lumino packages to the 2026.2.5 rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/23b9ff52b4d97f33c1fce10089842f51787489ff\"\u003e\u003ccode\u003e23b9ff5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18464\"\u003e#18464\u003c/a\u003e on branch 4.5.x (Fix debugger variable panel to render val...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/553d941f6161e20eed5ddffa85a0da0538e05996\"\u003e\u003ccode\u003e553d941\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18409\"\u003e#18409\u003c/a\u003e on branch 4.5.x (Consider both the content type and patter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/d8acd39e47e71a1732bbca4757355f66b0f3197b\"\u003e\u003ccode\u003ed8acd39\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18304\"\u003e#18304\u003c/a\u003e on branch 4.5.x (Clarify notebook and cell metadata API ch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/e0219696094436eab6a62e4bf5784437bcf0e5a4\"\u003e\u003ccode\u003ee021969\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18260\"\u003e#18260\u003c/a\u003e on branch 4.5.x (Document a change in the Code Editor sour...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/dc39ba5e79190d8721932fee6ece0a329655c667\"\u003e\u003ccode\u003edc39ba5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18383\"\u003e#18383\u003c/a\u003e on branch 4.5.x (Fix Contents API fetch documentation of t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/fd57db92797b12ac0787347a4aa464e71ef38ddc\"\u003e\u003ccode\u003efd57db9\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18322\"\u003e#18322\u003c/a\u003e: Add AI rules (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18395\"\u003e#18395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.5.3...@jupyterlab/lsp@4.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/MaterializeInc/materialize/pull/35018","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fmaterialize/issues/35018","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35018/packages"},{"uuid":"3943500464","node_id":"PR_kwDODg-Tdc7D4iH0","number":48002,"state":"closed","title":"chore(deps): bump the other-dependencies group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":["webjunkie"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-22T08:27:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-15T08:29:16.000Z","updated_at":"2026-02-22T08:27:25.000Z","time_to_close":604687,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"other-dependencies","update_count":61,"packages":[{"name":"aiokafka","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/aio-libs/aiokafka"},{"name":"antlr4-python3-runtime","old_version":"4.13.1","new_version":"4.13.2"},{"name":"beautifulsoup4","old_version":"4.12.3","new_version":"4.14.3"},{"name":"celery-redbeat","old_version":"2.1.1","new_version":"2.3.3","repository_url":"https://github.com/sibson/redbeat"},{"name":"conditional-cache","old_version":"1.2","new_version":"1.4","repository_url":"https://github.com/Eric-Canas/ConditionalCache"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"emoji","old_version":"2.14.1","new_version":"2.15.0","repository_url":"https://github.com/carpedm20/emoji"},{"name":"grimp","old_version":"3.13","new_version":"3.14","repository_url":"https://github.com/python-grimp/grimp"},{"name":"kombu","old_version":"5.3.7","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"nh3","old_version":"0.2.14","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"numpy","old_version":"2.1.3","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"orjson","old_version":"3.11.5","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"posthoganalytics","old_version":"7.4.3","new_version":"7.8.3","repository_url":"https://github.com/posthog/posthog-python"},{"name":"polars","old_version":"1.37.1","new_version":"1.38.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"pyroscope-io","old_version":"0.8.11","new_version":"0.8.16","repository_url":"https://github.com/pyroscope-io/pyroscope"},{"name":"scikit-learn","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"semantic-version","old_version":"2.8.5","new_version":"2.10.0","repository_url":"https://github.com/rbarrois/python-semanticversion"},{"name":"sqlalchemy","old_version":"2.0.38","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlalchemy-bigquery","old_version":"1.12.1","new_version":"1.16.0"},{"name":"sqlparse","old_version":"0.5.0","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"temporalio","old_version":"1.14.1","new_version":"1.22.0","repository_url":"https://github.com/temporalio/sdk-python"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"css-inline","old_version":"0.18.0","new_version":"0.20.0","repository_url":"https://github.com/Stranger6667/css-inline"},{"name":"tree-sitter","old_version":"0.24.0","new_version":"0.25.2","repository_url":"https://github.com/tree-sitter/py-tree-sitter"},{"name":"tree-sitter-bash","old_version":"0.23.3","new_version":"0.25.1","repository_url":"https://github.com/tree-sitter/tree-sitter-bash"},{"name":"tree-sitter-go","old_version":"0.23.4","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-go"},{"name":"tree-sitter-javascript","old_version":"0.23.1","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-javascript"},{"name":"tree-sitter-python","old_version":"0.23.6","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-python"},{"name":"tree-sitter-rust","old_version":"0.23.2","new_version":"0.24.0","repository_url":"https://github.com/tree-sitter/tree-sitter-rust"},{"name":"umap-learn","old_version":"0.5.7","new_version":"0.5.11","repository_url":"https://github.com/lmcinnes/umap"},{"name":"whitenoise","old_version":"6.10.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"azure-storage-blob","old_version":"12.27.1","new_version":"12.28.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"asgiref","old_version":"3.11.0","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"claude-code-sdk","old_version":"0.0.14","new_version":"0.0.25","repository_url":"https://github.com/anthropics/claude-code-sdk-python"},{"name":"fastavro","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/fastavro/fastavro"},{"name":"pydantic-avro","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/godatadriven/pydantic-avro"},{"name":"playwright","old_version":"1.54.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"modal","old_version":"1.2.1","new_version":"1.3.2","repository_url":"https://github.com/modal-labs/modal-client"},{"name":"disposable-email-domains","old_version":"0.0.140","new_version":"0.0.160","repository_url":"https://github.com/disposable-email-domains/disposable-email-domains"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"duckdb","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"markdown-to-mrkdwn","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/fla9ua/markdown_to_mrkdwn"},{"name":"webauthn","old_version":"2.2.0","new_version":"2.7.0","repository_url":"https://github.com/duo-labs/py_webauthn"},{"name":"autoevals","old_version":"0.0.129","new_version":"0.0.130","repository_url":"https://github.com/braintrustdata/autoevals"},{"name":"braintrust","old_version":"0.2.4","new_version":"0.5.5","repository_url":"https://github.com/braintrustdata/braintrust-sdk"},{"name":"braintrust-langchain","old_version":"0.0.4","new_version":"0.2.1","repository_url":"https://github.com/braintrustdata/braintrust-sdk"},{"name":"datamodel-code-generator","old_version":"0.36.0","new_version":"0.53.0","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"debugpy","old_version":"1.8.16","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"fakeredis","old_version":"2.23.3","new_version":"2.33.0"},{"name":"ipython","old_version":"9.3.0","new_version":"9.10.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ty","old_version":"0.0.4","new_version":"0.0.15","repository_url":"https://github.com/astral-sh/ty"},{"name":"openapi-spec-validator","old_version":"0.7.1","new_version":"0.7.2","repository_url":"https://github.com/python-openapi/openapi-spec-validator"},{"name":"ruff","old_version":"0.14.11","new_version":"0.15.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"tach","old_version":"0.20.0","new_version":"0.33.2","repository_url":"https://github.com/gauge-sh/tach"},{"name":"types-boto3","old_version":"1.37.6","new_version":"1.42.44"},{"name":"types-markdown","old_version":"3.3.9","new_version":"3.10.0.20251106","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-pyyaml","old_version":"6.0.1","new_version":"6.0.12.20250915","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the other-dependencies group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiokafka](https://github.com/aio-libs/aiokafka) | `0.12.0` | `0.13.0` |\n| [antlr4-python3-runtime](http://www.antlr.org) | `4.13.1` | `4.13.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.3` | `4.14.3` |\n| [celery-redbeat](https://github.com/sibson/redbeat) | `2.1.1` | `2.3.3` |\n| [conditional-cache](https://github.com/Eric-Canas/ConditionalCache) | `1.2` | `1.4` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [emoji](https://github.com/carpedm20/emoji) | `2.14.1` | `2.15.0` |\n| [grimp](https://github.com/python-grimp/grimp) | `3.13` | `3.14` |\n| [kombu](https://github.com/celery/kombu) | `5.3.7` | `5.6.2` |\n| [nh3](https://github.com/messense/nh3) | `0.2.14` | `0.3.2` |\n| [numpy](https://github.com/numpy/numpy) | `2.1.3` | `2.4.2` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.5` | `3.11.7` |\n| [posthoganalytics](https://github.com/posthog/posthog-python) | `7.4.3` | `7.8.3` |\n| [polars](https://github.com/pola-rs/polars) | `1.37.1` | `1.38.1` |\n| [pyroscope-io](https://github.com/pyroscope-io/pyroscope) | `0.8.11` | `0.8.16` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.0` | `1.8.0` |\n| [semantic-version](https://github.com/rbarrois/python-semanticversion) | `2.8.5` | `2.10.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.38` | `2.0.46` |\n| [sqlalchemy-bigquery[bqstorage]](https://github.com/googleapis/python-bigquery-sqlalchemy) | `1.12.1` | `1.16.0` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.0` | `0.5.5` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [temporalio](https://github.com/temporalio/sdk-python) | `1.14.1` | `1.22.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [css-inline](https://github.com/Stranger6667/css-inline) | `0.18.0` | `0.20.0` |\n| [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | `0.24.0` | `0.25.2` |\n| [tree-sitter-bash](https://github.com/tree-sitter/tree-sitter-bash) | `0.23.3` | `0.25.1` |\n| [tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) | `0.23.4` | `0.25.0` |\n| [tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) | `0.23.1` | `0.25.0` |\n| [tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) | `0.23.6` | `0.25.0` |\n| [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) | `0.23.2` | `0.24.0` |\n| [umap-learn](https://github.com/lmcinnes/umap) | `0.5.7` | `0.5.11` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.10.0` | `6.11.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.27.1` | `12.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.0` | `3.11.1` |\n| [claude-code-sdk](https://github.com/anthropics/claude-code-sdk-python) | `0.0.14` | `0.0.25` |\n| [fastavro](https://github.com/fastavro/fastavro) | `1.12.0` | `1.12.1` |\n| [pydantic-avro](https://github.com/godatadriven/pydantic-avro) | `0.9.0` | `0.10.0` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.54.0` | `1.58.0` |\n| [modal](https://github.com/modal-labs/modal-client) | `1.2.1` | `1.3.2` |\n| [disposable-email-domains](https://github.com/disposable-email-domains/disposable-email-domains) | `0.0.140` | `0.0.160` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.4.2` | `1.4.4` |\n| [markdown-to-mrkdwn](https://github.com/fla9ua/markdown_to_mrkdwn) | `0.2.0` | `0.3.1` |\n| [webauthn](https://github.com/duo-labs/py_webauthn) | `2.2.0` | `2.7.0` |\n| [autoevals](https://github.com/braintrustdata/autoevals) | `0.0.129` | `0.0.130` |\n| [braintrust](https://github.com/braintrustdata/braintrust-sdk) | `0.2.4` | `0.5.5` |\n| [braintrust-langchain](https://github.com/braintrustdata/braintrust-sdk) | `0.0.4` | `0.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.36.0` | `0.53.0` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.16` | `1.8.20` |\n| [fakeredis[lua]](https://github.com/cunla/fakeredis-py) | `2.23.3` | `2.33.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.3.0` | `9.10.0` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.4` | `0.0.15` |\n| [openapi-spec-validator](https://github.com/python-openapi/openapi-spec-validator) | `0.7.1` | `0.7.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.11` | `0.15.0` |\n| [tach](https://github.com/gauge-sh/tach) | `0.20.0` | `0.33.2` |\n| [types-boto3[essential]](https://github.com/youtype/mypy_boto3_builder) | `1.37.6` | `1.42.44` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.3.9` | `3.10.0.20251106` |\n| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.1` | `6.0.12.20250915` |\n\n\nUpdates `aiokafka` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/releases\"\u003eaiokafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003cp\u003eBreaking changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eResolve API versions at connection with brokers\n\u003ccode\u003eapi_version\u003c/code\u003e parameter has been removed from the different clients (admin/consumer/producer)\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1136\"\u003e#1136\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incomplete documentation for \u003ccode\u003eAIOKafkaConsumer.offset_for_times\u003c/code\u003e\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1068\"\u003e#1068\u003c/a\u003e by \u003ca href=\"https://github.com/jzvandenoever\"\u003e\u003ccode\u003e@​jzvandenoever\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Java Client API reference (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1069\"\u003e#1069\u003c/a\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake KafkaStorageError retriable after metadata refresh like in other\nimplementations (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1115\"\u003e#1115\u003c/a\u003e by \u003ca href=\"https://github.com/omerhadari\"\u003e\u003ccode\u003e@​omerhadari\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure the transaction coordinator is refreshed after broker fail‑over,\nso transactional producers resume once a new coordinator is elected.\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1135\"\u003e#1135\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename the RequestHeader version classes to match official version\nschemas (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1141\"\u003e#1141\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse SPDX license expression for project metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/blob/master/CHANGES.rst\"\u003eaiokafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.13.0 (2026-01-02)\u003c/h1\u003e\n\u003cp\u003eBreaking changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eResolve API versions at connection with brokers\n\u003ccode\u003eapi_version\u003c/code\u003e parameter has been removed from the different clients (admin/consumer/producer)\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1136\"\u003e#1136\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incomplete documentation for \u003ccode\u003eAIOKafkaConsumer.offset_for_times\u003c/code\u003e\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1068\"\u003e#1068\u003c/a\u003e by \u003ca href=\"https://github.com/jzvandenoever\"\u003e\u003ccode\u003e@​jzvandenoever\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Java Client API reference (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1069\"\u003e#1069\u003c/a\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake KafkaStorageError retriable after metadata refresh like in other\nimplementations (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1115\"\u003e#1115\u003c/a\u003e by \u003ca href=\"https://github.com/omerhadari\"\u003e\u003ccode\u003e@​omerhadari\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure the transaction coordinator is refreshed after broker fail‑over,\nso transactional producers resume once a new coordinator is elected.\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1135\"\u003e#1135\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename the RequestHeader version classes to match official version\nschemas (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1141\"\u003e#1141\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse SPDX license expression for project metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/3b7ccd0fff5c92a9cf12c12e361370082ad12b0c\"\u003e\u003ccode\u003e3b7ccd0\u003c/code\u003e\u003c/a\u003e Prepare 0.13.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/741aa2c55fa12fa849967028a35e88115995bc56\"\u003e\u003ccode\u003e741aa2c\u003c/code\u003e\u003c/a\u003e Rename RequestHeader_vX classes (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1141\"\u003e#1141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/7b7c4ff08298027037384878db1108fc44befa79\"\u003e\u003ccode\u003e7b7c4ff\u003c/code\u003e\u003c/a\u003e Build wheels for Python 3.14 (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1140\"\u003e#1140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/9f9161eb78785683edc7a8821983491221ccd9c6\"\u003e\u003ccode\u003e9f9161e\u003c/code\u003e\u003c/a\u003e Handle node failure properly in sender (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1135\"\u003e#1135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/7d0bd255f40d156f7016f70d744738321ba65ebe\"\u003e\u003ccode\u003e7d0bd25\u003c/code\u003e\u003c/a\u003e Resolve API versions on connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1136\"\u003e#1136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/5ec91e769147699322591e641e31107dfea65d29\"\u003e\u003ccode\u003e5ec91e7\u003c/code\u003e\u003c/a\u003e Fix type annotations for compression (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/c496692a099fa0be35ee6b02a179d1f7e3da9f7c\"\u003e\u003ccode\u003ec496692\u003c/code\u003e\u003c/a\u003e Remove dead code vendored from python-kafka (metrics) (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/5e98938c6c3ffe234fef2e85934fe8d6bacf1991\"\u003e\u003ccode\u003e5e98938\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9 (end of life) (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1116\"\u003e#1116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/81a5f363d05e823242c476487690c0ca7f65862e\"\u003e\u003ccode\u003e81a5f36\u003c/code\u003e\u003c/a\u003e 1115.bugfix: Make KafkaStorageError retriable after metadata refresh (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1115\"\u003e#1115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/c4b604062192d005cdcefb79eb6dbc717764c700\"\u003e\u003ccode\u003ec4b6040\u003c/code\u003e\u003c/a\u003e Use SPDX license identifier (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1076\"\u003e#1076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiokafka/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antlr4-python3-runtime` from 4.13.1 to 4.13.2\n\nUpdates `beautifulsoup4` from 4.12.3 to 4.14.3\n\nUpdates `celery-redbeat` from 2.1.1 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sibson/redbeat/releases\"\u003ecelery-redbeat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etest(deps): add pytz which is used in test suites by \u003ca href=\"https://github.com/miketheman\"\u003e\u003ccode\u003e@​miketheman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/250\"\u003esibson/redbeat#250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Update the utcoffset func call by \u003ca href=\"https://github.com/ElijahL\"\u003e\u003ccode\u003e@​ElijahL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/256\"\u003esibson/redbeat#256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse is for correct type comparison by \u003ca href=\"https://github.com/sibson\"\u003e\u003ccode\u003e@​sibson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/257\"\u003esibson/redbeat#257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd RedisCluster support by \u003ca href=\"https://github.com/kkinder\"\u003e\u003ccode\u003e@​kkinder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/262\"\u003esibson/redbeat#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd ssl support for redis with sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/258\"\u003esibson/redbeat#258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ElijahL\"\u003e\u003ccode\u003e@​ElijahL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/256\"\u003esibson/redbeat#256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kkinder\"\u003e\u003ccode\u003e@​kkinder\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/262\"\u003esibson/redbeat#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/258\"\u003esibson/redbeat#258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/sibson/redbeat/compare/2.1.1...v2.2.0\"\u003ehttps://github.com/sibson/redbeat/compare/2.1.1...v2.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sibson/redbeat/blob/main/CHANGES.txt\"\u003ecelery-redbeat's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.3dev (unreleased)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 and add CI coverage through Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.3 (2025-07-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd Python 3.12 support, thanks \u003ca href=\"https://github.com/AnkiHubSoftware\"\u003e\u003ccode\u003e@​AnkiHubSoftware\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, update RedBeatSchedulerEntry definitions for improved type safety and correctness, thanks \u003ca href=\"https://github.com/sotosapp\"\u003e\u003ccode\u003e@​sotosapp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, Redbeat no longer updating tasks definitions on Redis \u003ca href=\"https://redirect.github.com/sibson/redbeat/issues/289\"\u003e#289\u003c/a\u003e, thanks \u003ca href=\"https://github.com/semoac\"\u003e\u003ccode\u003e@​semoac\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci, fix testpypi publish by checking out source before version update\u003c/li\u003e\n\u003cli\u003etest, pin fakeredis\u0026lt;2.27.0 for Python 3.8 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0 (2025-02-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix, allow disabling of lock with redbeat_lock_key = None, thanks \u003ca href=\"https://github.com/jscaria\"\u003e\u003ccode\u003e@​jscaria\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/molog\"\u003e\u003ccode\u003e@​molog\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bertosantamaria\"\u003e\u003ccode\u003e@​bertosantamaria\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, track changes to primary in Sentinel, thanks \u003ca href=\"https://github.com/Niccolum\"\u003e\u003ccode\u003e@​Niccolum\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, static entries honour last_run_at, thanks \u003ca href=\"https://github.com/kchamz\"\u003e\u003ccode\u003e@​kchamz\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc updates, thanks \u003ca href=\"https://github.com/miketheman\"\u003e\u003ccode\u003e@​miketheman\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cikay\"\u003e\u003ccode\u003e@​cikay\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.0 (2023-12-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd ssl support for redis with sentinel, thanks \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd RedisCluster Support, thanks \u003ca href=\"https://github.com/kkinder\"\u003e\u003ccode\u003e@​kkinder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/2b85c88951fdd2964610819c1a59e4914e4c205b\"\u003e\u003ccode\u003e2b85c88\u003c/code\u003e\u003c/a\u003e prepare for release of 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/3d107dd7cf5c310bcd05fd8ba76da622a0f84b13\"\u003e\u003ccode\u003e3d107dd\u003c/code\u003e\u003c/a\u003e update for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/30e812dd1a178dca02390c4f4a3e8fe79c43ca39\"\u003e\u003ccode\u003e30e812d\u003c/code\u003e\u003c/a\u003e makefile: add version target using grep for warning-free version check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/1242fde248ed7aeebe7cd148f873977f0face2e8\"\u003e\u003ccode\u003e1242fde\u003c/code\u003e\u003c/a\u003e update changelog for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/f35e31cfb0f9c0cf6662821cc4d4d7ec1d45d144\"\u003e\u003ccode\u003ef35e31c\u003c/code\u003e\u003c/a\u003e ci: fetch full git history for pbr versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/acf82610cb0fab5caa3418c42efcfb4715686d2e\"\u003e\u003ccode\u003eacf8261\u003c/code\u003e\u003c/a\u003e build: switch to pbr for dynamic versioning and simplify workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/a317b5ff3a4f7b6508c8d91ae55f3ac736d646be\"\u003e\u003ccode\u003ea317b5f\u003c/code\u003e\u003c/a\u003e bump version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/5e185f63ba10458545ec4c8a91747006da65de63\"\u003e\u003ccode\u003e5e185f6\u003c/code\u003e\u003c/a\u003e ci: use .dev0.\u0026lt;githash\u0026gt; for testpypi version (PEP 440/PyPI compliant)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/f384d757f8f58ca2cd26d36c13dfb8971461d3de\"\u003e\u003ccode\u003ef384d75\u003c/code\u003e\u003c/a\u003e ci: ensure PEP 440 compliant version for testpypi with git hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/bfc520b778a0234815917e3aba472a27ffabc6f6\"\u003e\u003ccode\u003ebfc520b\u003c/code\u003e\u003c/a\u003e test: pin fakeredis\u0026lt;2.27.0 for Python 3.8 support (see comment)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sibson/redbeat/compare/2.1.1...v2.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `conditional-cache` from 1.2 to 1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Eric-Canas/ConditionalCache/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.6.1 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.10.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\u003c/p\u003e\n\u003ch2\u003ednspython 2.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.9.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release.  Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns/btreezone.py provides another zone versioned implementation built on top of a\nB-tree.  It maintains DNSSEC sort order, labels nodes as delegation points or glue,\nand can find the \u0026quot;bounds\u0026quot; of a name (useful for DNSSEC responses).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/query.py now provides make_socket(), make_ssl_socket(), and make_ssl_context()\nto make using persistent connections with the query code easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/win32util.py now supports explicitly setting the configuration method used to get\nsystem dns info, using the set_config_method() function.   There is a new configuration\nmethod that uses the Win32 API, which can be set using\nset_config_method(ConfigMethod.Win32).  We are considering making the Win32 API\nthe default in the future as we believe it to be the most accurate.  Any feedback on\nit compared to the other methods is welcome.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSYNC record is now supported.  This type is still in draft stage at the IETF\nand is subject to change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns.query.https() and dns.asyncquery.https() now support HTTP/3 and the http_version\nparameter may be used to specify which version to use.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf the cryptography module is installed, then dnspython will now create deterministic\nECDSA signatures by default.  Cryptography, if installed, must be at least version 43.\nThanks to Jakob Schlyter for adding the feature.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RESINFO and WALLET RdataTypes are now supported.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe COOKIE and Report-Channel EDNS0 options are now supported.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAll supported RdataTypes can now be imported at a single time rather than lazily on\nfirst use by calling dns.rdata.load_all_types().\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe SVCB and HTTPS records now support the ohttp parameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exfr() and inbound_xfr() now share a common implementation.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTokens are now supported for QUIC and HTTP/3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns.message.from_wire() now saves the input wire format in the Message's \u0026quot;wire\u0026quot;\nattribute.  Likewise, dns.message.Message.to_wire() now records the generated\nwire format in that attribute.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe dns.message.Message object now has a get_options() helper to retrieve EDNS0\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/77fd94cd9716faf23e0a6e333f6568fc24284402\"\u003e\u003ccode\u003e77fd94c\u003c/code\u003e\u003c/a\u003e 2.8.0 versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/884f38345a8152342fe8ab5da8db9aab654051ba\"\u003e\u003ccode\u003e884f383\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/1938fe331f97376bf91c028fbfb8c7588c1b84f4\"\u003e\u003ccode\u003e1938fe3\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a35d6925efe20744e8cf7545d19d03ba06e7ab6f\"\u003e\u003ccode\u003ea35d692\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c862baaf0d0aa36d2e7003dfe226cd6ad4d827c4\"\u003e\u003ccode\u003ec862baa\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/0945d5923d58048c17325975f70f0738c87570b4\"\u003e\u003ccode\u003e0945d59\u003c/code\u003e\u003c/a\u003e more lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/8fa6766d2f7a2431372fc912fb334e752290ebf2\"\u003e\u003ccode\u003e8fa6766\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/641633503ee6b07bf382594ac04707072b90de18\"\u003e\u003ccode\u003e6416335\u003c/code\u003e\u003c/a\u003e Type syntax (\u003ca href=\"https://redirect.github.com/rthalley/dnspython/issues/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a4591447b7d6e38479bcddb14de3b69f314e7009\"\u003e\u003ccode\u003ea459144\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a0d5f172e89f30709b47b59fb0919d8cf137f611\"\u003e\u003ccode\u003ea0d5f17\u003c/code\u003e\u003c/a\u003e fix the all entries\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.6.1...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `emoji` from 2.14.1 to 2.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/carpedm20/emoji/releases\"\u003eemoji's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/carpedm20/emoji/blob/master/CHANGES.md\"\u003eemoji's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.15.0 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/d26c675190a6b6c0edee959d7b896721a9c3641d\"\u003e\u003ccode\u003ed26c675\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/carpedm20/emoji/issues/322\"\u003e#322\u003c/a\u003e from cvzi/unicode17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/c52491ca37bcae81871f2678255ccbea9ee1b4f5\"\u003e\u003ccode\u003ec52491c\u003c/code\u003e\u003c/a\u003e Version bump 2.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/10b13c0956d726d9c6679406b6b408e6015c3b2d\"\u003e\u003ccode\u003e10b13c0\u003c/code\u003e\u003c/a\u003e Update translations to CLDR release-48-alpha3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/9dd9a63458e8ff543cf7ae82ef4a674bc4a94186\"\u003e\u003ccode\u003e9dd9a63\u003c/code\u003e\u003c/a\u003e Update to Unicode 17.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/d54b2f0efafa74800b49d73d08b6481d274a4534\"\u003e\u003ccode\u003ed54b2f0\u003c/code\u003e\u003c/a\u003e Remove Python 3.7, Add Python 3.13 and 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/5c4b9153162f4a11fc339f69cf5c9b8a5182c9c5\"\u003e\u003ccode\u003e5c4b915\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/carpedm20/emoji/issues/318\"\u003e#318\u003c/a\u003e from allrob23/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/45e5785b90368bd58f8742b1c8b667446ee57a7f\"\u003e\u003ccode\u003e45e5785\u003c/code\u003e\u003c/a\u003e fix: lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/69c73d5ff5deb6f5c68ad4a109d38f1001a1bed1\"\u003e\u003ccode\u003e69c73d5\u003c/code\u003e\u003c/a\u003e refactor: change _loaded_keys to use set\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/carpedm20/emoji/compare/v2.14.1...v2.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grimp` from 3.13 to 3.14\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-grimp/grimp/blob/main/CHANGELOG.rst\"\u003egrimp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.14 (2025-12-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport building graph from namespace packages, not just their portions.\u003c/li\u003e\n\u003cli\u003eBugfix: support Python 3.14 syntax such as t-strings as syntax errors.\n(\u003ca href=\"https://redirect.github.com/python-grimp/grimp/issues/268\"\u003epython-grimp/grimp#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/d4c235024704243d33a14cb2c393a91cc48591c9\"\u003e\u003ccode\u003ed4c2350\u003c/code\u003e\u003c/a\u003e Update macos runners in release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/d76ea0d5b3d2e4806510d8ea03427c9e9999ac22\"\u003e\u003ccode\u003ed76ea0d\u003c/code\u003e\u003c/a\u003e Release v3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/f42891225bc9eba71314b038434c8a3242e811f4\"\u003e\u003ccode\u003ef428912\u003c/code\u003e\u003c/a\u003e Add docs for better namespace support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/afd784bbe6ab532dd8b3b92c637e3c312a2db977\"\u003e\u003ccode\u003eafd784b\u003c/code\u003e\u003c/a\u003e Include imports of namespace packages\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/fb5bf953c8b1ea67b049e97a8050a6ee009899cf\"\u003e\u003ccode\u003efb5bf95\u003c/code\u003e\u003c/a\u003e Don't drill down into invalid identifier directories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/d35653edb5fd006aae28f0c024bebf7604265bbb\"\u003e\u003ccode\u003ed35653e\u003c/code\u003e\u003c/a\u003e Expand test to include building graph from root namespace\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/bf4236ff0991f85b717b64091f8c1f3160983b11\"\u003e\u003ccode\u003ebf4236f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/04c86eb89a4c7c9502b26f75e3083bc9f5701837\"\u003e\u003ccode\u003e04c86eb\u003c/code\u003e\u003c/a\u003e Include namespaces in graph\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/47404cbbee1cc06d5c38f42570ea283a9bffacc6\"\u003e\u003ccode\u003e47404cb\u003c/code\u003e\u003c/a\u003e Don't include directories that have no Python files within them\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/9de6b1efa94af207f4772f3a3d27f95fa79e9bd5\"\u003e\u003ccode\u003e9de6b1e\u003c/code\u003e\u003c/a\u003e Allow passing in namespace packages to build_graph\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-grimp/grimp/compare/v3.13...v3.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kombu` from 5.3.7 to 5.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/kombu/releases\"\u003ekombu's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify requirements given Py3.9+ baseline by \u003ca href=\"https://github.com/jayaddison\"\u003e\u003ccode\u003e@​jayaddison\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2414\"\u003ecelery/kombu#2414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: credential_provider compatibility issue with redis \u0026lt; 5.3.0 by \u003ca href=\"https://github.com/alaminopu\"\u003e\u003ccode\u003e@​alaminopu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2423\"\u003ecelery/kombu#2423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix SentinelChannel to pass ACL credentials to master_for() by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2426\"\u003ecelery/kombu#2426\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the error handling in ack deadline extension by \u003ca href=\"https://github.com/tungntpham\"\u003e\u003ccode\u003e@​tungntpham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2430\"\u003ecelery/kombu#2430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2434\"\u003ecelery/kombu#2434\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jayaddison\"\u003e\u003ccode\u003e@​jayaddison\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2414\"\u003ecelery/kombu#2414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2426\"\u003ecelery/kombu#2426\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tungntpham\"\u003e\u003ccode\u003e@​tungntpham\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2430\"\u003ecelery/kombu#2430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/kombu/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/kombu/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure hub close does also remove global event loop reference by \u003ca href=\"https://github.com/oliverhaas\"\u003e\u003ccode\u003e@​oliverhaas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2404\"\u003ecelery/kombu#2404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: default value for SQS's receive message by \u003ca href=\"https://github.com/cuducos\"\u003e\u003ccode\u003e@​cuducos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2405\"\u003ecelery/kombu#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFeat: add support for credential_provider to redis broker by \u003ca href=\"https://github.com/alaminopu\"\u003e\u003ccode\u003e@​alaminopu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2408\"\u003ecelery/kombu#2408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2416\"\u003ecelery/kombu#2416\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oliverhaas\"\u003e\u003ccode\u003e@​oliverhaas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2404\"\u003ecelery/kombu#2404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cuducos\"\u003e\u003ccode\u003e@​cuducos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2405\"\u003ecelery/kombu#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alaminopu\"\u003e\u003ccode\u003e@​alaminopu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2408\"\u003ecelery/kombu#2408\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/kombu/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/kombu/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003ch3\u003eQoS Max Prefetch Limit \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2348\"\u003ecelery/kombu#2348\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ePrevent Out Of Memory crashes when queues flood with ETA/countdown tasks. The new optional \u003ccode\u003emax_prefetch\u003c/code\u003e parameter caps how many messages workers hold in memory. Defaults to unlimited (\u003ccode\u003eNone\u003c/code\u003e) to preserve existing behavior.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom kombu.common import QoS\n\u003ch1\u003eLimit prefetch to maximum 100 messages\u003c/h1\u003e\n\u003cp\u003eqos = QoS(callback=consumer.qos, initial_value=10, max_prefetch=100)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eRedis Polling Interval Support \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2346\"\u003ecelery/kombu#2346\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eFix Redis transport to properly propagate \u003ccode\u003epolling_interval\u003c/code\u003e and \u003ccode\u003ebrpop_timeout\u003c/code\u003e from \u003ccode\u003etransport_options\u003c/code\u003e to the Channel's \u003ccode\u003e_brpop_start\u003c/code\u003e timeout.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eapp.conf.broker_transport_options = {\u0026quot;polling_interval\u0026quot;: 10}\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/kombu/blob/main/Changelog.rst\"\u003ekombu's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 29 December, 2025\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Improve error handling in GCP Pub/Sub ack deadline extension ([#2430](https://github.com/celery/kombu/issues/2430))\n- Fix SentinelChannel to pass ACL credentials to master_for() ([#2426](https://github.com/celery/kombu/issues/2426))\n- Fix credential_provider compatibility with redis-py \u0026lt; 5.3.0 ([#2423](https://github.com/celery/kombu/issues/2423))\n- Simplify requirements given Py3.9+ baseline ([#2414](https://github.com/celery/kombu/issues/2414))\n- Prepare for release: v5.6.2 ([#2434](https://github.com/celery/kombu/issues/2434))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 25 November, 2025\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure hub close does also remove global event loop reference (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2404\"\u003e#2404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: default value for SQS's receive message (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2405\"\u003e#2405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat: add support for credential_provider to redis broker (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2408\"\u003e#2408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2416\"\u003e#2416\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 1 November, 2025\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nQoS Max Prefetch Limit\n----------------------\n\u003cp\u003e\u003ccode\u003ePR [#2348](https://github.com/celery/kombu/issues/2348) \u0026amp;lt;https://github.com/celery/kombu/pull/2348\u0026amp;gt;\u003c/code\u003e_\u003c/p\u003e\n\u003cp\u003ePrevent Out Of Memory crashes when queues flood with ETA/countdown tasks. The new optional \u003ccode\u003emax_prefetch\u003c/code\u003e parameter caps how many messages workers hold in memory. Defaults to unlimited (\u003ccode\u003eNone\u003c/code\u003e) to preserve existing behavior.\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003efrom kombu.common import QoS\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/279b81f3042f23524111d3afcc773e8bb5530672\"\u003e\u003ccode\u003e279b81f\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2434\"\u003e#2434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/a12f3a924a21a5ee1f3b5ee9f60dd93e11102c42\"\u003e\u003ccode\u003ea12f3a9\u003c/code\u003e\u003c/a\u003e Improve the error handling in ack deadline extension (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2430\"\u003e#2430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/4055fa764b419f2c620f44c7c63afc7248d189b0\"\u003e\u003ccode\u003e4055fa7\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2432\"\u003e#2432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/8756f49760ea68a8fe81fb5a6fbd524363c8bccb\"\u003e\u003ccode\u003e8756f49\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2429\"\u003e#2429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/0a5a0bc26fd5ef775d2d3c3087820f7baea474a2\"\u003e\u003ccode\u003e0a5a0bc\u003c/code\u003e\u003c/a\u003e Fix SentinelChannel to pass ACL credentials to master_for() (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2426\"\u003e#2426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/f204769417e3b46b74f75b9e66e23d1e3033573c\"\u003e\u003ccode\u003ef204769\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2424\"\u003e#2424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/9a7285908f0d4a4c548bdd011a8b2d54371b6077\"\u003e\u003ccode\u003e9a72859\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/260d51750e6f04bf716d240912dc4bdcae269ba5\"\u003e\u003ccode\u003e260d517\u003c/code\u003e\u003c/a\u003e fix: credential_provider compatibility issue with redis \u0026lt; 5.3.0 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2423\"\u003e#2423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/161a61b934fcfd9197f4d3e1458479e82cd717dc\"\u003e\u003ccode\u003e161a61b\u003c/code\u003e\u003c/a\u003e Simplify requirements given Py3.9+ baseline (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2414\"\u003e#2414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/5208431c95bda47c7f422638dd273e086ab34be9\"\u003e\u003ccode\u003e5208431\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2416\"\u003e#2416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/kombu/compare/v5.3.7...v5.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nh3` from 0.2.14 to 0.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/messense/nh3/releases\"\u003enh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade GitHub Actions by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Stop reinstalling Rust on windows-11-arm by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/95\"\u003emessense/nh3#95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd README reference in pyproject.toml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/97\"\u003emessense/nh3#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/96\"\u003emessense/nh3#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild wheels for Python 3.14 free-threaded by \u003ca href=\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/100\"\u003emessense/nh3#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.1...v0.3.2\"\u003ehttps://github.com/messense/nh3/compare/v0.3.1...v0.3.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump ammonia from 4.1.1 to 4.1.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/93\"\u003emessense/nh3#93\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.25.1 to 0.26.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/92\"\u003emessense/nh3#92\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.0...v0.3.1\"\u003ehttps://github.com/messense/nh3/compare/v0.3.0...v0.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: add reusable \u003ccode\u003eCleaner\u003c/code\u003e API by \u003ca href=\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/90\"\u003emessense/nh3#90\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.2.22...v0.3.0\"\u003ehttps://github.com/messense/nh3/compare/v0.2.22...v0.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.2.22\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuild Windows arm64 wheels by \u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/85\"\u003emessense/nh3#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.25.0 to 0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/86\"\u003emessense/nh3#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ammonia from 4.1.0 to 4.1.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/89\"\u003emessense/nh3#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose CSS filtering options by \u003ca href=\"https://github.com/exyi\"\u003e\u003ccode\u003e@​exyi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/87\"\u003emessense/nh3#87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/85\"\u003emessense/nh3#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/exyi\"\u003e\u003ccode\u003e@​exyi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/87\"\u003emessense/nh3#87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.2.21...v0.2.22\"\u003ehttps://github.com/messense/nh3/compare/v0.2.21...v0.2.22\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.2.21\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd two additional examples for the documentation by \u003ca href=\"https://github.com/HelgeKrueger\"\u003e\u003ccode\u003e@​HelgeKrueger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/72\"\u003emessense/nh3#72\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.23.3 to 0.23.4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/75\"\u003emessense/nh3#75\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HelgeKrueger\"\u003e\u003ccode\u003e@​HelgeKrueger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/72\"\u003emessense/nh3#72\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/182f83b92cbb5dd64d603648f15f7471cc54c742\"\u003e\u003ccode\u003e182f83b\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/96eb6e4c05ad6575896c83a961bc4e442d7938e4\"\u003e\u003ccode\u003e96eb6e4\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/0f1f459deaec6f1bd2fc5297bf78eb3db3f224b4\"\u003e\u003ccode\u003e0f1f459\u003c/code\u003e\u003c/a\u003e Update to Rust 2024 edition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/6b6fca5de3955c8cb8e65186ffea5e5b4f23a82b\"\u003e\u003ccode\u003e6b6fca5\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/f9969354d3bd857944090b3da04fcaea1c755192\"\u003e\u003ccode\u003ef996935\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/8f7bf64a4c8d876123f4be4e3c6e7863fced0062\"\u003e\u003ccode\u003e8f7bf64\u003c/code\u003e\u003c/a\u003e Bump pyo3 from 0.27.0 to 0.27.1 (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/9f12749e8e00e1535d5903f8756ef55001c43162\"\u003e\u003ccode\u003e9f12749\u003c/code\u003e\u003c/a\u003e Bump pyo3 from 0.26.0 to 0.27.0 (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/5ba30e21cf43876a592c1bc3fda4b0ec1b52195f\"\u003e\u003ccode\u003e5ba30e2\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eurls\u003c/code\u003e to dynamic metadata in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/f1f2912a824048dd40f91d52a4c2c0beb5731b6d\"\u003e\u003ccode\u003ef1f2912\u003c/code\u003e\u003c/a\u003e Build wheels for Python 3.14 free-threaded (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/27ab1313750dc9f7277c14a09e4df0a384c03b34\"\u003e\u003ccode\u003e27ab131\u003c/code\u003e\u003c/a\u003e Keep GitHub Actions up to date with GitHub's Dependabot (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/messense/nh3/compare/v0.2.14...v0.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.1.3 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2 (Feb 1, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.2 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.2 is a patch release that fixes bugs discovered after the\n2.4.1 release. Highlights are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixes memory leaks\u003c/li\u003e\n\u003cli\u003eUpdates OpenBLAS to fix hangs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eDaniel Tang +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKumar Aditya\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eVikram Kumar +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 12 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30629\"\u003e#30629\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30636\"\u003e#30636\u003c/a\u003e: TYP: \u003ccode\u003earange\u003c/code\u003e: accept datetime strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30657\"\u003e#30657\u003c/a\u003e: MAINT: avoid possible race condition by not touching \u003ccode\u003eos.environ\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30700\"\u003e#30700\u003c/a\u003e: BUG: validate contraction axes in tensordot (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30521\"\u003e#30521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30701\"\u003e#30701\u003c/a\u003e: DOC: __array_namespace__info__: set_module not __module__ (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30679\"\u003e#30679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30702\"\u003e#30702\u003c/a\u003e: BUG: fix free-threaded PyObject layout in replace_scalar_type_names...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30703\"\u003e#30703\u003c/a\u003e: TST: fix limited API example in tests for latest Cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30709\"\u003e#30709\u003c/a\u003e: BUG: Fix some bugs found via valgrind (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30680\"\u003e#30680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30712\"\u003e#30712\u003c/a\u003e: MAINT: replace ob_type access with Py_TYPE in PyArray_CheckExact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30713\"\u003e#30713\u003c/a\u003e: BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30736\"\u003e#30736\u003c/a\u003e: BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30737\"\u003e#30737\u003c/a\u003e: backport scipy-openblas version change\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe commands can be copied into the command line, but be sure to replace 2.4.0\nwith the correct version. This should be read together with the\n:ref:\u003ccode\u003egeneral release guide \u0026lt;prepare_release\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eFacility preparation\u003c/h1\u003e\n\u003cp\u003eBefore beginning to make a release, use the \u003ccode\u003erequirements/*_requirements.txt\u003c/code\u003e files to\nensure that you have the needed software. Most software can be installed with\npip, but some will require apt-get, dnf, or whatever your system uses for\nsoftware. You will also need a GitHub personal access token (PAT) to push the\ndocumentation. There are a few ways to streamline things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGit can be set up to use a keyring to store your GitHub personal access token.\nSearch online for the details.\u003c/li\u003e\n\u003cli\u003eYou can use the \u003ccode\u003ekeyring\u003c/code\u003e app to store the PyPI password for twine. See the\nonline twine documentation for details.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePrior to release\u003c/h1\u003e\n\u003ch2\u003eAdd/drop Python versions\u003c/h2\u003e\n\u003cp\u003eWhen adding or dropping Python versions, multiple config and CI files need to\nbe edited in addition to changing the minimum version in \u003ccode\u003epyproject.toml\u003c/code\u003e.\nMake these changes in an ordinary PR against main and backport if necessary.\nWe currently release wheels for new Python versions after the first Python RC\nonce manylinux and cibuildwheel support that new Python version.\u003c/p\u003e\n\u003ch2\u003eBackport pull requests\u003c/h2\u003e\n\u003cp\u003eChanges that have been marked for this release must be backported to the\nmaintenance/2.4.x branch.\u003c/p\u003e\n\u003ch2\u003eUpdate 2.4.0 milestones\u003c/h2\u003e\n\u003cp\u003eLook at the issues/prs with 2.4.0 milestones and either push them off to a\nlater version, or maybe remove the milestone. You may need to add a milestone.\u003c/p\u003e\n\u003cp\u003eCheck the numpy-release repo\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/c81c49f77451340651a751e76bca607d85e4fd55\"\u003e\u003ccode\u003ec81c49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30757\"\u003e#30757\u003c/a\u003e from charris/prepare-2.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b3ae9c59de627110458653836f1be81280222f85\"\u003e\u003ccode\u003eb3ae9c5\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9de89843c3918fa133f1aab9fb4435c38a3b0ba6\"\u003e\u003ccode\u003e9de8984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30737\"\u003e#30737\u003c/a\u003e from mattip/scipy-openblas-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b7be329895e32de44578742b2745fb307cdf8625\"\u003e\u003ccode\u003eb7be329\u003c/code\u003e\u003c/a\u003e backport scipy-openblas version change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7ff98637f80dc1ff7a18fce8025ffabdded76094\"\u003e\u003ccode\u003e7ff9863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30736\"\u003e#30736\u003c/a\u003e from charris/backport-30667\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/431fffbe91d86c04738f039e0048441f8f9b5fff\"\u003e\u003ccode\u003e431fffb\u003c/code\u003e\u003c/a\u003e MAINT: Skip tests that require \u003cstrong\u003ebuffer\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/127235fcd9b2e80764da8f6c64f942a6bddb093a\"\u003e\u003ccode\u003e127235f\u003c/code\u003e\u003c/a\u003e BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/18bdb2e675b68daa5afc3250c41982ff77b3867f\"\u003e\u003ccode\u003e18bdb2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30713\"\u003e#30713\u003c/a\u003e from charris/backport-30710\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/41dd7512de6dc3dd665b71d4e3a321aa1150dc48\"\u003e\u003ccode\u003e41dd751\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30712\"\u003e#30712\u003c/a\u003e from charris/backport-30705\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7a278da99943376313b8f631905c3baaa7a82a30\"\u003e\u003ccode\u003e7a278da\u003c/code\u003e\u003c/a\u003e BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.1.3...v2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openpyxl` from 3.1.2 to 3.1.5\n\nUpdates `orjson` from 3.11.5 to 3.11.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6 - 2026-01-29\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec2b066cae79ae4a90ed126ac5723335dd99e408\"\u003e\u003ccode\u003eec2b066\u003c/code\u003e\u003c/a\u003e 3.11.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1ca01f78cf4198ec37407d83713afa6e5c53dbf9\"\u003e\u003ccode\u003e1ca01f7\u003c/code\u003e\u003c/a\u003e zmij\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1716a226bd1f38db01503f30cd37b0efec48d88e\"\u003e\u003ccode\u003e1716a22\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec02024c3837255064f248c0d2d331319b75e9ad\"\u003e\u003ccode\u003eec02024\u003c/code\u003e\u003c/a\u003e 3.11.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d58168733189f82b3fd0c058dff73e05d09202e6\"\u003e\u003ccode\u003ed581687\u003c/code\u003e\u003c/a\u003e build, clippy misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4105b29b2275f200f6fae01349bef02ccf1bc2e2\"\u003e\u003ccode\u003e4105b29\u003c/code\u003e\u003c/a\u003e writer::num\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/62bb185b70785ded49c79c26f8c9781f1e6fe370\"\u003e\u003ccode\u003e62bb185\u003c/code\u003e\u003c/a\u003e Fix sporadic crash on serializing object close\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d860078a973f44401265c5c4ad12a7dbe4f839ad\"\u003e\u003ccode\u003ed860078\u003c/code\u003e\u003c/a\u003e PyRef idiom refactors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/343ae2f148197918aba9f8562db42c364620e4b8\"\u003e\u003ccode\u003e343ae2f\u003c/code\u003e\u003c/a\u003e Deserializer, Utf8Buffer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/7835f58d1c56947d1cf7a18acdfc07a2bca9b0f2\"\u003e\u003ccode\u003e7835f58\u003c/code\u003e\u003c/a\u003e PyBytesRef and other input refactor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.5...3.11.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `posthoganalytics` from 7.4.3 to 7.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/posthog/posthog-python/releases\"\u003eposthoganalytics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.8.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix feature flag 401 errors causing HTTP request storm by \u003ca href=\"https://github.com/GabiGrin\"\u003e\u003ccode\u003e@​GabiGrin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/422\"\u003ePostHog/posthog-python#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAI input image sanitization by \u003ca href=\"https://github.com/vikas5914\"\u003e\u003ccode\u003e@​vikas5914\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/384\"\u003ePostHog/posthog-python#384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: openai image sanitization by \u003ca href=\"https://github.com/ablaszkiewicz\"\u003e\u003ccode\u003e@​ablaszkiewicz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/425\"\u003ePostHog/posthog-python#425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GabiGrin\"\u003e\u003ccode\u003e@​GabiGrin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/422\"\u003ePostHog/posthog-python#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vikas5914\"\u003e\u003ccode\u003e@​vikas5914\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/384\"\u003ePostHog/posthog-python#384\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.8.2...v7.8.3\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.8.2...v7.8.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.8.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(llma): default prompts url by \u003ca href=\"https://github.com/Radu-Raicea\"\u003e\u003ccode\u003e@​Radu-Raicea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/423\"\u003ePostHog/posthog-python#423\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.8.1...v7.8.2\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.8.1...v7.8.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.8.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: SDK Compliance by \u003ca href=\"https://github.com/jose-sequeira\"\u003e\u003ccode\u003e@​jose-sequeira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/397\"\u003ePostHog/posthog-python#397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(llma): small fixes for prompt management by \u003ca href=\"https://github.com/Radu-Raicea\"\u003e\u003ccode\u003e@​Radu-Raicea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/420\"\u003ePostHog/posthog-python#420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jose-sequeira\"\u003e\u003ccode\u003e@​jose-sequeira\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/397\"\u003ePostHog/posthog-python#397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.8.0...v7.8.1\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.8.0...v7.8.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(llma): pass raw provider usage metadata for backend cost calculations by \u003ca href=\"https://github.com/richardsolomou\"\u003e\u003ccode\u003e@​richardsolomou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/411\"\u003ePostHog/posthog-python#411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(llma): add prompt management by \u003ca href=\"https://github.com/Radu-Raicea\"\u003e\u003ccode\u003e@​Radu-Raicea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/417\"\u003ePostHog/posthog-python#417\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/richardsolomou\"\u003e\u003ccode\u003e@​richardsolomou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/411\"\u003ePostHog/posthog-python#411\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.7.0...v7.8.0\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.7.0...v7.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.7.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(ai): add OpenAI Agents SDK integration by \u003ca href=\"https://github.com/andrewm4894\"\u003e\u003ccode\u003e@​andrewm4894\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/408\"\u003ePostHog/posthog-python#408\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.6.0...v7.7.0\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.6.0...v7.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: check for syntax warnings by \u003ca href=\"https://github.com/pauldambra\"\u003e\u003ccode\u003e@​pauldambra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/404\"\u003ePostHog/posthog-python#404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix link formatting in CHANGELOG.md by \u003ca href=\"https://github.com/pauldambra\"\u003e\u003ccode\u003e@​pauldambra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/406\"\u003ePostHog/posthog-python#406\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PostHog/posthog-python/blob/master/CHANGELOG.md\"\u003eposthoganalytics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.8.3 - 2026-02-06\u003c/h1\u003e\n\u003cp\u003efix: openAI input image sanitization\u003c/p\u003e\n\u003ch1\u003e7.8.2 - 2026-02-04\u003c/h1\u003e\n\u003cp\u003efix(llma): fix prompts default url\u003c/p\u003e\n\u003ch1\u003e7.8.1 - 2026-02-03\u003c/h1\u003e\n\u003cp\u003efix(llma): small fixes for prompt management\u003c/p\u003e\n\u003ch1\u003e7.8.0 - 2026-01-28\u003c/h1\u003e\n\u003cp\u003efeat(llma): add prompt management\u003c/p\u003e\n\u003cp\u003eAdds the Prompt Management feature. At the time of release, this feature is in a closed alpha.\u003c/p\u003e\n\u003ch1\u003e7.7.0 - 2026-01-15\u003c/h1\u003e\n\u003cp\u003efeat(ai): Add OpenAI Agents SDK integration\u003c/p\u003e\n\u003cp\u003eAutomatic tracing for agent workflows, handoffs, tool calls, guardrails, and custom spans. Includes \u003ccode\u003e$ai_total_tokens\u003c/code\u003e, \u003ccode\u003e$ai_error_type\u003c/code\u003e categorization, and \u003ccode\u003e$ai_framework\u003c/code\u003e property.\u003c/p\u003e\n\u003ch1\u003e7.6.0 - 2026-01-12\u003c/h1\u003e\n\u003cp\u003efeat: add device_id to flags request payload\u003c/p\u003e\n\u003cp\u003eAdd device_id parameter to all feature flag methods, allowing the server to track device identifiers for flag evaluation. The device_id can be passed explicitly or set via context using \u003ccode\u003eset_context_device_id()\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003e7.5.1 - 2026-01-07\u003c/h1\u003e\n\u003cp\u003efix: avoid return from finally block to fix Python 3.14 SyntaxWarning (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/361\"\u003e#361\u003c/a\u003e) - thanks \u003ca href=\"https://github.com/jodal\"\u003e\u003ccode\u003e@​jodal\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch1\u003e7.5.0 - 2026-01-06\u003c/h1\u003e\n\u003cp\u003efeat: Capture Langchain, OpenAI and Anthropic errors as exceptions (if exception autocapture is enabled)\nfeat: Add reference to exception in LLMA trace and span events\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/fe3a9bbf75d83cbaf8643f099d7ec802ea3a4d87\"\u003e\u003ccode\u003efe3a9bb\u003c/code\u003e\u003c/a\u003e fix: openai image sanitization (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/b6e66330e59536a6a12b79f3ff39f9e39b2f0fd6\"\u003e\u003ccode\u003eb6e6633\u003c/code\u003e\u003c/a\u003e fix: openAI input image sanitization (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/4f32fa41008d21038428fa4987fb7dfc45919982\"\u003e\u003ccode\u003e4f32fa4\u003c/code\u003e\u003c/a\u003e Fix feature flag 401 errors causing HTTP request storm (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/422\"\u003e#422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/f5719f39da5f0e2d1a19805dee1846d27330fef5\"\u003e\u003ccode\u003ef5719f3\u003c/code\u003e\u003c/a\u003e fix(llma): default prompts url (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/423\"\u003e#423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/d4f2d6dfb083d023c2b4e9978bf3133c8b51fa64\"\u003e\u003ccode\u003ed4f2d6d\u003c/code\u003e\u003c/a\u003e fix(llma): small fixes for prompt management (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/72f448816c82b466c98ba2efc80e36c973b8d4e4\"\u003e\u003ccode\u003e72f4488\u003c/code\u003e\u003c/a\u003e feat: SDK Compliance (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/4350389f931fa2bfca08c2df8c5998d15525409e\"\u003e\u003ccode\u003e4350389\u003c/code\u003e\u003c/a\u003e feat(llma): add prompt management (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/c32c78312f47f90537337870620972c015d5c779\"\u003e\u003ccode\u003ec32c783\u003c/code\u003e\u003c/a\u003e feat(llma): pass raw provider usage metadata for backend cost calculations (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/1875b712d23e9a81bc83e0e8be36a751b3096631\"\u003e\u003ccode\u003e1875b71\u003c/code\u003e\u003c/a\u003e feat(ai): add OpenAI Agents SDK integration (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/408\"\u003e#408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://...\n\n_Description has been truncated_","html_url":"https://github.com/PostHog/posthog/pull/48002","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PostHog%2Fposthog/issues/48002","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/48002/packages"},{"uuid":"3939047565","node_id":"PR_kwDOG1Zs187Dp5X9","number":12085,"state":"open","title":"Chore(deps): Bump the utilities-patch group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-13T20:27:55.000Z","updated_at":"2026-02-13T20:29:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":6,"packages":[{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.14","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"zensical","old_version":"0.0.21","new_version":"0.0.23","repository_url":"https://github.com/zensical/zensical"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.14` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.21` | `0.0.23` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.14\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-10]\u003c/h2\u003e\n\u003ch3\u003ellama-index-callbacks-wandb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update cacheable Anthropic models (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20581\"\u003e#20581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: add support for opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20635\"\u003e#20635\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix bedrock converse empty tool config issue (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20571\"\u003e#20571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(llms-bedrock-converse): improve bedrock converse retry handling (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20590\"\u003e#20590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20637\"\u003e#20637\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/b4b5f403acef36c17952aa9b64d5472775037459\"\u003e\u003ccode\u003eb4b5f40\u003c/code\u003e\u003c/a\u003e Release 0.14.14 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20670\"\u003e#20670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/500eca1748117e20d75922023fb2502c4950eb4e\"\u003e\u003ccode\u003e500eca1\u003c/code\u003e\u003c/a\u003e docs: Clarify async streaming usage for LLM and ChatEngine (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20653\"\u003e#20653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/d875559bda34622b16e230a711c1f885633ae171\"\u003e\u003ccode\u003ed875559\u003c/code\u003e\u003c/a\u003e fix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20\"\u003e#20\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/a141cd674492bcdb14afcb6af9db8ecc6de1754d\"\u003e\u003ccode\u003ea141cd6\u003c/code\u003e\u003c/a\u003e Add support for adaptive thinking in Bedrock (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20659\"\u003e#20659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/e0fc5f79963223681d6934e07dc4b46100d6544d\"\u003e\u003ccode\u003ee0fc5f7\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 2 directories with 7 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20662\"\u003e#20662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c915902f2e6a16b484ee9f968ad7e57713a51d05\"\u003e\u003ccode\u003ec915902\u003c/code\u003e\u003c/a\u003e docs: Couchbase example documentation fix (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20658\"\u003e#20658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/35e0406472518181f52d4d5b4e743dea88d4e751\"\u003e\u003ccode\u003e35e0406\u003c/code\u003e\u003c/a\u003e update readme (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20656\"\u003e#20656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c7ad9616f51d048d09138a645c088e203b3182be\"\u003e\u003ccode\u003ec7ad961\u003c/code\u003e\u003c/a\u003e fix: avoid ValueError in ag-ui message conversion for multi-block ChatMessage...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/9400c9019d23cd5f12f74d4b60b10f19292d979b\"\u003e\u003ccode\u003e9400c90\u003c/code\u003e\u003c/a\u003e feat: add chonkie integration (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20622\"\u003e#20622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/1ca1369a6eaaee1e575a7823502e021721ee5964\"\u003e\u003ccode\u003e1ca1369\u003c/code\u003e\u003c/a\u003e Fix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.21 to 0.0.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003ch1\u003eSummary\u003c/h1\u003e\n\u003cp\u003eThis version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e10b5162 \u003cstrong\u003ecompat\u003c/strong\u003e – lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.22\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version adds support for the \u003ca href=\"https://github.com/mkdocstrings/autorefs\"\u003eautorefs\u003c/a\u003e plugin, and further improves performance for large mkdocstrings projects. The \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e is updated to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.7\"\u003ev0.0.7\u003c/a\u003e, which fixes some isses with the mobile browsering experience.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ee32ab15 \u003cstrong\u003ezensical\u003c/strong\u003e, \u003cstrong\u003ecompat\u003c/strong\u003e – support autorefs plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1b1fd84 \u003cstrong\u003ezensical\u003c/strong\u003e – reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003ee33c972 \u003cstrong\u003ecompat\u003c/strong\u003e – don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003eb3c699b \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003ee233f9f \u003cstrong\u003ecompat\u003c/strong\u003e – fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee3fc49f \u003cstrong\u003ezensical\u003c/strong\u003e – relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/d9462afc011bdfce4b948e0c1aa71af56144cf9f\"\u003e\u003ccode\u003ed9462af\u003c/code\u003e\u003c/a\u003e chore: release v0.0.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/10b5162aa6782983ebdbdd6445030d9a309579a8\"\u003e\u003ccode\u003e10b5162\u003c/code\u003e\u003c/a\u003e fix: lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7b845d9212787f972ab7d9e4b7c363121e3c50fa\"\u003e\u003ccode\u003e7b845d9\u003c/code\u003e\u003c/a\u003e chore: release v0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1b1fd8458d4a372d85c8a255618f6eb7354204b3\"\u003e\u003ccode\u003e1b1fd84\u003c/code\u003e\u003c/a\u003e fix: reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e33c972e03fe69e69ab6774bbda8ce5652fdc848\"\u003e\u003ccode\u003ee33c972\u003c/code\u003e\u003c/a\u003e fix: don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/b3c699ba45b0db862f8230832b21b2463690c99f\"\u003e\u003ccode\u003eb3c699b\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/8352b1a14f2f7ffc82e10eefee959f5e6f6d2fde\"\u003e\u003ccode\u003e8352b1a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003ezrx\u003c/code\u003e to v0.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e32ab15b1fe6bd81f1a66780e6084f563165e1c1\"\u003e\u003ccode\u003ee32ab15\u003c/code\u003e\u003c/a\u003e feature: support autorefs plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e233f9f7d4520e8a6a382c05b9250149e63ce58b\"\u003e\u003ccode\u003ee233f9f\u003c/code\u003e\u003c/a\u003e fix: fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e3fc49f72fb299f467557edabda6a004c84597fd\"\u003e\u003ccode\u003ee3fc49f\u003c/code\u003e\u003c/a\u003e fix: relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.21...v0.0.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d\"\u003e\u003ccode\u003ea2f11d2\u003c/code\u003e\u003c/a\u003e Prepare for 0.15.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23253\"\u003e#23253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff\"\u003e\u003ccode\u003ed29628e\u003c/code\u003e\u003c/a\u003e Remove docker-run-action (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23254\"\u003e#23254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0\"\u003e\u003ccode\u003e8a04266\u003c/code\u003e\u003c/a\u003e [ty] Allow discovering dependencies in system Python environments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22994\"\u003e#22994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163\"\u003e\u003ccode\u003e55d06c8\u003c/code\u003e\u003c/a\u003e Ensure pending suppression diagnostics are reported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea\"\u003e\u003ccode\u003ed056a9f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] support for configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a\"\u003e\u003ccode\u003ee22fa4f\u003c/code\u003e\u003c/a\u003e [ty] Fix method calls on subclasses of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23248\"\u003e#23248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c\"\u003e\u003ccode\u003efa56c15\u003c/code\u003e\u003c/a\u003e [ty] Fix bound method access on \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23246\"\u003e#23246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2\"\u003e\u003ccode\u003e4fd07d0\u003c/code\u003e\u003c/a\u003e Make range suppression test snapshot actually useful (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23251\"\u003e#23251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f\"\u003e\u003ccode\u003e8c63bce\u003c/code\u003e\u003c/a\u003e [ty] Include conditional symbols (like \u003ccode\u003edatetime.UTC\u003c/code\u003e) in auto-import in more...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d\"\u003e\u003ccode\u003e46be943\u003c/code\u003e\u003c/a\u003e Exclude WASM artifacts from GitHub releases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23221\"\u003e#23221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12085","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12085","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12085/packages"}],"issue_packages":[{"old_version":"3.10.2.20260508","new_version":"3.10.2.20260518","update_type":null,"path":null,"pr_created_at":"2026-05-19T06:39:30.000Z","version_change":"3.10.2.20260508 → 3.10.2.20260518","issue":{"uuid":"4475021954","node_id":"PR_kwDOCSpQdM7c8nMU","number":556,"state":"closed","title":"build(deps-dev): Bump the python-dev group with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T04:58:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T06:39:30.000Z","updated_at":"2026-05-22T04:58:46.000Z","time_to_close":253154,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): Bump","group_name":"python-dev","update_count":8,"packages":[{"name":"basedpyright","old_version":"1.39.4","new_version":"1.39.5","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-cffi","old_version":"2.0.0.20260508","new_version":"2.0.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260508","new_version":"3.10.2.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260508","new_version":"4.9.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260508","new_version":"2.20.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260510","new_version":"6.0.12.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260508","new_version":"82.0.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dev group with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.4` | `1.39.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.13` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260508` | `2.0.0.20260518` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260508` | `3.10.2.20260518` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260508` | `4.9.0.20260518` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260508` | `2.20.0.20260518` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260510` | `6.0.12.20260518` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260508` | `82.0.0.20260518` |\n\nUpdates `basedpyright` from 1.39.4 to 1.39.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a511b786acd28e190b1a8ba5e683de31e2a690e7\"\u003e\u003ccode\u003ea511b78\u003c/code\u003e\u003c/a\u003e 1.39.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/009e953c1d1e880bc07ce926282627e8f33519e4\"\u003e\u003ccode\u003e009e953\u003c/code\u003e\u003c/a\u003e fix error attempting to baseline diagnostics from the new `string.templatelib...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/9ff98486dfd844968a46d7cb13e6e5b32345dceb\"\u003e\u003ccode\u003e9ff9848\u003c/code\u003e\u003c/a\u003e fix \u0026quot;Pyright current file\u0026quot; vscode launch config when node isn't installed glo...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.4...v1.39.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260508 to 2.0.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260508 to 3.10.2.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260508 to 4.9.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260508 to 2.20.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20260510 to 6.0.12.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260508 to 82.0.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/Nadock/rileychase.net/pull/556","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nadock%2Frileychase.net/issues/556","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/556/packages"}},{"old_version":"3.10.2.20260211","new_version":"3.10.2.20260518","update_type":null,"path":null,"pr_created_at":"2026-05-18T19:45:16.000Z","version_change":"3.10.2.20260211 → 3.10.2.20260518","issue":{"uuid":"4472069858","node_id":"PR_kwDORDhEE87czKPD","number":153,"state":"closed","title":"Bump the production-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-19T22:30:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-18T19:45:16.000Z","updated_at":"2026-05-19T22:30:38.000Z","time_to_close":96320,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":31,"packages":[{"name":"crispy-bootstrap5","old_version":"2025.6","new_version":"2026.3","repository_url":"https://github.com/django-crispy-forms/crispy-bootstrap5"},{"name":"django","old_version":"6.0.2","new_version":"6.0.5","repository_url":"https://github.com/django/django"},{"name":"django-crispy-forms","old_version":"2.5","new_version":"2.6","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"nh3","old_version":"0.3.3","new_version":"0.3.5","repository_url":"https://github.com/messense/nh3"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"whitenoise","old_version":"6.11.0","new_version":"6.12.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"gunicorn","old_version":"25.1.0","new_version":"26.0.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"attrs","old_version":"25.4.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [crispy-bootstrap5](https://github.com/django-crispy-forms/crispy-bootstrap5), [django](https://github.com/django/django), [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms), [nh3](https://github.com/messense/nh3), [python-dotenv](https://github.com/theskumar/python-dotenv), [whitenoise](https://github.com/evansd/whitenoise), [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin), [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs), [pre-commit](https://github.com/pre-commit/pre-commit), [types-markdown](https://github.com/python/typeshed), [django-anymail[resend]](https://github.com/anymail/django-anymail), [gunicorn](https://github.com/benoitc/gunicorn), [psycopg[binary]](https://github.com/psycopg/psycopg), [anyio](https://github.com/agronholm/anyio), [attrs](https://github.com/python-attrs/attrs), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [django-anymail](https://github.com/anymail/django-anymail), [idna](https://github.com/kjd/idna), [packaging](https://github.com/pypa/packaging), [psycopg](https://github.com/psycopg/psycopg), [psycopg-binary](https://github.com/psycopg/psycopg), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic), [requests](https://github.com/psf/requests), [svix](https://github.com/svix/svix-webhooks), [types-deprecated](https://github.com/python/typeshed), [types-python-dateutil](https://github.com/python/typeshed), [tzdata](https://github.com/python/tzdata), [urllib3](https://github.com/urllib3/urllib3) and [wrapt](https://github.com/GrahamDumpleton/wrapt) to permit the latest version.\nUpdates `crispy-bootstrap5` from 2025.6 to 2026.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/releases\"\u003ecrispy-bootstrap5's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026.3 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 and 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/blob/main/CHANGELOG.md\"\u003ecrispy-bootstrap5's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026.3 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 and 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/a109daa0e7a56be929c3b7c3daa6d8c9c8a01ae2\"\u003e\u003ccode\u003ea109daa\u003c/code\u003e\u003c/a\u003e Release 2026.3 (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/80dda259e64a4a0d3c72c4625a11fa5c04d79537\"\u003e\u003ccode\u003e80dda25\u003c/code\u003e\u003c/a\u003e field_errors_block.html: insert missing space between attributes (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/e03c9b1d11362a98adbfaddfbd250f6f69f00634\"\u003e\u003ccode\u003ee03c9b1\u003c/code\u003e\u003c/a\u003e Dropped support for Django versions prior to 5.2. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/7a95d7fcaea206dd568f8665974b67c100e1eebf\"\u003e\u003ccode\u003e7a95d7f\u003c/code\u003e\u003c/a\u003e Updated tests for Django 6.0.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/220\"\u003e#220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/7fd93894434f9e2ec48f9ecb97ee855b39bb575e\"\u003e\u003ccode\u003e7fd9389\u003c/code\u003e\u003c/a\u003e PEP 639 licenses (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/271cfdb6eda713c246121ad1e83d2a372967f410\"\u003e\u003ccode\u003e271cfdb\u003c/code\u003e\u003c/a\u003e Fix TemplateDoesNotExist when using MultiField (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/75\"\u003e#75\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/1aed40a06d88d2d39c802737026e7f042011cd0d\"\u003e\u003ccode\u003e1aed40a\u003c/code\u003e\u003c/a\u003e Updated supported versions. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/commit/ef2ec5d4736512996e11ab2ac3c66db4659e4ddb\"\u003e\u003ccode\u003eef2ec5d\u003c/code\u003e\u003c/a\u003e Used PEP 735 Dependency Groups. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/crispy-bootstrap5/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/crispy-bootstrap5/compare/2025.6...2026.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 6.0.2 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8f8ad09659d728423a00e0a3b5f16da5c3a38e24\"\u003e\u003ccode\u003e8f8ad09\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.5 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/44ad76efcbe3c4ca0f08bb9dabe916f6374596c9\"\u003e\u003ccode\u003e44ad76e\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1b0184aa657bc3f5859aeb0206e7c1e94e48b103\"\u003e\u003ccode\u003e1b0184a\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ad8f9e19e0897ea45ded7c046ff28daf6f773e92\"\u003e\u003ccode\u003ead8f9e1\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/990ab01e70fd8f55e867b4a234c0ee242fd33fec\"\u003e\u003ccode\u003e990ab01\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37039\"\u003e#37039\u003c/a\u003e -- Removed outdated note from QuerySet.iterator() docs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/f0c269f285ab58bfb4a120141d7dd41ff4f42b45\"\u003e\u003ccode\u003ef0c269f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8bcd15beeff6542acc381b83f50b061d62284c2b\"\u003e\u003ccode\u003e8bcd15b\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37067\"\u003e#37067\u003c/a\u003e -- Added trailing slash in django_file_prefixes().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/3cdec6454fb86e8d03a06944c0c68025733ed93f\"\u003e\u003ccode\u003e3cdec64\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs CVE-2026-25674 -- Clarified role of umask in upload permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5dd5c70cf1056e8e04badb687f773e8f16bba257\"\u003e\u003ccode\u003e5dd5c70\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.5 and 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8ee73415270a1a54daaec9bb529ad82c6f7a6d4c\"\u003e\u003ccode\u003e8ee7341\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/373\"\u003e#373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/django/django/issues/34122\"\u003e#34122\u003c/a\u003e -- Removed warning that ForeignObject is an interna...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.2...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.5 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6 (2026-03-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Django 4.2, 5.0 and 5.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/dc8007e35f3387cca3e799a6fc93226a5a808bdc\"\u003e\u003ccode\u003edc8007e\u003c/code\u003e\u003c/a\u003e Release 2.6. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1432\"\u003e#1432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/792c6717388aef8fa4b8482f6858048afaa6803f\"\u003e\u003ccode\u003e792c671\u003c/code\u003e\u003c/a\u003e Updated versions in pyproject.toml. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1431\"\u003e#1431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/af31d24c681a90b5217df66d47a6da292baff89c\"\u003e\u003ccode\u003eaf31d24\u003c/code\u003e\u003c/a\u003e Fix incorrect reverse in crispy tag docs (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1410\"\u003e#1410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/fb7acdcbb861a5194e26739cf5e2f0ac16d4b30c\"\u003e\u003ccode\u003efb7acdc\u003c/code\u003e\u003c/a\u003e Don't crash when using the crispy template tag and missing variables (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1418\"\u003e#1418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/d30a0ab6e3f180c9ca63636a45e261b0815ce0ac\"\u003e\u003ccode\u003ed30a0ab\u003c/code\u003e\u003c/a\u003e Dropped unsupported Django versions. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1430\"\u003e#1430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/3f5b88da2a305f79a8cae5f6bd54475c22535652\"\u003e\u003ccode\u003e3f5b88d\u003c/code\u003e\u003c/a\u003e Improved |as_crispy_field error message. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1427\"\u003e#1427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/6a97c68d7465a75db57108d50959f98aabd2ec1b\"\u003e\u003ccode\u003e6a97c68\u003c/code\u003e\u003c/a\u003e Fix typos in some files (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1425\"\u003e#1425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.5...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nh3` from 0.3.3 to 0.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/messense/nh3/releases\"\u003enh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd usage examples for clean() and Cleaner arguments by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/120\"\u003emessense/nh3#120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd doctest coverage for module docstrings and RST files by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/121\"\u003emessense/nh3#121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.28.2 to 0.28.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/123\"\u003emessense/nh3#123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tags parameter to clean_text by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/122\"\u003emessense/nh3#122\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.4...v0.3.5\"\u003ehttps://github.com/messense/nh3/compare/v0.3.4...v0.3.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.3.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pyo3 from 0.28.1 to 0.28.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/114\"\u003emessense/nh3#114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate rel attribute conflict with link_rel by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/117\"\u003emessense/nh3#117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose default clean_content_tags as module constant by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/118\"\u003emessense/nh3#118\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept frozenset and Mapping in type stubs by \u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/119\"\u003emessense/nh3#119\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gghez\"\u003e\u003ccode\u003e@​gghez\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/117\"\u003emessense/nh3#117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.3...v0.3.4\"\u003ehttps://github.com/messense/nh3/compare/v0.3.3...v0.3.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/9e78e6af74267c6789c62e98512460990415fb91\"\u003e\u003ccode\u003e9e78e6a\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/5225ec29f6ba74349d158676461fa6081cf804d8\"\u003e\u003ccode\u003e5225ec2\u003c/code\u003e\u003c/a\u003e Add tags parameter to clean_text (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/129df5295dd98b263a3f24bd4f9bd5e43a7bb677\"\u003e\u003ccode\u003e129df52\u003c/code\u003e\u003c/a\u003e Bump pyo3 from 0.28.2 to 0.28.3 (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/123\"\u003e#123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/25348dffb9f1373008a3f0f7d85f2ebb37883e07\"\u003e\u003ccode\u003e25348df\u003c/code\u003e\u003c/a\u003e Add doctest coverage for module docstrings and RST files (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/121\"\u003e#121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/bf48b37d0b8e1e1bddc62ae058f880eae1a4abc2\"\u003e\u003ccode\u003ebf48b37\u003c/code\u003e\u003c/a\u003e Add usage examples for clean() and Cleaner arguments (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/120\"\u003e#120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/c2ddb81e29ceee428a49b621994098e4e490d172\"\u003e\u003ccode\u003ec2ddb81\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/d19279a664798d898ee68c73998d1d4a979bb97f\"\u003e\u003ccode\u003ed19279a\u003c/code\u003e\u003c/a\u003e Accept frozenset and Mapping in type stubs (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/119\"\u003e#119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/b98f2c5f4a023c9281f4a2037931de4c73a3266b\"\u003e\u003ccode\u003eb98f2c5\u003c/code\u003e\u003c/a\u003e Expose default clean_content_tags as module constant (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/118\"\u003e#118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/9fdfa76988dda100ae69a657f017655b86821b8a\"\u003e\u003ccode\u003e9fdfa76\u003c/code\u003e\u003c/a\u003e Validate rel attribute conflict with link_rel (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/117\"\u003e#117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/8af5eeeb6b1c8a391c0c6f4e0634f3f859b75446\"\u003e\u003ccode\u003e8af5eee\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/115\"\u003e#115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.3...v0.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `whitenoise` from 6.11.0 to 6.12.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst\"\u003ewhitenoise's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.12.0 (2026-02-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support.\u003c/li\u003e\n\u003cli\u003eFix potential unauthorised file access vulnerability in \u0026quot;autorefesh\u0026quot; mode. See \u003ccode\u003ePR [#684](https://github.com/evansd/whitenoise/issues/684) \u0026lt;https://github.com/evansd/whitenoise/pull/684\u0026gt;\u003c/code\u003e__ for details, and a reminder that autorefresh mode has always been documented as unsuitable for production use. Thanks Seth Larson for reporting.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/1e3a30bc9e6b82c79a03d35532a7ba72715918df\"\u003e\u003ccode\u003e1e3a30b\u003c/code\u003e\u003c/a\u003e Version 6.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/bc4c738d768f3f91a67b9e297490645b33adc3d4\"\u003e\u003ccode\u003ebc4c738\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/684\"\u003e#684\u003c/a\u003e from evansd/use-commonpath\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/505ed8d28d34307606ba6ed9ac7740c7c0701955\"\u003e\u003ccode\u003e505ed8d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eos.path.commonpath()\u003c/code\u003e to identify child paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/b6d8ed40206aea61d1265ca84d88e786366d891b\"\u003e\u003ccode\u003eb6d8ed4\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/683\"\u003e#683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/edc79de2d063ae04980a251b67d73acf7ef06d3d\"\u003e\u003ccode\u003eedc79de\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/79fb2f136fe34debe427d4d031b11ec10b7ca2cc\"\u003e\u003ccode\u003e79fb2f1\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/2b245df895acb3aad86aadd02a794bfbf9374d3a\"\u003e\u003ccode\u003e2b245df\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/681\"\u003e#681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/dcb50f36d437dddfab06ce8fc36e6ec1f34f5af5\"\u003e\u003ccode\u003edcb50f3\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/678\"\u003e#678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/1c4a746afe1fdeaa458aa0fe2951cebe1fe0f026\"\u003e\u003ccode\u003e1c4a746\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/677\"\u003e#677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/evansd/whitenoise/commit/e7f970aac293079c3fabe44b5072a70670ec3268\"\u003e\u003ccode\u003ee7f970a\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/evansd/whitenoise/issues/676\"\u003e#676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/evansd/whitenoise/compare/6.11.0...6.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-coverage-plugin` from 3.2.0 to 3.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/releases\"\u003edjango-coverage-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.2\u003c/h2\u003e\n\u003cp\u003eFix: \u003ccode\u003e{% endblock %}\u003c/code\u003e lines (and others) were falsely reported as unexecuted when they appeared on their own indented line (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003eissue 74\u003c/a\u003e). Thanks, Marc Gibbons (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/pull/108\"\u003epull 108\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eDropped Django 3.x and 4.x.\u003c/p\u003e\n\u003cp\u003eSwitched to trusted publishing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/4eb4fc975e915400734104851116e423164a7c5c\"\u003e\u003ccode\u003e4eb4fc9\u003c/code\u003e\u003c/a\u003e build: fix publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/420435edd77b7af9e508446d60a852f61bcaed8c\"\u003e\u003ccode\u003e420435e\u003c/code\u003e\u003c/a\u003e build: v3.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/86a9d30fc44628981cd944ff58189f03fa082ca8\"\u003e\u003ccode\u003e86a9d30\u003c/code\u003e\u003c/a\u003e build: trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/9a5dfe53d9a81a8b54585c8b20b7e5ca06855afc\"\u003e\u003ccode\u003e9a5dfe5\u003c/code\u003e\u003c/a\u003e docs: update history\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/bfee7019ec245ef61a3c182c262e54e64a1cabe8\"\u003e\u003ccode\u003ebfee701\u003c/code\u003e\u003c/a\u003e fix: endblock falsely reported as uncovered when on its own indented line \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003e#74\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/59954f3fb97938849e8ec882d59a7cf438f12eff\"\u003e\u003ccode\u003e59954f3\u003c/code\u003e\u003c/a\u003e correct two old references to nedbat on github\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/7d145017c244f192c55a17035033667a190c0d6a\"\u003e\u003ccode\u003e7d14501\u003c/code\u003e\u003c/a\u003e docs: thanks, Marc Gibbons for \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/55cf337e2a4242c30766dc4784bd99ac5d180085\"\u003e\u003ccode\u003e55cf337\u003c/code\u003e\u003c/a\u003e docs: move authors into readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/639d48a188d04da28623a4751ae50e4da301fd9e\"\u003e\u003ccode\u003e639d48a\u003c/code\u003e\u003c/a\u003e Add Django 6, drop 3.2 and 4.2 which are EOL (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/53d114ac6082fb3fcd97c5cf0c4d634d395fe7f0\"\u003e\u003ccode\u003e53d114a\u003c/code\u003e\u003c/a\u003e chore: bump actions/setup-python in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/compare/v3.2.0...v3.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/5.2.9...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[resend]` to 15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[resend]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-0\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[resend]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-04-18\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eBreaking changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Require **Django 5.0 or later** and Python 3.10 or later.\n  (Thanks to `@terencehonles`_.)\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Resend:** Add support for inbound email. (Thanks to `@btimby`_.)\n\nFixes\n~~~~~\n\n* **Inbound:** Convert carriage return and line feed characters in attachment\n  filenames to spaces for ESPs that parse them from invalid headers (e.g.,\n  Postmark). (Thanks to `@BHSPitMonkey`_ for reporting the issue and providing\n  an example.)\n\n\nv14.0\n-----\n\n*2025-12-17*\n\nThis release improves handling of Unicode characters everywhere email messages\nallow them, based on extensive testing on all supported ESPs. See\n`International email \u0026amp;lt;https://anymail.dev/en/stable/tips/international_email/#idna\u0026amp;gt;`_\nin the docs for more information. There are several new workarounds for ESP\nbugs with non-ASCII characters, plus a handful of new errors to help you avoid\nUnicode bugs Anymail can't work around.\n\nThis release also includes support for Django 6.0 (earlier versions worked,\nbut provoked deprecation warnings) and adds the much-requested ESP Mailtrap.\n\nBreaking changes\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;p\u0026gt;(These changes don't affect the vast majority of Anymail users.)\u0026lt;/p\u0026gt;\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\n\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;International domain names:\u0026lt;/strong\u0026gt; When sending email to a non-ASCII domain name,\nuse IDNA 2008 with UTS-46 pre-processing rather than obsolete IDNA 2003\nencoding. This ensures email can be sent to newer domains enabled by IDNA 2008.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;This change should make no difference for virtually all real-world email\u0026lt;/p\u0026gt;\n\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;!-- raw HTML omitted --\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;p\u0026gt;... (truncated)\u0026lt;/p\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/17acea06b9361c3cc4ab6d9678bd5aea45db80ff\u0026quot;\u0026gt;\u0026lt;code\u0026gt;17acea0\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Release 15.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/8ad9d6e7e463efb770e3440871a05f2be4249ddf\u0026quot;\u0026gt;\u0026lt;code\u0026gt;8ad9d6e\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Inbound: sanitize CRNL in ESP-parsed attachment filenames\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/a6339d6c65bed21bcfe28e3c7b9b4ada4a290263\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a6339d6\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Upgrade actions versions\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/4626462d49512b0c423071a8a6fe43a9610ead8a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;4626462\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.x\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/2bcfd620d2f1fa6705a13ad8645aa25a4572fd08\u0026quot;\u0026gt;\u0026lt;code\u0026gt;2bcfd62\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Resend: Add inbound support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/13a08718571ca853f04336e15c525a98dd6dc48a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;13a0871\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Run pyupgrade\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/7bf7a1a42e7fe1dbc008d22dc6d03579e4523b34\u0026quot;\u0026gt;\u0026lt;code\u0026gt;7bf7a1a\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.0--4.2, Python 3.8--3.9 support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;See full diff in \u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/compare/v14.0...v15.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `gunicorn` from 25.1.0 to 26.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.0.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEventlet worker removed\u003c/strong\u003e: The \u003ccode\u003eeventlet\u003c/code\u003e worker class has been dropped. Migrate to \u003ccode\u003egevent\u003c/code\u003e, \u003ccode\u003egthread\u003c/code\u003e, or \u003ccode\u003etornado\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Compatibility Suite\u003c/strong\u003e: New end-to-end compatibility test harness covering Starlette, FastAPI, Litestar, Quart, Sanic, and BlackSheep. Current grid passes 438/444 tests (98%).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Test Suite Expansion\u003c/strong\u003e: 134 additional ASGI unit tests covering protocol semantics, lifespan, websockets, and chunked framing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 Request-Target Validation\u003c/strong\u003e (RFC 9112 sections 3.2.3, 3.2.4):\n\u003cul\u003e\n\u003cli\u003eReject \u003ccode\u003eauthority-form\u003c/code\u003e request-target outside \u003ccode\u003eCONNECT\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003easterisk-form\u003c/code\u003e request-target outside \u003ccode\u003eOPTIONS\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003erelative-reference\u003c/code\u003e request-targets\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHeader Field Hardening\u003c/strong\u003e (RFC 9110):\n\u003cul\u003e\n\u003cli\u003eReject control characters in header field-value (section 5.5)\u003c/li\u003e\n\u003cli\u003eReject forbidden trailer field-names (section 6.5.1)\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003eContent-Length\u003c/code\u003e list form (RFC 9112 section 6.3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRequest Smuggling Hardening\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eTighten keepalive gate and scope \u003ccode\u003efinish_body\u003c/code\u003e byte cap\u003c/li\u003e\n\u003cli\u003eKeep \u003ccode\u003e_body_receiver\u003c/code\u003e alive across the keepalive smuggling gate so pipelined requests cannot re-enter a closed body\u003c/li\u003e\n\u003cli\u003eAddress parser/protocol findings from a six-point WSGI/ASGI audit\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePROXY Protocol (ASGI)\u003c/strong\u003e: Enforce \u003ccode\u003eproxy_allow_ips\u003c/code\u003e and tighten v1/v2 parsing in the ASGI callback parser.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConnection Draining\u003c/strong\u003e: Drain the connection on close per RFC 9112 section 9.6 to prevent reset-on-close truncation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBody Framing on HEAD/204/304\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eKeep \u003ccode\u003eContent-Length\u003c/code\u003e on HEAD and 304 responses (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop body framing on HEAD/204/304 even when the framework set it\u003c/li\u003e\n\u003cli\u003eWarn once when an ASGI app emits a body for a no-body response\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 ASGI\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_handle_stream_ended\u003c/code\u003e to set \u003ccode\u003e_body_complete\u003c/code\u003e in the async HTTP/2 handler so request bodies finalize correctly on stream end\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eInvalidChunkExtension\u003c/code\u003e mapping and fast-parser support in ASGI tests (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 100-Continue\u003c/strong\u003e: Stop adding \u003ccode\u003eTransfer-Encoding: chunked\u003c/code\u003e to 100-Continue interim responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWebSocket Close Handshake\u003c/strong\u003e (RFC 6455):\n\u003cul\u003e\n\u003cli\u003eComply with the close handshake state machine\u003c/li\u003e\n\u003cli\u003eClose the transport after the close handshake completes\u003c/li\u003e\n\u003cli\u003eFix binary send when the \u003ccode\u003etext\u003c/code\u003e key is \u003ccode\u003eNone\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEarly Hints\u003c/strong\u003e: Validate headers in the \u003ccode\u003eearly_hints\u003c/code\u003e callback to match \u003ccode\u003eprocess_headers\u003c/code\u003e; pass only the header name to \u003ccode\u003eInvalidHeader\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3588\"\u003e#3588\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Fixes\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix ASGI disconnect handling for Django-style apps\u003c/li\u003e\n\u003cli\u003eFix Litestar request handling (use raw ASGI receive for body/headers)\u003c/li\u003e\n\u003cli\u003eFix Litestar HTTP endpoints for compatibility tests\u003c/li\u003e\n\u003cli\u003eFix Quart headers endpoint to normalize keys to lowercase\u003c/li\u003e\n\u003cli\u003eFix Quart WebSocket close test app (missing \u003ccode\u003eaccept()\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate \u003ccode\u003eTransfer-Encoding\u003c/code\u003e header for BlackSheep streaming\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5d819cf36040f6cc6175fcc804d703fb899509dd\"\u003e\u003ccode\u003e5d819cf\u003c/code\u003e\u003c/a\u003e release: 26.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/b45c70df105f7d5dcbc5abfb732804d6464edc21\"\u003e\u003ccode\u003eb45c70d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3611\"\u003e#3611\u003c/a\u003e from zc-mattcen/docs-typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/99c8d48acf453deb5c49fe12e195dbc00d888d1e\"\u003e\u003ccode\u003e99c8d48\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3623\"\u003e#3623\u003c/a\u003e from benoitc/chore/drop-eventlet-add-h2-uvloop-test-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5a655af50f20e005dd9e32e6078dc82fa45f3d4b\"\u003e\u003ccode\u003e5a655af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3622\"\u003e#3622\u003c/a\u003e from benoitc/test/docker-port-and-ipv4-fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/201df19a8011c0a1d6a0e75ebe22e89d48eb935e\"\u003e\u003ccode\u003e201df19\u003c/code\u003e\u003c/a\u003e chore: remove eventlet worker; add h2 and uvloop to test deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f4ac8e1f1bf1d365e77f41915da55bec31873f84\"\u003e\u003ccode\u003ef4ac8e1\u003c/code\u003e\u003c/a\u003e test: pass action name to dirty client and stabilize after TTOU spam\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/54d38afddf1f0db0c15b5f4ff63f3c7bfad96961\"\u003e\u003ccode\u003e54d38af\u003c/code\u003e\u003c/a\u003e test: unblock docker fixtures on macOS hosts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/68843c8893dd938456f0a2da62085ab5776f8871\"\u003e\u003ccode\u003e68843c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e from benoitc/fix/asgi-preserve-content-length-on-hea...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/31f2618f733cc0c78690df63f4e344aaf3f56b20\"\u003e\u003ccode\u003e31f2618\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3620\"\u003e#3620\u003c/a\u003e from benoitc/fix/asgi-proxy-protocol-trust-and-parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/41ec7527dbd8a9e52728477700707ad40e41d9dc\"\u003e\u003ccode\u003e41ec752\u003c/code\u003e\u003c/a\u003e fix: keep Content-Length on HEAD and 304 responses\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/25.1.0...26.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[binary]` to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[binary]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003ePsycopg 3.3.1\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix iteration on server-side cursors (:ticket:\u003ccode\u003e[#1226](https://github.com/psycopg/psycopg/issues/1226)\u003c/code\u003e).\u003c/p\u003e\n\u003ch2\u003ePsycopg 3.3.0\u003c/h2\u003e\n\u003cp\u003e.. rubric:: New top-level features\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :ref:\u003ccode\u003etemplate strings queries \\\u0026lt;template-strings\u0026gt;\u003c/code\u003e (:ticket:\u003ccode\u003e[#1054](https://github.com/psycopg/psycopg/issues/1054)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.2...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.4.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-attrs/attrs/releases\"\u003eattrs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main outward change here only affects people using field transformers, but it should be a nice quality of life improvement!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://kraken.tech\"\u003eKraken Tech\u003c/a\u003e (@\u003ca href=\"https://github.com/kraken-tech\"\u003ekraken-tech\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://ecosyste.ms\"\u003eEcosystems\u003c/a\u003e (@\u003ca href=\"https://github.com/ecosyste-ms\"\u003eecosyste-ms\u003c/a\u003e), \u003ca href=\"https://www.lambdatest.com\"\u003eTestMu AI Open Source Office (Formerly LambdaTest)\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://miketheman.dev\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mula...\n\n_Description has been truncated_","html_url":"https://github.com/j01101111sh/DungeonBuddy/pull/153","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/j01101111sh%2FDungeonBuddy/issues/153","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/153/packages"}},{"old_version":"3.10.2.20260408","new_version":"3.10.2.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-15T03:38:47.000Z","version_change":"3.10.2.20260408 → 3.10.2.20260508","issue":{"uuid":"4451031951","node_id":"PR_kwDOSEb-G87bxRkZ","number":27,"state":"closed","title":"Bump the dev group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T03:26:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T03:38:47.000Z","updated_at":"2026-05-22T03:26:49.000Z","time_to_close":604080,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev","update_count":43,"packages":[{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.13.0","new_version":"40.18.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.39.0","new_version":"1.39.4","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.10","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-aiofiles","old_version":"25.1.0.20260409","new_version":"25.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260408","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20260408","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20260408","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260408","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260408","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20260408","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20260408","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"26.4.0.20260409","new_version":"26.4.0.20260512","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.4.0.20260409","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20260408","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260408","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260408","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20260408","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20260408","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260408","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260408","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260408","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260408","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260408","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260408","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260408","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.4.4.20260408","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20260408","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20260408","new_version":"3.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260408","new_version":"2.18.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260408","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.88","new_version":"1.43.8","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.12","new_version":"6.152.7","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260408","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260408","new_version":"82.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.20.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.60.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 43 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.18.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.13` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20260409` | `25.1.0.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260408` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20260408` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20260408` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260408` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260408` | `0.22.3.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20260408` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20260408` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `26.4.0.20260409` | `26.4.0.20260512` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.4.0.20260409` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20260408` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260408` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260408` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20260408` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20260408` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260408` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260408` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260408` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260408` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260408` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260408` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260408` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.4.4.20260408` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20260408` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20260408` | `3.20.0.20260508` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260408` | `2.18.0.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260408` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.88` | `1.43.8` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.12` | `6.152.7` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260408` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260408` | `82.0.0.20260508` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.60.0` | `1.0.0` |\n\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.18.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.17.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/v40.18.0/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0\"\u003ev40.18.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0\"\u003ev40.17.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia. Thanks \u003ca href=\"https://github.com/jasur-py\"\u003e\u003ccode\u003e@​jasur-py\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0\"\u003ev40.16.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicate phone number prefix \u003ccode\u003e145\u003c/code\u003e in \u003ccode\u003ezh_CN\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/r266-tec\"\u003e\u003ccode\u003e@​r266-tec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7a79d1b815c72cdd570e47002a1d6d90b8282bef\"\u003e\u003ccode\u003e7a79d1b\u003c/code\u003e\u003c/a\u003e Bump version: 40.17.0 → 40.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/22334a6867869f87f174a168e0c1783241b23bb4\"\u003e\u003ccode\u003e22334a6\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/8a7fa46a337e01eba9ec1c1af51e740d60940f1d\"\u003e\u003ccode\u003e8a7fa46\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a70229ebf3abb0e2e44529e884bbe3d5aec9be8a\"\u003e\u003ccode\u003ea70229e\u003c/code\u003e\u003c/a\u003e Add automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2346\"\u003e#2346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/9dc592c21400f42a488e87850e30856a14ab4bd2\"\u003e\u003ccode\u003e9dc592c\u003c/code\u003e\u003c/a\u003e add \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2338\"\u003e#2338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7e8ec9c8c60679e404b5ca647a207168832c8ba4\"\u003e\u003ccode\u003e7e8ec9c\u003c/code\u003e\u003c/a\u003e Bump version: 40.16.0 → 40.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/48fbd622669263bcbd2b822568a830512948d365\"\u003e\u003ccode\u003e48fbd62\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/696ebf93a8310d621d6dd90426844de023d9ef50\"\u003e\u003ccode\u003e696ebf9\u003c/code\u003e\u003c/a\u003e :lipstick: Format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c339633949b44f5ab3c34d1b2046acddfae7e39\"\u003e\u003ccode\u003e0c33963\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2353\"\u003e#2353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bec4ec21e9a75056e1fcf250d5aebcf22a415ca1\"\u003e\u003ccode\u003ebec4ec2\u003c/code\u003e\u003c/a\u003e :pencil: fix changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.39.0 to 1.39.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b058a6450c9f2a720257f56a1f7ed8a4cdf33a15\"\u003e\u003ccode\u003eb058a64\u003c/code\u003e\u003c/a\u003e 1.39.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5e1f1fb60ff9f646a0d039e3070a0abb75e9db6a\"\u003e\u003ccode\u003e5e1f1fb\u003c/code\u003e\u003c/a\u003e Fix: treat  \u003ccode\u003emap\u003c/code\u003e \u0026amp; \u003ccode\u003efilter\u003c/code\u003e as not subscriptable at runtime and don't show g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f9730a824e91dd75c3871bc894ee0d73bec682a9\"\u003e\u003ccode\u003ef9730a8\u003c/code\u003e\u003c/a\u003e bump python dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a465682f20214a43fff4f3e82d02b74d322e6e3e\"\u003e\u003ccode\u003ea465682\u003c/code\u003e\u003c/a\u003e Update installation docs for PyCharm (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1643\"\u003e#1643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.10 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.10...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20260409 to 25.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260408 to 7.0.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20260408 to 0.4.15.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20260408 to 0.7.0.20260504\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260408 to 1.3.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260408 to 0.22.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20260408 to 6.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20260408 to 4.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 26.4.0.20260409 to 26.4.0.20260512\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.4.0.20260409 to 3.5.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20260408 to 1.1.11.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260408 to 3.10.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260408 to 3.3.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20260408 to 3.6.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20260408 to 0.47.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260408 to 3.1.5.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260408 to 4.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 7.34.1.20260408 to 7.34.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260408 to 7.2.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260408 to 2.9.21.20260509\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260408 to 2.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260408 to 2.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260408 to 311.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20260408 to 6.0.12.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.4.4.20260408 to 2026.5.9.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20260408 to 2.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20260408 to 3.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260408 to 2.18.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260408 to 4.67.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.88 to 1.43.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.12 to 6.152.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.7\u003c/h2\u003e\n\u003cp\u003eThis patch improves our type hints for \u0026quot;.filter()\u0026quot; to work with\n\u0026quot;typing.TypeGuard\u0026quot;. For example:\u003c/p\u003e\n\u003cp\u003efrom typing import TypeGuard\u003c/p\u003e\n\u003cp\u003efrom hypothesis import strategies as st\u003c/p\u003e\n\u003cp\u003edef is_str(x: object) -\u0026gt; TypeGuard[str]:\nreturn isinstance(x, str)\u003c/p\u003e\n\u003cp\u003es = st.from_type(object).filter(is_str)\u003c/p\u003e\n\u003ch1\u003epreviously: SearchStrategy[object]\u003c/h1\u003e\n\u003ch1\u003enow: SearchStrategy[str]\u003c/h1\u003e\n\u003cp\u003ereveal_type(s)\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-7\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.6\u003c/h2\u003e\n\u003cp\u003eThis patch adds a shrinking pass that tries natural text\ntransformations - unicode decomposition (NFD/NFKD) and case mapping -\non individual characters in string choices.  Failures involving e.g.\n\u0026quot;\u0026quot;À\u0026quot; != \u0026quot;À\u0026quot;.lower()\u0026quot; will now reliably shrink to \u0026quot;\u0026quot;A\u0026quot;\u0026quot; rather than\nsometimes getting stuck on the high-codepoint accented form (issue\n\u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4725\"\u003e#4725\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-6\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.5\u003c/h2\u003e\n\u003cp\u003eThis patch improves the \u0026quot;Phase.explain\u0026quot; phase so that simple cases\nlike \u0026quot;assert n1 == n2\u0026quot; no longer get a misleading \u0026quot;# or any other\ngenerated value\u0026quot; comment (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4715\"\u003e#4715\u003c/a\u003e). Before falling back to random\nsampling, we now also try borrowing values from each other arg slice\nwith matching shape.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-5\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/adc8d2d4d3dbdbc640d00e216782ef5dd3611640\"\u003e\u003ccode\u003eadc8d2d\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.7 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d66ce67fed6cf77dd8bc14fb88f2d97d027458c4\"\u003e\u003ccode\u003ed66ce67\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4672\"\u003e#4672\u003c/a\u003e from CharString/annotate-filter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/df889578276ee8624e95692ba8f0a57b0a04c487\"\u003e\u003ccode\u003edf88957\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4727\"\u003e#4727\u003c/a\u003e from hettlage/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/415443cd82dcd389d398a7f36ebf41ea6162a7d6\"\u003e\u003ccode\u003e415443c\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/bfd0ebfe74bcfc0447498259ec008c0fa13ee976\"\u003e\u003ccode\u003ebfd0ebf\u003c/code\u003e\u003c/a\u003e Revert RELEASE.rst to original version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/492f8185f80935a6cfc26e0c54bc9f5aed882c80\"\u003e\u003ccode\u003e492f818\u003c/code\u003e\u003c/a\u003e attempt to de-flake test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/55ab356dc1b96b59821db851ebce3bdf483c2eb6\"\u003e\u003ccode\u003e55ab356\u003c/code\u003e\u003c/a\u003e fix release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7fd8e506efc43ce9b0d19993fc2cf8eb759d273f\"\u003e\u003ccode\u003e7fd8e50\u003c/code\u003e\u003c/a\u003e simplify type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c8b952ed27af8aa7f5fcc90c136f4dfff649adc7\"\u003e\u003ccode\u003ec8b952e\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into annotate-filter-4672\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b2e8d8968eb3fd85391febfe96ea24703faf23a9\"\u003e\u003ccode\u003eb2e8d89\u003c/code\u003e\u003c/a\u003e add tests and release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.12...hypothesis-python-6.152.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260408 to 2.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260408 to 82.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.1 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.60.0 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/NH3CH2COOH/dify-for-adaption/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NH3CH2COOH%2Fdify-for-adaption/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"3.8.0.20250415","new_version":"3.10.2.20260408","update_type":"minor","path":null,"pr_created_at":"2026-05-13T13:17:23.000Z","version_change":"3.8.0.20250415 → 3.10.2.20260408","issue":{"uuid":"4438189791","node_id":"PR_kwDOAG7wis7bIZb4","number":4829,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-13T13:17:23.000Z","updated_at":"2026-05-13T13:30:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":16,"packages":[{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"1.16.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.12.1","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.29.0","repository_url":"https://github.com/pypa/hatch"},{"name":"types-requests","old_version":"2.32.4.20250611","new_version":"2.33.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.8.0.20250415","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"sphinx-book-theme","old_version":"1.1.4","new_version":"1.2.0","repository_url":"https://github.com/executablebooks/sphinx-book-theme"},{"name":"sphinx-autoapi","old_version":"3.6.0","new_version":"3.8.0","repository_url":"https://github.com/readthedocs/sphinx-autoapi"},{"name":"sphinxcontrib-mermaid","old_version":"2.0.1","new_version":"2.0.2","repository_url":"https://github.com/mgaitan/sphinxcontrib-mermaid"},{"name":"markdown","old_version":"3.8.2","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.8","repository_url":"https://github.com/ijl/orjson"},{"name":"typing-extensions","old_version":"4.14.0","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.1` | `1.20.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.1` | `0.15.12` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.29.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250611` | `2.33.0.20260503` |\n| [types-markdown](https://github.com/python/typeshed) | `3.8.0.20250415` | `3.10.2.20260408` |\n| [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme) | `1.1.4` | `1.2.0` |\n| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi) | `3.6.0` | `3.8.0` |\n| [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) | `2.0.1` | `2.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8.2` | `3.10.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.8` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.16.1 to 1.20.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003cli\u003eNeil Schemenauer\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.16.1...v1.20.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.1 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.1...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wheel` from 0.46.3 to 0.47.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/wheel/releases\"\u003ewheel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.47.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003ewheel info\u003c/code\u003e subcommand to display metadata about wheel files without unpacking them (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/639\"\u003e#639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eWheelFile\u003c/code\u003e raising \u003ccode\u003eMissing RECORD file\u003c/code\u003e when the wheel filename contains uppercase characters (e.g. \u003ccode\u003eDjango-3.2.5.whl\u003c/code\u003e) but the \u003ccode\u003e.dist-info\u003c/code\u003e directory inside uses normalized lowercase naming (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/411\"\u003e#411\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/wheel/blob/main/docs/news.rst\"\u003ewheel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e0.47.0 (2026-04-22)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003ewheel info\u003c/code\u003e subcommand to display metadata about wheel files without\nunpacking them (\u003ccode\u003e[#639](https://github.com/pypa/wheel/issues/639) \u0026lt;https://github.com/pypa/wheel/issues/639\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eWheelFile\u003c/code\u003e raising \u003ccode\u003eMissing RECORD file\u003c/code\u003e when the wheel filename contains\nuppercase characters (e.g. \u003ccode\u003eDjango-3.2.5.whl\u003c/code\u003e) but the \u003ccode\u003e.dist-info\u003c/code\u003e directory\ninside uses normalized lowercase naming\n(\u003ccode\u003e[#411](https://github.com/pypa/wheel/issues/411) \u0026lt;https://github.com/pypa/wheel/issues/411\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.3 (2026-01-22)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eImportError: cannot import name '_setuptools_logging' from 'wheel'\u003c/code\u003e when\ninstalled alongside an old version of setuptools and running the \u003ccode\u003ebdist_wheel\u003c/code\u003e\ncommand (\u003ccode\u003e[#676](https://github.com/pypa/wheel/issues/676) \u0026lt;https://github.com/pypa/wheel/issues/676\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.2 (2026-01-22)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestored the \u003ccode\u003ebdist_wheel\u003c/code\u003e command for compatibility with \u003ccode\u003esetuptools\u003c/code\u003e older than\nv70.1\u003c/li\u003e\n\u003cli\u003eImporting \u003ccode\u003ewheel.bdist_wheel\u003c/code\u003e now emits a \u003ccode\u003eFutureWarning\u003c/code\u003e instead of a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ewheel unpack\u003c/code\u003e potentially altering the permissions of files outside of the\ndestination tree with maliciously crafted wheels (CVE-2026-24049)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.1 (2025-04-08)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTemporarily restored the \u003ccode\u003ewheel.macosx_libfile\u003c/code\u003e module\n(\u003ccode\u003e[#659](https://github.com/pypa/wheel/issues/659) \u0026lt;https://github.com/pypa/wheel/issues/659\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.46.0 (2025-04-03)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8\u003c/li\u003e\n\u003cli\u003eRemoved the \u003ccode\u003ebdist_wheel\u003c/code\u003e setuptools command implementation and entry point.\nThe \u003ccode\u003ewheel.bdist_wheel\u003c/code\u003e module is now just an alias to\n\u003ccode\u003esetuptools.command.bdist_wheel\u003c/code\u003e, emitting a deprecation warning on import.\u003c/li\u003e\n\u003cli\u003eRemoved vendored \u003ccode\u003epackaging\u003c/code\u003e in favor of a run-time dependency on it\u003c/li\u003e\n\u003cli\u003eMade the \u003ccode\u003ewheel.metadata\u003c/code\u003e module private (with a deprecation warning if it's\nimported\u003c/li\u003e\n\u003cli\u003eMade the \u003ccode\u003ewheel.cli\u003c/code\u003e package private (no deprecation warning)\u003c/li\u003e\n\u003cli\u003eFixed an exception when calling the \u003ccode\u003econvert\u003c/code\u003e command with an empty description\nfield\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e0.45.1 (2024-11-23)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed pure Python wheels converted from eggs and wininst files having the ABI tag in\nthe file name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/efd83a750f07a33462ea2eed365fd8dac9e51442\"\u003e\u003ccode\u003eefd83a7\u003c/code\u003e\u003c/a\u003e Created a new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/bb69216d35588c2a0febc2d9a130727fe6e46ee3\"\u003e\u003ccode\u003ebb69216\u003c/code\u003e\u003c/a\u003e Reordered the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/d5a1763ce927618bfa7d82abe334d0d14a93cc37\"\u003e\u003ccode\u003ed5a1763\u003c/code\u003e\u003c/a\u003e fix(wheelfile): resolve .dist-info path case-insensitively when reading wheel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/5718957928ece25eb0d1c12023c71dea4fcb5cf9\"\u003e\u003ccode\u003e5718957\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/685\"\u003e#685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/625806845ae5756be3cc0f9d44832c29079c0954\"\u003e\u003ccode\u003e6258068\u003c/code\u003e\u003c/a\u003e chore: log_level is better than log_cli_level (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/684\"\u003e#684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/2975debc789682b3a448b134611acc6962a93eb3\"\u003e\u003ccode\u003e2975deb\u003c/code\u003e\u003c/a\u003e Require tox \u0026gt;= 4.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/47674ba770e5ee72d679b7eb32b558e0c177640d\"\u003e\u003ccode\u003e47674ba\u003c/code\u003e\u003c/a\u003e chore: add check-sdist to checks (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/681\"\u003e#681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/56223f6f8dfa8d3d40923f24dcf159204698d7b6\"\u003e\u003ccode\u003e56223f6\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e__package__\u003c/code\u003e → \u003ccode\u003e__spec__.parent\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/679\"\u003e#679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/0ce509e02dc3cd1b7b0bdf868482de062b3c21c3\"\u003e\u003ccode\u003e0ce509e\u003c/code\u003e\u003c/a\u003e Added the wheel info subcommand (\u003ca href=\"https://redirect.github.com/pypa/wheel/issues/669\"\u003e#669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/wheel/commit/39039c0f3446c1ed5ec52621e98bc2bad8178a06\"\u003e\u003ccode\u003e39039c0\u003c/code\u003e\u003c/a\u003e Improved the index page\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/wheel/compare/0.46.3...0.47.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hatchling` from 1.27.0 to 1.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/hatch/releases\"\u003ehatchling's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHatchling v1.29.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eFixed:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSource Date Epoch no longer fails when set to date before 1980.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHatchling v1.28.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eChanged:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAdded:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esbom-files\u003c/code\u003e option and \u003ccode\u003esbom_files\u003c/code\u003e build data to the \u003ccode\u003ewheel\u003c/code\u003e build target for including Software Bill of Materials files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/1a74daa6f554e2ec89f2641288e44ed39e5507cc\"\u003e\u003ccode\u003e1a74daa\u003c/code\u003e\u003c/a\u003e Noqa release command to unblock GHA for PRs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/78065f4c54ff16b72e92158f3547d61e420a93f7\"\u003e\u003ccode\u003e78065f4\u003c/code\u003e\u003c/a\u003e For Immutable Releases  (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2188\"\u003e#2188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/592c0a9c8cbd3e1b5d90cab57af5c17d7484037d\"\u003e\u003ccode\u003e592c0a9\u003c/code\u003e\u003c/a\u003e release Hatchling v1.29.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2186\"\u003e#2186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/874059b82d06320d2e15ef909fbdc186a88bcdcc\"\u003e\u003ccode\u003e874059b\u003c/code\u003e\u003c/a\u003e Prerelease doc updates. (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/0e31bb64ec76afe9736500cafb6984ddc9c4de6d\"\u003e\u003ccode\u003e0e31bb6\u003c/code\u003e\u003c/a\u003e Immutable releases ci (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2182\"\u003e#2182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/f400be159bbd7c016ba5dc591a43753b193eadab\"\u003e\u003ccode\u003ef400be1\u003c/code\u003e\u003c/a\u003e Support a SOURCE_DATE_EPOCH prior to 1980 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/47b55ce0a9907302583db845c14bf5457432c80f\"\u003e\u003ccode\u003e47b55ce\u003c/code\u003e\u003c/a\u003e Fixing failing tests for changes in Rich markdown rendering (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2172\"\u003e#2172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/cc4acd668663b60e28f396c540c7acabe09f90be\"\u003e\u003ccode\u003ecc4acd6\u003c/code\u003e\u003c/a\u003e Add a note guiding users to include SBOM files in the source distribution (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/9068758886e57751ff71a59520dcf576c7deea0b\"\u003e\u003ccode\u003e9068758\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2164\"\u003e#2164\u003c/a\u003e keep_env type error for hatch shell (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/bc31cfccc15283a49f62024d3607c7bfad01abe0\"\u003e\u003ccode\u003ebc31cfc\u003c/code\u003e\u003c/a\u003e Fix warning and tests with packaging 26.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/hatch/compare/hatchling-v1.27.0...hatchling-v1.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.32.4.20250611 to 2.33.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250415 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-book-theme` from 1.1.4 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/releases\"\u003esphinx-book-theme's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/blob/main/CHANGELOG.md\"\u003esphinx-book-theme's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.2 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.1...3da24da74f6042599fe6c9e2d612f5cbdef42280\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/818\"\u003e#818\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: correct event-handler signature \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/817\"\u003e#817\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2024-02-13\u0026amp;to=2024-02-13\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2024-02-13..2024-02-13\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.0...9335ab99b0bc77b826cb2c5afcef3432f14e8780\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version for 1.1.1 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/815\"\u003e#815\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: use \u003ccode\u003econfig-inited\u003c/code\u003e event to register config \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/814\"\u003e#814\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther merged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild(deps): Bump actions/setup-python from 4 to 5 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/803\"\u003e#803\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/801\"\u003e#801\u003c/a\u003e (\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/30f968ff990ef25ab5f38ff0dd26a10add814512\"\u003e\u003ccode\u003e30f968f\u003c/code\u003e\u003c/a\u003e Release v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/b78d24f6105cc91c41f18b3bf8f2e2a54c6c1f95\"\u003e\u003ccode\u003eb78d24f\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/0415925b138a66229afb10c475663ea76d8dd480\"\u003e\u003ccode\u003e0415925\u003c/code\u003e\u003c/a\u003e MAINT: ignore bots in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/5797d88ca3e42188c9eaf163c4680a6af67a1f13\"\u003e\u003ccode\u003e5797d88\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/927\"\u003e#927\u003c/a\u003e from bsipocz/MAINT_sphinx_dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/f23d0946c74520fa3a9f358f33f612bc19668d79\"\u003e\u003ccode\u003ef23d094\u003c/code\u003e\u003c/a\u003e CI: Adding workaround for autodoc typehint parsing issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8747e975f96c001a299b2a773fe2c8accac76ffe\"\u003e\u003ccode\u003e8747e97\u003c/code\u003e\u003c/a\u003e MAINT: dropping sphinx\u0026lt;7 and python\u0026lt;3.11 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/ffac4dee8755ff8cfd6ae1130a7e70e94ad0fa99\"\u003e\u003ccode\u003effac4de\u003c/code\u003e\u003c/a\u003e MAINT: using python 3.12 for RTD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/cb587276c919c90787b87d56292c3e53ac607d8a\"\u003e\u003ccode\u003ecb58727\u003c/code\u003e\u003c/a\u003e MAINT: min pin for ablog due to sphinx9 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8cc45e4ef5e0d474869355e4240bd4d65b24dff0\"\u003e\u003ccode\u003e8cc45e4\u003c/code\u003e\u003c/a\u003e CI: ignore linkchecking URLs where anchors throw 403\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/d521920234ab145a573b2398777e4c022df36340\"\u003e\u003ccode\u003ed521920\u003c/code\u003e\u003c/a\u003e MAINT: adding sphinx9 and python 3.14 to testing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-autoapi` from 3.6.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/releases\"\u003esphinx-autoapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding autoapi_follow_symlinks, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PythonFunction.overloads typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1\u003c/h2\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid. Fix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst\"\u003esphinx-autoapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0 (2026-03-07)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0 (2026-02-10)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding \u003ccode\u003eautoapi_follow_symlinks\u003c/code\u003e, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePythonFunction.overloads\u003c/code\u003e typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1 (2025-10-06)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid.\nFix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/75cbffdea08771a0c574814053359b28dc7dfe85\"\u003e\u003ccode\u003e75cbffd\u003c/code\u003e\u003c/a\u003e Version 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/7838cf6937000a84ca8cb13a7d76e03b0084a7f3\"\u003e\u003ccode\u003e7838cf6\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/f1cdd302336455bee67a6dbc9ea2742fad17a756\"\u003e\u003ccode\u003ef1cdd30\u003c/code\u003e\u003c/a\u003e Attempt to fix macos-latest build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/34bb24ccc9de3be61c63a9c8b38458d06ea11eb3\"\u003e\u003ccode\u003e34bb24c\u003c/code\u003e\u003c/a\u003e Autodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/ccb2e898cb8b3becf04eba76f5449e29d336215e\"\u003e\u003ccode\u003eccb2e89\u003c/code\u003e\u003c/a\u003e astroid requirement is consistent across all versions of Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/0917ed2d4a42fa4ddd3668247d10ca6d902d7ada\"\u003e\u003ccode\u003e0917ed2\u003c/code\u003e\u003c/a\u003e Version 3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/394beb453256c9c15a30cb5851682fed2a844fc4\"\u003e\u003ccode\u003e394beb4\u003c/code\u003e\u003c/a\u003e Add warning for missing import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/96cd74d1a015a05bf4409a73b173dcdf8421902a\"\u003e\u003ccode\u003e96cd74d\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/c248b85d66c233a4673c64944bdeeb394be5116a\"\u003e\u003ccode\u003ec248b85\u003c/code\u003e\u003c/a\u003e Render typing_extensions.TypeAlias like other type aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/a2f49c9689ba76d5518c33fb509c57b5141342df\"\u003e\u003ccode\u003ea2f49c9\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/compare/v3.6.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinxcontrib-mermaid` from 2.0.1 to 2.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/blob/master/CHANGELOG.md\"\u003esphinxcontrib-mermaid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emermaid_dark_theme\u003c/code\u003e and \u003ccode\u003emermaid_light_theme\u003c/code\u003e config options for configurable theme switching\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/19be46820247ed7b9ac333d4bde2e1e3445ca431\"\u003e\u003ccode\u003e19be468\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/240\"\u003e#240\u003c/a\u003e from timkpaine/tkp/hatch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/e1f9eccc13395df8e7beba0b942389bf0e95b4ac\"\u003e\u003ccode\u003ee1f9ecc\u003c/code\u003e\u003c/a\u003e Switch to hatchling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/42aa20a010f0d4b2b86352ae1a10c6d3cd1f6cb7\"\u003e\u003ccode\u003e42aa20a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/239\"\u003e#239\u003c/a\u003e from timkpaine/tkp/202\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/2db5b555ff3fde025be5bbab2729457760f49210\"\u003e\u003ccode\u003e2db5b55\u003c/code\u003e\u003c/a\u003e bump to 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/25c7ef7b8ff75001ad0e475ffb2d60a21eb13b42\"\u003e\u003ccode\u003e25c7ef7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/237\"\u003e#237\u003c/a\u003e from kartben/local_paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/e98c6f8b8869b9f47a9ce206bf33bed0c1b60065\"\u003e\u003ccode\u003ee98c6f8\u003c/code\u003e\u003c/a\u003e increase test coverage for _use_local options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/1422b452a55017407e9688c912b93b25ee95bcec\"\u003e\u003ccode\u003e1422b45\u003c/code\u003e\u003c/a\u003e Resolve local Mermaid/ELK/ZenUML/D3 JS paths under html_static_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/d6d874c4fbded7b7b7d86c26f0d39c7e70a55a1e\"\u003e\u003ccode\u003ed6d874c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mgaitan/sphinxcontrib-mermaid/issues/236\"\u003e#236\u003c/a\u003e from jensens/configurable-theme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/bce597640b897ff4ab03cc6d77a2eb1a7d26f0d5\"\u003e\u003ccode\u003ebce5976\u003c/code\u003e\u003c/a\u003e Document mermaid_dark_theme and mermaid_light_theme config options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/commit/12bb2ac696a1e0ea9ec5b183bab0bc50216c7970\"\u003e\u003ccode\u003e12bb2ac\u003c/code\u003e\u003c/a\u003e Add mermaid_dark_theme and mermaid_light_theme config options\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mgaitan/sphinxcontrib-mermaid/compare/2.0.1...2.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.8.2 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.8.2...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.10.18 to 3.11.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.5\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.4\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 1.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for 3.14 and manylinux i686, manylinux arm7,\nmanylinux ppc64le, manylinux s390x.\u003c/li\u003e\n\u003cli\u003eBuild now requires a C compiler.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix PyPI project metadata when using maturin 1.9.2 or later.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix build using Rust 1.89 on amd64.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8 - 2026-03-31\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6 - 2026-01-29\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.5 - 2025-12-06\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.4 - 2025-10-24\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 1.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for 3.14 and manylinux i686, manylinux arm7,\nmanylinux ppc64le, manylinux s390x.\u003c/li\u003e\n\u003cli\u003eBuild now requires a C compiler.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.3 - 2025-08-26\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/5cbb3d0398a2f42de51210270286fecd798c5d78\"\u003e\u003ccode\u003e5cbb3d0\u003c/code\u003e\u003c/a\u003e 3.11.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4195d7f263e33076295b75efdcbaf6a55af8674e\"\u003e\u003ccode\u003e4195d7f\u003c/code\u003e\u003c/a\u003e writer::half\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d00641b69410728a735f0855eb1c2843b0a5819b\"\u003e\u003ccode\u003ed00641b\u003c/code\u003e\u003c/a\u003e writer::uuid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/c84d9b4ba4853781af943fa5c493e261e2f82b84\"\u003e\u003ccode\u003ec84d9b4\u003c/code\u003e\u003c/a\u003e build and compatibility misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4547234b681fac5e0e0734cf44c21e75f9654e43\"\u003e\u003ccode\u003e4547234\u003c/code\u003e\u003c/a\u003e ffi::numpy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/0d4a5ad1f17a72528ba027554466fdec6580cdeb\"\u003e\u003ccode\u003e0d4a5ad\u003c/code\u003e\u003c/a\u003e datetime PyRef idiom\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/e93a13d372ec956d027e71d023eb534b8445ac85\"\u003e\u003ccode\u003ee93a13d\u003c/code\u003e\u003c/a\u003e Cross-compile avoids maturin v1.12 build-details.json error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec2b066cae79ae4a90ed126ac5723335dd99e408\"\u003e\u003ccode\u003eec2b066\u003c/code\u003e\u003c/a\u003e 3.11.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1ca01f78cf4198ec37407d83713afa6e5c53dbf9\"\u003e\u003ccode\u003e1ca01f7\u003c/code\u003e\u003c/a\u003e zmij\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1716a226bd1f38db01503f30cd37b0efec48d88e\"\u003e\u003ccode\u003e1716a22\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.10.18...3.11.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.14.0 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.git...\n\n_Description has been truncated_","html_url":"https://github.com/ankitects/anki/pull/4829","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitects%2Fanki/issues/4829","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4829/packages"}},{"old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","update_type":null,"path":null,"pr_created_at":"2026-05-01T09:55:37.000Z","version_change":"3.10.2.20260211 → 3.10.2.20260408","issue":{"uuid":"4363847893","node_id":"PR_kwDOKE20Lc7XZBnM","number":659,"state":"closed","title":"chore(deps): bump the python-dependencies group with 40 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-10T00:05:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-01T09:55:37.000Z","updated_at":"2026-05-10T00:05:32.000Z","time_to_close":742193,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":40,"packages":[{"name":"bleach","old_version":"6.1.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"boto3","old_version":"1.34.76","new_version":"1.43.1","repository_url":"https://github.com/boto/boto3"},{"name":"django-storages","old_version":"1.14.2","new_version":"1.14.6","repository_url":"https://github.com/jschneier/django-storages"},{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"redis","old_version":"5.3.1","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"setuptools","old_version":"78.1.1","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"stripe","old_version":"10.12.0","new_version":"15.1.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"django-stubs-ext","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"typos","old_version":"1.44.0","new_version":"1.46.0","repository_url":"https://github.com/crate-ci/typos"},{"name":"pre-commit","old_version":"3.8.0","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pulumi-aws","old_version":"6.83.2","new_version":"7.28.0","repository_url":"https://github.com/pulumi/pulumi-aws"},{"name":"types-python-dateutil","old_version":"2.9.0.20260305","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-cffi","old_version":"1.17.0.20260307","new_version":"2.0.0.20260429","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"5.29.1.20250403","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260422","repository_url":"https://github.com/python/typeshed"},{"name":"types-pycurl","old_version":"7.45.7.20251101","new_version":"7.45.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"gunicorn","old_version":"23.0.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"social-auth-app-django","old_version":"5.6.0","new_version":"5.9.0","repository_url":"https://github.com/python-social-auth/social-app-django"},{"name":"django-environ","old_version":"0.11.2","new_version":"0.13.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"django-extensions","old_version":"3.2.3","new_version":"4.1","repository_url":"https://github.com/django-extensions/django-extensions"},{"name":"python-dateutil","old_version":"2.9.0","new_version":"2.9.0.post0","repository_url":"https://github.com/dateutil/dateutil"},{"name":"django-htmx","old_version":"1.17.3","new_version":"1.27.0","repository_url":"https://github.com/adamchainz/django-htmx"},{"name":"django-components","old_version":"0.37","new_version":"0.149.0","repository_url":"https://github.com/django-components/django-components"},{"name":"django-markdownify","old_version":"0.9.3","new_version":"0.9.6","repository_url":"https://github.com/erwinmatijsen/django-markdownify"},{"name":"model-bakery","old_version":"1.17.0","new_version":"1.23.4","repository_url":"https://github.com/model-bakers/model_bakery"},{"name":"mkdocs-material","old_version":"9.7.4","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mysqlclient","old_version":"2.2.0","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"mariadb","old_version":"1.1.8","new_version":"1.1.14","repository_url":"https://github.com/mariadb-corporation/mariadb-connector-python"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"black","old_version":"24.10.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"bump-my-version","old_version":"0.19.3","new_version":"1.3.0","repository_url":"https://github.com/callowayproject/bump-my-version"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 40 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bleach](https://github.com/mozilla/bleach) | `6.1.0` | `6.3.0` |\n| [boto3](https://github.com/boto/boto3) | `1.34.76` | `1.43.1` |\n| [django-storages](https://github.com/jschneier/django-storages) | `1.14.2` | `1.14.6` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [redis](https://github.com/redis/redis-py) | `5.3.1` | `7.4.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `78.1.1` | `82.0.1` |\n| [stripe](https://github.com/stripe/stripe-python) | `10.12.0` | `15.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [django-stubs-ext](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [typos](https://github.com/crate-ci/typos) | `1.44.0` | `1.46.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `3.8.0` | `4.6.0` |\n| [pulumi-aws](https://github.com/pulumi/pulumi-aws) | `6.83.2` | `7.28.0` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260305` | `2.9.0.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-cffi](https://github.com/python/typeshed) | `1.17.0.20260307` | `2.0.0.20260429` |\n| [types-protobuf](https://github.com/python/typeshed) | `5.29.1.20250403` | `7.34.1.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260422` |\n| [types-pycurl](https://github.com/python/typeshed) | `7.45.7.20251101` | `7.45.7.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `23.0.0` | `25.3.0` |\n| [social-auth-app-django](https://github.com/python-social-auth/social-app-django) | `5.6.0` | `5.9.0` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.11.2` | `0.13.0` |\n| [django-extensions](https://github.com/django-extensions/django-extensions) | `3.2.3` | `4.1` |\n| [python-dateutil](https://github.com/dateutil/dateutil) | `2.9.0` | `2.9.0.post0` |\n| [django-htmx](https://github.com/adamchainz/django-htmx) | `1.17.3` | `1.27.0` |\n| [django-components](https://github.com/django-components/django-components) | `0.37` | `0.149.0` |\n| [django-markdownify](https://github.com/erwinmatijsen/django-markdownify) | `0.9.3` | `0.9.6` |\n| [model-bakery](https://github.com/model-bakers/model_bakery) | `1.17.0` | `1.23.4` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.4` | `9.7.6` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.0` | `2.2.8` |\n| [mariadb](https://github.com/mariadb-corporation/mariadb-connector-python) | `1.1.8` | `1.1.14` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [black](https://github.com/psf/black) | `24.10.0` | `26.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [bump-my-version](https://github.com/callowayproject/bump-my-version) | `0.19.3` | `1.3.0` |\n\nUpdates `bleach` from 6.1.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.2.0 (October 29th, 2024)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove six depdenncy. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/618\"\u003e#618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known-good versions for tinycss2. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix additional \u0026lt; followed by characters and EOF issues. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.1.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.34.76 to 1.43.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/753bcab42942e4e0f6e3deb5e4eb5af40d0ffb8b\"\u003e\u003ccode\u003e753bcab\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dd5b3a659894c0c8c92c4c696625fe7735fddcb1\"\u003e\u003ccode\u003edd5b3a6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/014f4adb1a991f5575fca9688568a388e9f0d339\"\u003e\u003ccode\u003e014f4ad\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/32edf1c268b58c8e16e144271252ce90ebfdc1ef\"\u003e\u003ccode\u003e32edf1c\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.4 to 2.33.1 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4781\"\u003e#4781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/959ae842a0048833cab303e1cf88dfc523f604b1\"\u003e\u003ccode\u003e959ae84\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/146ede25caacdfdc8bff79cc8f5028292dfe41f6\"\u003e\u003ccode\u003e146ede2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/048bf84492d9d55b327a67f4ab07476eb62c2ee1\"\u003e\u003ccode\u003e048bf84\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/20381d5695aa766f041b42dcda9600e14f32bd15\"\u003e\u003ccode\u003e20381d5\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee6aa9711b74b165eac0b26bb724c7326791dc24\"\u003e\u003ccode\u003eee6aa97\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 support (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4770\"\u003e#4770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1780d6b791333f1279e03a04a2efc476af2af5d9\"\u003e\u003ccode\u003e1780d6b\u003c/code\u003e\u003c/a\u003e Remove CC-BY-NC-SA-4.0 license headers from docs files (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4778\"\u003e#4778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.34.76...1.43.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-storages` from 1.14.2 to 1.14.6\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jschneier/django-storages/blob/master/CHANGELOG.rst\"\u003edjango-storages's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.14.6 (2025-04-01)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eGoogle Cloud\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to sign URLs via IAM Blob API (\u003ccode\u003e[#1427](https://github.com/jschneier/django-storages/issues/1427)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eS3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eexists\u003c/code\u003e calls when using SSE-C (\u003ccode\u003e[#1451](https://github.com/jschneier/django-storages/issues/1451)\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eDefault \u003ccode\u003eurl_protocol\u003c/code\u003e to \u003ccode\u003ehttps:\u003c/code\u003e if set to \u003ccode\u003eNone\u003c/code\u003e (\u003ccode\u003e[#1483](https://github.com/jschneier/django-storages/issues/1483)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1427\"\u003e#1427\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/jschneier/django-storages/pull/1427\"\u003ejschneier/django-storages#1427\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1451\"\u003e#1451\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/jschneier/django-storages/pull/1451\"\u003ejschneier/django-storages#1451\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1483\"\u003e#1483\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/jschneier/django-storages/pull/1483\"\u003ejschneier/django-storages#1483\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e1.14.5 (2025-02-15)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eGeneral\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u003ccode\u003eexists()\u003c/code\u003e behavior to pre-1.14.4 semantics with additional hardening for Django versions \u0026lt; 4.2 to fix\nCVE-2024-39330. This change matches the eventual behavior Django itself shipped with. (\u003ccode\u003e[#1484](https://github.com/jschneier/django-storages/issues/1484)\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#1486](https://github.com/jschneier/django-storages/issues/1486)\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Django 5.1 (\u003ccode\u003e[#1444](https://github.com/jschneier/django-storages/issues/1444)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAzure\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDeprecated\u003c/strong\u003e: The setting \u003ccode\u003eAZURE_API_VERSION/api_version\u003c/code\u003e setting is deprecated in favor of\nthe new \u003ccode\u003eAZURE_CLIENT_OPTIONS\u003c/code\u003e setting. A future version will remove support for this setting.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eAZURE_CLIENT_OPTIONS\u003c/code\u003e settings to enable customization of all \u003ccode\u003eBlobServiceClient\u003c/code\u003e parameters\nsuch as \u003ccode\u003eapi_version\u003c/code\u003e and all \u003ccode\u003eretry*\u003c/code\u003e options. (\u003ccode\u003e[#1432](https://github.com/jschneier/django-storages/issues/1432)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDropbox\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAs part of the above hardening fix a bug was uncovered whereby a \u003ccode\u003eroot_path\u003c/code\u003e setting would be applied\nmultiple times during \u003ccode\u003esave()\u003c/code\u003e (\u003ccode\u003e[#1484](https://github.com/jschneier/django-storages/issues/1484)\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix setting OAuth2 access token via env var (\u003ccode\u003e[#1452](https://github.com/jschneier/django-storages/issues/1452)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFTP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003eexists()\u003c/code\u003e results due to an errant appended slash (\u003ccode\u003e[#1438](https://github.com/jschneier/django-storages/issues/1438)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGoogle Cloud\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/3658c3d2353b778a45b09dd7a55cbabc66d22381\"\u003e\u003ccode\u003e3658c3d\u003c/code\u003e\u003c/a\u003e Bump version for release (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1497\"\u003e#1497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/d51b0bf2e1421b56b5bc53a37aef685b27d5752d\"\u003e\u003ccode\u003ed51b0bf\u003c/code\u003e\u003c/a\u003e Release version 1.14.6 (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1496\"\u003e#1496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/6ef553dd8f898c756503902cbecd8d3c88ffda00\"\u003e\u003ccode\u003e6ef553d\u003c/code\u003e\u003c/a\u003e [s3] Default \u003ccode\u003eurl_protocol\u003c/code\u003e to \u003ccode\u003ehttps:\u003c/code\u003e if set to None (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1483\"\u003e#1483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/80031d313ea1872ea455fbbeacfd7cfc68900a77\"\u003e\u003ccode\u003e80031d3\u003c/code\u003e\u003c/a\u003e [docs/azure] Fix broken link (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1492\"\u003e#1492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/8363be34ad6b5c6607644c3dd166d6f6610c5db6\"\u003e\u003ccode\u003e8363be3\u003c/code\u003e\u003c/a\u003e [s3] Pass object parameters to head_object in \u003ccode\u003eexists\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/aa8a82e92837899b509386a2f52491ec01f26b47\"\u003e\u003ccode\u003eaa8a82e\u003c/code\u003e\u003c/a\u003e [docs/gcloud] Clean-up querystring auth language (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1489\"\u003e#1489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/758ad6f15dc97d1b754569f0c83121c8b92a1578\"\u003e\u003ccode\u003e758ad6f\u003c/code\u003e\u003c/a\u003e [gcloud] Add option to sign URLs via IAM Blob API (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1427\"\u003e#1427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/03566dc6fafe6415d2f90419a65e68b6b234c4d1\"\u003e\u003ccode\u003e03566dc\u003c/code\u003e\u003c/a\u003e Add missing CHANGELOG entry for Dropbox fix (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1488\"\u003e#1488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/3c0fe9f15a1f687afcd532d78a3e2cd37f87d8aa\"\u003e\u003ccode\u003e3c0fe9f\u003c/code\u003e\u003c/a\u003e Release version 1.14.5 (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1487\"\u003e#1487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jschneier/django-storages/commit/5db357a12d0089323d5d8b413a0a5305926cffb1\"\u003e\u003ccode\u003e5db357a\u003c/code\u003e\u003c/a\u003e Apply additional validation in overwrite path (\u003ca href=\"https://redirect.github.com/jschneier/django-storages/issues/1486\"\u003e#1486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jschneier/django-storages/compare/1.14.2...1.14.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.1.1 to 12.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.2.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.2.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.2.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9522\"\u003e#9522\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd loader plugins: AMOS abk, Atari Degas, 40+ more obscure formats via Netpbm \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9482\"\u003e#9482\u003c/a\u003e [\u003ca href=\"https://github.com/bitplane\"\u003e\u003ccode\u003e@​bitplane\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9515\"\u003e#9515\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eJeffrey A. Clark -\u0026gt; Jeffrey 'Alex' Clark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9513\"\u003e#9513\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9394\"\u003e#9394\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9419\"\u003e#9419\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9456\"\u003e#9456\u003c/a\u003e \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9467\"\u003e#9467\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd Amiga Workbench .info loader to 3rd party plugins list \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9459\"\u003e#9459\u003c/a\u003e [\u003ca href=\"https://github.com/bitplane\"\u003e\u003ccode\u003e@​bitplane\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMerge PFM documentation into PPM \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9434\"\u003e#9434\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9431\"\u003e#9431\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix CVE number \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9430\"\u003e#9430\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate xz to 5.8.3 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9523\"\u003e#9523\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libjpeg-turbo to 3.1.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9507\"\u003e#9507\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libpng to 1.6.56 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9499\"\u003e#9499\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate freetype to 2.14.3 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9485\"\u003e#9485\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated libavif to 1.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9479\"\u003e#9479\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated harfbuzz to 13.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9461\"\u003e#9461\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Ghostscript to 10.7.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9469\"\u003e#9469\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate harfbuzz to 13.0.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9453\"\u003e#9453\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libavif to 1.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9460\"\u003e#9460\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate freetype to 2.14.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9449\"\u003e#9449\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate actions/download-artifact action to v8 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9451\"\u003e#9451\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated libpng to 1.6.55 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9425\"\u003e#9425\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanup .spider extension in the same test where it is added \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9517\"\u003e#9517\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRun tests in parallel via tox for 3.5x speedup \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9516\"\u003e#9516\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eEnable colour in CI logs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9486\"\u003e#9486\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Ghostscript to 10.7.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9469\"\u003e#9469\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSimplify TGA test code \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9477\"\u003e#9477\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate tests to check for ValueError when encoding an empty image \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9464\"\u003e#9464\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpgrade CI from \u003ccode\u003emacos-15-intel\u003c/code\u003e to \u003ccode\u003emacos-26-intel\u003c/code\u003e \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9454\"\u003e#9454\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd check-case-conflict hook \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9446\"\u003e#9446\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSpecify platform when pulling docker image \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9440\"\u003e#9440\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eGHA: Cache libavif and webp builds for Ubuntu \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9437\"\u003e#9437\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9431\"\u003e#9431\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCheck calloc return value \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9527\"\u003e#9527\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eCheck all allocs in the Arrow tree \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9488\"\u003e#9488\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eReject non-numeric elements inside list coords \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9526\"\u003e#9526\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove variable declaration inside define \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9525\"\u003e#9525\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/3c41c095064200a02672d89cc5ff629eaf4b0d4f\"\u003e\u003ccode\u003e3c41c09\u003c/code\u003e\u003c/a\u003e 12.2.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cdaa29eb520291c4f1fb50fb71ae46502d41e460\"\u003e\u003ccode\u003ecdaa29e\u003c/code\u003e\u003c/a\u003e Check calloc return value (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9527\"\u003e#9527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/585b2f5a780722c8a5bfffb3a40f7f42e8a205be\"\u003e\u003ccode\u003e585b2f5\u003c/code\u003e\u003c/a\u003e Check calloc return value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/ecf011ea15991d4cebacd946e58270cc30b0f2c1\"\u003e\u003ccode\u003eecf011e\u003c/code\u003e\u003c/a\u003e Check all allocs in the Arrow tree (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9488\"\u003e#9488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cf6de8ca9b23e714aa5310e1c791eda66fc0b670\"\u003e\u003ccode\u003ecf6de8c\u003c/code\u003e\u003c/a\u003e Reject non-numeric elements inside list coords (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9526\"\u003e#9526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/ffdcede6516b28d9667c92929854023d17048b64\"\u003e\u003ccode\u003effdcede\u003c/code\u003e\u003c/a\u003e Update 12.2.0 release notes (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9522\"\u003e#9522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/7929d7760fe5a307ba5ae6eabdf70ae4486b147c\"\u003e\u003ccode\u003e7929d77\u003c/code\u003e\u003c/a\u003e Added security release notes (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/c4f7aa5dfb4dbd1242978ac235e01b9934ec6d3c\"\u003e\u003ccode\u003ec4f7aa5\u003c/code\u003e\u003c/a\u003e Added security release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/22cdb5f2e4b15250c06563b1124ac1667342712f\"\u003e\u003ccode\u003e22cdb5f\u003c/code\u003e\u003c/a\u003e Move variable declaration inside define (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9525\"\u003e#9525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/fc15b3b01899408ec989d7804c5283e13802d057\"\u003e\u003ccode\u003efc15b3b\u003c/code\u003e\u003c/a\u003e Resize tall images vertically first (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9524\"\u003e#9524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 5.2.12 to 5.2.13\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/7d831a9eeb88a6bf484af7b56fe29596bdbf09a6\"\u003e\u003ccode\u003e7d831a9\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.13 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49e1e2b548999a35a025f9682598946bda9e9921\"\u003e\u003ccode\u003e49e1e2b\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-33034 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE on body ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/0b467893bdde69a2d23034338e76021a1e4f4322\"\u003e\u003ccode\u003e0b46789\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-33033 -- Mitigated potential DoS in MultiPartParser.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/397c22048244db2cd4bb78f570e6c72a3967bf36\"\u003e\u003ccode\u003e397c220\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-4292 -- Disallowed instance creation via ModelAdmin.li...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/60ffa957c427e10a2eb0fc80d1674a8a8ccc30b0\"\u003e\u003ccode\u003e60ffa95\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-4277 -- Checked add permissions in GenericInlineModelA...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1cc2a7612f97c109b92415fc11ba9bd0501852e0\"\u003e\u003ccode\u003e1cc2a76\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-3902 -- Ignored headers with underscores in ASGIRequest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2a8a76a002774e3f6bc10188594593e0104ceb66\"\u003e\u003ccode\u003e2a8a76a\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.13 and 4.2.30.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/90924f5276de80a74ffbc51126ed81595dd2157a\"\u003e\u003ccode\u003e90924f5\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped black to 26.3.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/0ee44c674cf61efbca2056c40f3e4f2335aaeee6\"\u003e\u003ccode\u003e0ee44c6\u003c/code\u003e\u003c/a\u003e [5.2.x] Applied Black's 2026 stable style.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/89b4d944f7e331e267aa1030e295f29355b78172\"\u003e\u003ccode\u003e89b4d94\u003c/code\u003e\u003c/a\u003e [5.2.x] Combined scripts confirm_release.sh and test_new_version.sh into veri...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/5.2.12...5.2.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 5.3.1 to 7.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix AttributeError in cluster metrics recording when connection is None or ClusterNode object instance is used to extract the connection info (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords might leak in plain text logs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cp\u003e-Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpose basic Otel classes and functions to be importable through redis.observability to match the examples in the readthedocs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b72f24ad6a2226d46aed770e18094a86117d2217\"\u003e\u003ccode\u003eb72f24a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0a4e0afe36504c3fb6df1e38683ea946febac9d3\"\u003e\u003ccode\u003e0a4e0af\u003c/code\u003e\u003c/a\u003e Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/15492c9156d3ab8dce05360977480510cf24fbf9\"\u003e\u003ccode\u003e15492c9\u003c/code\u003e\u003c/a\u003e Refactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cd964ac96649df872a051835e9a52e05a5090607\"\u003e\u003ccode\u003ecd964ac\u003c/code\u003e\u003c/a\u003e Expose basic Otel classes and funtions to be importable through redis.observa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ab74d02ed9b15176f67edb817de83524f8145a\"\u003e\u003ccode\u003e46ab74d\u003c/code\u003e\u003c/a\u003e Fixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/26482dbaae38abdb1966d9b1c803331e2dab2053\"\u003e\u003ccode\u003e26482db\u003c/code\u003e\u003c/a\u003e Fix AttributeError in cluster metrics recording when connection is None or Cl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v5.3.1...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9928\"\u003eencode/django-rest-framework#9928\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9849\"\u003eencode/django-rest-framework#9849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `setuptools` from 78.1.1 to 82.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.1\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the loading of \u003ccode\u003elauncher manifest.xml\u003c/code\u003e file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5047\"\u003e#5047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003ejson.__version__\u003c/code\u003e with fixture in tests. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5186\"\u003e#5186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd advice about how to improve predictability when installing sdists. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5168\"\u003e#5168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4941\"\u003e#4941\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5\"\u003e\u003ccode\u003e5a13876\u003c/code\u003e\u003c/a\u003e Bump version: 82.0.0 → 82.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8\"\u003e\u003ccode\u003e51ab8f1\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5194\"\u003e#5194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6\"\u003e\u003ccode\u003ef9c37b2\u003c/code\u003e\u003c/a\u003e Docs/CI: Fix intersphinx references (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5195\"\u003e#5195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8\"\u003e\u003ccode\u003e8173db2\u003c/code\u003e\u003c/a\u003e Docs: Fix intersphinx references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141\"\u003e\u003ccode\u003e09bafbc\u003c/code\u003e\u003c/a\u003e Fix past tense on newsfragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde\"\u003e\u003ccode\u003e461ea56\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae\"\u003e\u003ccode\u003ec4ffe53\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe\"\u003e\u003ccode\u003e749258b\u003c/code\u003e\u003c/a\u003e Cleanup \u003ccode\u003epkg_resources\u003c/code\u003e dependencies and configuration (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206\"\u003e\u003ccode\u003e2019c16\u003c/code\u003e\u003c/a\u003e Parse \u003ccode\u003eext-module.define-macros\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e as list of tuples (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685\"\u003e\u003ccode\u003eb809c86\u003c/code\u003e\u003c/a\u003e Sync setuptools schema with validate-pyproject (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v78.1.1...v82.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `stripe` from 10.12.0 to 15.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/releases\"\u003estripe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1.0\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-04-22.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1793\"\u003e#1793\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebalance_report\u003c/code\u003e and \u003ccode\u003epayout_reconciliation_report\u003c/code\u003e on \u003ccode\u003eAccountSession.Component\u003c/code\u003e and \u003ccode\u003eAccountSessionCreateParamsComponent\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eapp_distribution\u003c/code\u003e and \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eAccount.Capability\u003c/code\u003e, \u003ccode\u003eAccountCreateParamsCapability\u003c/code\u003e, and \u003ccode\u003eAccountModifyParamsCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003efee_credit_funding\u003c/code\u003e, \u003ccode\u003einbound_transfer_reversal\u003c/code\u003e, and \u003ccode\u003einbound_transfer\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview\u003c/code\u003e, \u003ccode\u003eConfirmationTokenCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationModifyParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfiguration\u003c/code\u003e, \u003ccode\u003ePaymentMethodCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethod\u003c/code\u003e, \u003ccode\u003ePaymentRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, and \u003ccode\u003eSetupIntentModifyParamsPaymentMethodDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003ephantom_cash\u003c/code\u003e and \u003ccode\u003eusdt\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elocation\u003c/code\u003e and \u003ccode\u003ereader\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Klarna\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Klarna\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Klarna\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Pix\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emanaged_payments\u003c/code\u003e on \u003ccode\u003eCheckout.Session\u003c/code\u003e, \u003ccode\u003ePaymentIntent\u003c/code\u003e, \u003ccode\u003ePaymentLinkCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentLink\u003c/code\u003e, \u003ccode\u003eSetupIntent\u003c/code\u003e, \u003ccode\u003eSubscription\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentIntentConfirmParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams.excluded_payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate_options\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange type of \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e from \u003ccode\u003eliteral('none')\u003c/code\u003e to \u003ccode\u003eenum('none'|'off_session')\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enum \u003ccode\u003echeckout.SessionCreateParams.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003efo_vat\u003c/code\u003e, \u003ccode\u003egi_tin\u003c/code\u003e, \u003ccode\u003eit_cf\u003c/code\u003e, and \u003ccode\u003epy_ruc\u003c/code\u003e on enums \u003ccode\u003eCheckout.Session.CustomerDetail.TaxId.type\u003c/code\u003e, \u003ccode\u003eInvoice.CustomerTaxId.type\u003c/code\u003e, \u003ccode\u003eTax.Calculation.CustomerDetail.TaxId.type\u003c/code\u003e, \u003ccode\u003eTax.Transaction.CustomerDetail.TaxId.type\u003c/code\u003e, and \u003ccode\u003eTaxId.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change type of \u003ccode\u003eCheckout.Session.PaymentMethodOption.Pix.setup_future_usage\u003c/code\u003e and \u003ccode\u003ePaymentIntent.PaymentMethodOption.Pix.setup_future_usage\u003c/code\u003e from \u003ccode\u003eliteral('none')\u003c/code\u003e to \u003ccode\u003eenum('none'|'off_session')\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003eConfirmationTokenCreateParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodDatum.type\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodDatum.type\u003c/code\u003e, and \u003ccode\u003eSetupIntentModifyParamsPaymentMethodDatum.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003eConfirmationToken.PaymentMethodPreview.type\u003c/code\u003e and \u003ccode\u003ePaymentMethod.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new values \u003ccode\u003efo_vat\u003c/code\u003e, \u003ccode\u003egi_tin\u003c/code\u003e, \u003ccode\u003eit_cf\u003c/code\u003e, and \u003ccode\u003epy_ruc\u003c/code\u003e on enums \u003ccode\u003eCustomerCreateParamsTaxIdDatum.type\u003c/code\u003e, \u003ccode\u003eCustomerCreateTaxIdParams.type\u003c/code\u003e, \u003ccode\u003eInvoiceCreatePreviewParamsCustomerDetailTaxId.type\u003c/code\u003e, \u003ccode\u003eTaxIdCreateParams.type\u003c/code\u003e, and \u003ccode\u003etax.CalculationCreateParamsCustomerDetailTaxId.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003eCustomerListPaymentMethodsParams.type\u003c/code\u003e, \u003ccode\u003ePaymentMethodCreateParams.type\u003c/code\u003e, and \u003ccode\u003ePaymentMethodListParams.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epix\u003c/code\u003e on \u003ccode\u003eInvoice.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eMandate.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupAttempt.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupIntent.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSetupIntentModifyParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscription.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eupi\u003c/code\u003e on \u003ccode\u003eInvoice.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscription.PaymentSetting.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSettingPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSettingPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new values \u003ccode\u003epix\u003c/code\u003e and \u003ccode\u003eupi\u003c/code\u003e on enums \u003ccode\u003eInvoiceCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003epix\u003c/code\u003e and \u003ccode\u003eupi\u003c/code\u003e on enums \u003ccode\u003eInvoice.PaymentSetting.payment_method_types\u003c/code\u003e and \u003ccode\u003eSubscription.PaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecard_presence\u003c/code\u003e on \u003ccode\u003eIssuing.Authorization\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eallowed_card_presences\u003c/code\u003e and \u003ccode\u003eblocked_card_presences\u003c/code\u003e on \u003ccode\u003eIssuing.Card.SpendingControl\u003c/code\u003e, \u003ccode\u003eIssuing.Cardholder.SpendingControl\u003c/code\u003e, \u003ccode\u003eissuing.CardCreateParamsSpendingControl\u003c/code\u003e, \u003ccode\u003eissuing.CardModifyParamsSpendingControl\u003c/code\u003e, \u003ccode\u003eissuing.CardholderCreateParamsSpendingControl\u003c/code\u003e, and \u003ccode\u003eissuing.CardholderModifyParamsSpendingControl\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003efulfillment_error\u003c/code\u003e on enum \u003ccode\u003eIssuing.Card.cancellation_reason\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003efulfillment_error\u003c/code\u003e on enum \u003ccode\u003eIssuing.Card.replacement_reason\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eamount\u003c/code\u003e and \u003ccode\u003ecurrency\u003c/code\u003e on \u003ccode\u003eMandate.MultiUse\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eamount_to_confirm\u003c/code\u003e on \u003ccode\u003ePaymentIntentConfirmParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentIntent.excluded_payment_method_types\u003c/code\u003e and \u003ccode\u003eSetupIntent.excluded_payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eklarna_display_qr_code\u003c/code\u003e on \u003ccode\u003ePaymentIntent.NextAction\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentLinkCreateParams.payment_method_types\u003c/code\u003e and \u003ccode\u003ePaymentLinkModifyParams.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit\u003c/code\u003e on enum \u003ccode\u003ePaymentLink.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003elow\u003c/code\u003e, \u003ccode\u003enot_assessed\u003c/code\u003e, and \u003ccode\u003eunknown\u003c/code\u003e on enum \u003ccode\u003eRadar.PaymentEvaluation.Signal.FraudulentPayment.risk_level\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003eaccount\u003c/code\u003e on enum \u003ccode\u003eradar.ValueListCreateParams.item_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003eaccount\u003c/code\u003e on enum \u003ccode\u003eRadar.ValueList.item_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emoto\u003c/code\u003e on \u003ccode\u003eSetupAttempt.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epix_display_qr_code\u003c/code\u003e on \u003ccode\u003eSetupIntent.NextAction\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003e2026-04-22.dahlia\u003c/code\u003e on enum \u003ccode\u003eWebhookEndpointCreateParams.api_version\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for error codes \u003ccode\u003eaction_blocked\u003c/code\u003e and \u003ccode\u003eapproval_required\u003c/code\u003e on \u003ccode\u003eInvoice.LastFinalizationError\u003c/code\u003e, \u003ccode\u003ePaymentIntent.LastPaymentError\u003c/code\u003e, \u003ccode\u003eSetupAttempt.SetupError\u003c/code\u003e, \u003ccode\u003eSetupIntent.LastSetupError\u003c/code\u003e, and \u003ccode\u003eStripeError\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.1.0/CHANGELOG.md\"\u003ethe changelog for more details\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev15.1.0b2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePlease refer to the changelog for \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.0.1/CHANGELOG.md#1501---2026-04-01\"\u003ev15.0.1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.1.0b2/CHANGELOG.md\"\u003ethe changelog for more details\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/blob/master/CHANGELOG.md\"\u003estripe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e15.1.0 - 2026-04-23\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-04-22.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1793\"\u003e#1793\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebalance_report\u003c/code\u003e and \u003ccode\u003epayout_reconciliation_report\u003c/code\u003e on \u003ccode\u003eAccountSession.Component\u003c/code\u003e and \u003ccode\u003eAccountSessionCreateParamsComponent\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eapp_distribution\u003c/code\u003e and \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eAccount.Capability\u003c/code\u003e, \u003ccode\u003eAccountCreateParamsCapability\u003c/code\u003e, and \u003ccode\u003eAccountModifyParamsCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003efee_credit_funding\u003c/code\u003e, \u003ccode\u003einbound_transfer_reversal\u003c/code\u003e, and \u003ccode\u003einbound_transfer\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview\u003c/code\u003e, \u003ccode\u003eConfirmationTokenCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfigurationModifyParams\u003c/code\u003e, \u003ccode\u003ePaymentMethodConfiguration\u003c/code\u003e, \u003ccode\u003ePaymentMethodCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentMethod\u003c/code\u003e, \u003ccode\u003ePaymentRecord.PaymentMethodDetail\u003c/code\u003e, \u003ccode\u003eSetupIntentConfirmParamsPaymentMethodDatum\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParamsPaymentMethodDatum\u003c/code\u003e, and \u003ccode\u003eSetupIntentModifyParamsPaymentMethodDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new values \u003ccode\u003ephantom_cash\u003c/code\u003e and \u003ccode\u003eusdt\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elocation\u003c/code\u003e and \u003ccode\u003ereader\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Klarna\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Klarna\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Klarna\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Pix\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emanaged_payments\u003c/code\u003e on \u003ccode\u003eCheckout.Session\u003c/code\u003e, \u003ccode\u003ePaymentIntent\u003c/code\u003e, \u003ccode\u003ePaymentLinkCreateParams\u003c/code\u003e, \u003ccode\u003ePaymentLink\u003c/code\u003e, \u003ccode\u003eSetupIntent\u003c/code\u003e, \u003ccode\u003eSubscription\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunbit\u003c/code\u003e on enums \u003ccode\u003ePaymentIntentConfirmParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentCreateParams.excluded_payment_method_types\u003c/code\u003e, \u003ccode\u003eSetupIntentModifyParams.excluded_payment_method_types\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParams.excluded_payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emandate_options\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption.Pix\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange type of \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOptionPix.setup_future_usage\u003c/code\u003e from \u003ccode\u003eliteral('none')\u003c/code\u003e to \u003ccode\u003eenum('none'|'off_session')\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esunb...\n\n_Description has been truncated_","html_url":"https://github.com/TreyWW/MyFinances/pull/659","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TreyWW%2FMyFinances/issues/659","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/659/packages"}},{"old_version":"3.8.0.20250415","new_version":"3.10.2.20260408","update_type":"minor","path":null,"pr_created_at":"2026-04-27T14:02:20.000Z","version_change":"3.8.0.20250415 → 3.10.2.20260408","issue":{"uuid":"4336319422","node_id":"PR_kwDOAG7wis7V_UjU","number":4756,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-27T14:02:20.000Z","updated_at":"2026-04-27T14:03:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":8,"packages":[{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"1.16.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.12.1","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.29.0","repository_url":"https://github.com/pypa/hatch"},{"name":"types-requests","old_version":"2.32.4.20250611","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.8.0.20250415","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"sphinx-book-theme","old_version":"1.1.4","new_version":"1.2.0","repository_url":"https://github.com/executablebooks/sphinx-book-theme"},{"name":"sphinx-autoapi","old_version":"3.6.0","new_version":"3.8.0","repository_url":"https://github.com/readthedocs/sphinx-autoapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [mypy](https://github.com/python/mypy) | `1.16.1` | `1.20.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.1` | `0.15.11` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.29.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250611` | `2.33.0.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.8.0.20250415` | `3.10.2.20260408` |\n| [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme) | `1.1.4` | `1.2.0` |\n| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi) | `3.6.0` | `3.8.0` |\n\n\nUpdates `pre-commit` from 4.3.0 to 4.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.1 - 2025-12-16\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8a0630ca1aa7f6d5665effe674ebe2022af17919\"\u003e\u003ccode\u003e8a0630c\u003c/code\u003e\u003c/a\u003e v4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fcbc745744377ef2c9fe6a7e1a21c67d797933dc\"\u003e\u003ccode\u003efcbc745\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e from pre-commit/empty-setup-py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/51592eececd13b99c40ec477ad8f810799147227\"\u003e\u003ccode\u003e51592ee\u003c/code\u003e\u003c/a\u003e fix python local template when artifact dirs are present\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/67e8faf80baffcb4b79c31b89ca9a413a1cd6776\"\u003e\u003ccode\u003e67e8faf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3596\"\u003e#3596\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c251e6b6d011b3b262339dc8e109de29b0ff8db1\"\u003e\u003ccode\u003ec251e6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/98ccafa3ce42b846b9a9be9ed73fbbec7415496d\"\u003e\u003ccode\u003e98ccafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3593\"\u003e#3593\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/48953556d06f8cdb4248002c1a0044e69e0916b3\"\u003e\u003ccode\u003e4895355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2cedd58e691f4d3bc6ab266c7d7c28464c3502be\"\u003e\u003ccode\u003e2cedd58\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3588\"\u003e#3588\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/465192d7de58d569776eaaa818c94cb2b962d436\"\u003e\u003ccode\u003e465192d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fd42f96874279c4f65363bfea5238714419e54d7\"\u003e\u003ccode\u003efd42f96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3586\"\u003e#3586\u003c/a\u003e from pre-commit/zipapp-sha256-file-not-needed\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.3.0...v4.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.16.1 to 1.20.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.20.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways disable sync in SQLite cache (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21184\"\u003e21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTemporarily skip few base64 tests (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21193\"\u003e21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u003ccode\u003edict.__or__\u003c/code\u003e typeshed change (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21186\"\u003e21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing for match case with variadic tuples (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21192\"\u003e21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing \u003ccode\u003etype[T]\u003c/code\u003e in type calls (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21174\"\u003e21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression for catching empty tuple in except (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21153\"\u003e21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix reachability for frozenset and dict view narrowing (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21151\"\u003e21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing with chained comparison (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21150\"\u003e21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing to unreachable at module level (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21144\"\u003e21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow dangerous identity comparisons to \u003ccode\u003eAny\u003c/code\u003e typed variables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21142\"\u003e21142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--warn-unused-config\u003c/code\u003e should not be a strict flag (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21139\"\u003e21139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMypy 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c60e8bfcb5910974b577e443725c475e0485d269\"\u003e\u003ccode\u003ec60e8bf\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/842e4927738264949e969df0c2ee285a13594d06\"\u003e\u003ccode\u003e842e492\u003c/code\u003e\u003c/a\u003e Always disable sync in SQLite cache (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21184\"\u003e#21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e82a046356b242441fcd55c8cf922c7904ef311a\"\u003e\u003ccode\u003ee82a046\u003c/code\u003e\u003c/a\u003e Temporarily skip few base64 tests (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21193\"\u003e#21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f7fa418b6504e20c1277947e03a6db2f6d03e13e\"\u003e\u003ccode\u003ef7fa418\u003c/code\u003e\u003c/a\u003e Revert dict.\u003cstrong\u003eor\u003c/strong\u003e typeshed change (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a2e8ee1afd5bbda26ad301496685295b1a7997a3\"\u003e\u003ccode\u003ea2e8ee1\u003c/code\u003e\u003c/a\u003e Fix narrowing for match case with variadic tuples (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21192\"\u003e#21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/521f88f510c2065132909928815f08502097ceea\"\u003e\u003ccode\u003e521f88f\u003c/code\u003e\u003c/a\u003e Avoid narrowing type[T] in type calls (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21174\"\u003e#21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4876e9186b927fe4777609fc9932752dcfb7047\"\u003e\u003ccode\u003ea4876e9\u003c/code\u003e\u003c/a\u003e Fix regression for catching empty tuple in except (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21153\"\u003e#21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6fccffcac0c8c24034d4f2b262ca7e5564ba9375\"\u003e\u003ccode\u003e6fccffc\u003c/code\u003e\u003c/a\u003e Fix reachability for frozenset and dict view narrowing (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21151\"\u003e#21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/de50419dc84a66f0e8606308023f81a44dee54f3\"\u003e\u003ccode\u003ede50419\u003c/code\u003e\u003c/a\u003e Fix narrowing with chained comparison (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21150\"\u003e#21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/eafcf18ff1d83923c0f749cf3056962df63ed693\"\u003e\u003ccode\u003eeafcf18\u003c/code\u003e\u003c/a\u003e Avoid narrowing to unreachable at module level (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21144\"\u003e#21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.16.1...v1.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.1 to 0.15.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.11\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.11\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/53554b1cfe837f2eb992a81794480699478f1116\"\u003e\u003ccode\u003e53554b1\u003c/code\u003e\u003c/a\u003e Bump 0.15.11 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24678\"\u003e#24678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/08c56c83cffbb1025cbf5bdede6c6d8be591cf47\"\u003e\u003ccode\u003e08c56c8\u003c/code\u003e\u003c/a\u003e Factor out the \u003ccode\u003emdtest\u003c/code\u003e crate (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24616\"\u003e#24616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/725fbb736d2a999971449b61190b914abd26102a\"\u003e\u003ccode\u003e725fbb7\u003c/code\u003e\u003c/a\u003e [ty] Use partially qualified names when reporting diagnostics regarding bad c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ddd6a30ff5fa27694dc1c50d0749885a1519d0a7\"\u003e\u003ccode\u003eddd6a30\u003c/code\u003e\u003c/a\u003e [ty] Do not suggest argument completion when at value of keyword argument (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9282e61d482a36da08d66bb8271afeef50b3bc45\"\u003e\u003ccode\u003e9282e61\u003c/code\u003e\u003c/a\u003e Disallow \u003ca href=\"https://github.com/disjoint\"\u003e\u003ccode\u003e@​disjoint\u003c/code\u003e\u003c/a\u003e_base on TypedDicts and Protocols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9986d8e3008eefe2e387312c4dc8b9c60f6f362\"\u003e\u003ccode\u003ee9986d8\u003c/code\u003e\u003c/a\u003e [ty] Reject using properties with \u003ccode\u003eNever\u003c/code\u003e setters or deleters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24510\"\u003e#24510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9cf212ff82f7b66b4a275ad6a9b1564aee1fa4a8\"\u003e\u003ccode\u003e9cf212f\u003c/code\u003e\u003c/a\u003e [ty] Normalize property setter and deleter wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24509\"\u003e#24509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/12a1589de4d7120cf99441ee4c14871bdc20968d\"\u003e\u003ccode\u003e12a1589\u003c/code\u003e\u003c/a\u003e Add override mention to ASYNC109 docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dccb03d010f4442ed60624f8d2ba932706abaabb\"\u003e\u003ccode\u003edccb03d\u003c/code\u003e\u003c/a\u003e [ty] Avoid panicking on overloaded \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24661\"\u003e#24661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/61f9a0a5763fb068cd2f26c0ee9d63a277fb26c2\"\u003e\u003ccode\u003e61f9a0a\u003c/code\u003e\u003c/a\u003e [ty] Sync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24646\"\u003e#24646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.1...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hatchling` from 1.27.0 to 1.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/hatch/releases\"\u003ehatchling's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHatchling v1.29.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eFixed:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSource Date Epoch no longer fails when set to date before 1980.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHatchling v1.28.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eChanged:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAdded:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esbom-files\u003c/code\u003e option and \u003ccode\u003esbom_files\u003c/code\u003e build data to the \u003ccode\u003ewheel\u003c/code\u003e build target for including Software Bill of Materials files.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/1a74daa6f554e2ec89f2641288e44ed39e5507cc\"\u003e\u003ccode\u003e1a74daa\u003c/code\u003e\u003c/a\u003e Noqa release command to unblock GHA for PRs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/78065f4c54ff16b72e92158f3547d61e420a93f7\"\u003e\u003ccode\u003e78065f4\u003c/code\u003e\u003c/a\u003e For Immutable Releases  (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2188\"\u003e#2188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/592c0a9c8cbd3e1b5d90cab57af5c17d7484037d\"\u003e\u003ccode\u003e592c0a9\u003c/code\u003e\u003c/a\u003e release Hatchling v1.29.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2186\"\u003e#2186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/874059b82d06320d2e15ef909fbdc186a88bcdcc\"\u003e\u003ccode\u003e874059b\u003c/code\u003e\u003c/a\u003e Prerelease doc updates. (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/0e31bb64ec76afe9736500cafb6984ddc9c4de6d\"\u003e\u003ccode\u003e0e31bb6\u003c/code\u003e\u003c/a\u003e Immutable releases ci (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2182\"\u003e#2182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/f400be159bbd7c016ba5dc591a43753b193eadab\"\u003e\u003ccode\u003ef400be1\u003c/code\u003e\u003c/a\u003e Support a SOURCE_DATE_EPOCH prior to 1980 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/47b55ce0a9907302583db845c14bf5457432c80f\"\u003e\u003ccode\u003e47b55ce\u003c/code\u003e\u003c/a\u003e Fixing failing tests for changes in Rich markdown rendering (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2172\"\u003e#2172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/cc4acd668663b60e28f396c540c7acabe09f90be\"\u003e\u003ccode\u003ecc4acd6\u003c/code\u003e\u003c/a\u003e Add a note guiding users to include SBOM files in the source distribution (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/9068758886e57751ff71a59520dcf576c7deea0b\"\u003e\u003ccode\u003e9068758\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2164\"\u003e#2164\u003c/a\u003e keep_env type error for hatch shell (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/hatch/commit/bc31cfccc15283a49f62024d3607c7bfad01abe0\"\u003e\u003ccode\u003ebc31cfc\u003c/code\u003e\u003c/a\u003e Fix warning and tests with packaging 26.0 (\u003ca href=\"https://redirect.github.com/pypa/hatch/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/hatch/compare/hatchling-v1.27.0...hatchling-v1.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.32.4.20250611 to 2.33.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250415 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-book-theme` from 1.1.4 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/releases\"\u003esphinx-book-theme's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/blob/main/CHANGELOG.md\"\u003esphinx-book-theme's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 -- 2026-03-09\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJupyterlite button - patched, merged version of \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/655\"\u003e#655\u003c/a\u003e by \u003ca href=\"https://github.com/matthew-brett\"\u003e\u003ccode\u003e@​matthew-brett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/914\"\u003eexecutablebooks/sphinx-book-theme#914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Show source text on GitLab projects by \u003ca href=\"https://github.com/tymcauley\"\u003e\u003ccode\u003e@​tymcauley\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/916\"\u003eexecutablebooks/sphinx-book-theme#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in docs by \u003ca href=\"https://github.com/user27182\"\u003e\u003ccode\u003e@​user27182\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/913\"\u003eexecutablebooks/sphinx-book-theme#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprepare for latest pydata and python releases by \u003ca href=\"https://github.com/choldgraf\"\u003e\u003ccode\u003e@​choldgraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/920\"\u003eexecutablebooks/sphinx-book-theme#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore PendingDeprecationWarning about parser_name deprecation with Docutils 0.22 by \u003ca href=\"https://github.com/mitya57\"\u003e\u003ccode\u003e@​mitya57\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/919\"\u003eexecutablebooks/sphinx-book-theme#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding cronjob by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/926\"\u003eexecutablebooks/sphinx-book-theme#926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Fix margin directive documentation by \u003ca href=\"https://github.com/melissawm\"\u003e\u003ccode\u003e@​melissawm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/930\"\u003eexecutablebooks/sphinx-book-theme#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: adding sphinx9 and python3.14 support and bumping minimum sphinx to 7 and python to 3.11 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/927\"\u003eexecutablebooks/sphinx-book-theme#927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e:\n\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\"\u003ehttps://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.2 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.1...3da24da74f6042599fe6c9e2d612f5cbdef42280\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/818\"\u003e#818\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: correct event-handler signature \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/817\"\u003e#817\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2024-02-13\u0026amp;to=2024-02-13\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2024-02-13..2024-02-13\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1 -- 2024-02-13\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.0...9335ab99b0bc77b826cb2c5afcef3432f14e8780\"\u003efull changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eENH: bump version for 1.1.1 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/815\"\u003e#815\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFIX: use \u003ccode\u003econfig-inited\u003c/code\u003e event to register config \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/814\"\u003e#814\u003c/a\u003e (\u003ca href=\"https://github.com/agoose77\"\u003e\u003ccode\u003e@​agoose77\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther merged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild(deps): Bump actions/setup-python from 4 to 5 \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/803\"\u003e#803\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/pull/801\"\u003e#801\u003c/a\u003e (\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/30f968ff990ef25ab5f38ff0dd26a10add814512\"\u003e\u003ccode\u003e30f968f\u003c/code\u003e\u003c/a\u003e Release v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/b78d24f6105cc91c41f18b3bf8f2e2a54c6c1f95\"\u003e\u003ccode\u003eb78d24f\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/0415925b138a66229afb10c475663ea76d8dd480\"\u003e\u003ccode\u003e0415925\u003c/code\u003e\u003c/a\u003e MAINT: ignore bots in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/5797d88ca3e42188c9eaf163c4680a6af67a1f13\"\u003e\u003ccode\u003e5797d88\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/executablebooks/sphinx-book-theme/issues/927\"\u003e#927\u003c/a\u003e from bsipocz/MAINT_sphinx_dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/f23d0946c74520fa3a9f358f33f612bc19668d79\"\u003e\u003ccode\u003ef23d094\u003c/code\u003e\u003c/a\u003e CI: Adding workaround for autodoc typehint parsing issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8747e975f96c001a299b2a773fe2c8accac76ffe\"\u003e\u003ccode\u003e8747e97\u003c/code\u003e\u003c/a\u003e MAINT: dropping sphinx\u0026lt;7 and python\u0026lt;3.11 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/ffac4dee8755ff8cfd6ae1130a7e70e94ad0fa99\"\u003e\u003ccode\u003effac4de\u003c/code\u003e\u003c/a\u003e MAINT: using python 3.12 for RTD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/cb587276c919c90787b87d56292c3e53ac607d8a\"\u003e\u003ccode\u003ecb58727\u003c/code\u003e\u003c/a\u003e MAINT: min pin for ablog due to sphinx9 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/8cc45e4ef5e0d474869355e4240bd4d65b24dff0\"\u003e\u003ccode\u003e8cc45e4\u003c/code\u003e\u003c/a\u003e CI: ignore linkchecking URLs where anchors throw 403\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/commit/d521920234ab145a573b2398777e4c022df36340\"\u003e\u003ccode\u003ed521920\u003c/code\u003e\u003c/a\u003e MAINT: adding sphinx9 and python 3.14 to testing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.4...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-autoapi` from 3.6.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/releases\"\u003esphinx-autoapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch1\u003eFeatures\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding autoapi_follow_symlinks, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PythonFunction.overloads typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1\u003c/h2\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid. Fix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst\"\u003esphinx-autoapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.0 (2026-03-07)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/553\"\u003e#553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0 (2026-02-10)\u003c/h2\u003e\n\u003cp\u003eFeatures\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded autoapi.import warning for when AutoAPI directives are given non-existent objects\u003c/li\u003e\n\u003cli\u003eAdding \u003ccode\u003eautoapi_follow_symlinks\u003c/code\u003e, which allows api to traverse into symlinked directories when generating the API documentation.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 and officially support Python 3.14\u003c/li\u003e\n\u003cli\u003eSupport rendering PEP-695 type parameters\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRender typing_extensions.TypeAlias like other type aliases (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePythonFunction.overloads\u003c/code\u003e typing when source code overload(s) do not provide a return type (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eHandling case where match returns None to fix mypy unit test.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.1 (2025-10-06)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the supported versions of astroid.\nFix the breaking change to Import and pass in the AstroidManager to the AstroidBuilder (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/75cbffdea08771a0c574814053359b28dc7dfe85\"\u003e\u003ccode\u003e75cbffd\u003c/code\u003e\u003c/a\u003e Version 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/7838cf6937000a84ca8cb13a7d76e03b0084a7f3\"\u003e\u003ccode\u003e7838cf6\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/f1cdd302336455bee67a6dbc9ea2742fad17a756\"\u003e\u003ccode\u003ef1cdd30\u003c/code\u003e\u003c/a\u003e Attempt to fix macos-latest build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/34bb24ccc9de3be61c63a9c8b38458d06ea11eb3\"\u003e\u003ccode\u003e34bb24c\u003c/code\u003e\u003c/a\u003e Autodoc-style directives can access members excluded by autoapi_options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/ccb2e898cb8b3becf04eba76f5449e29d336215e\"\u003e\u003ccode\u003eccb2e89\u003c/code\u003e\u003c/a\u003e astroid requirement is consistent across all versions of Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/0917ed2d4a42fa4ddd3668247d10ca6d902d7ada\"\u003e\u003ccode\u003e0917ed2\u003c/code\u003e\u003c/a\u003e Version 3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/394beb453256c9c15a30cb5851682fed2a844fc4\"\u003e\u003ccode\u003e394beb4\u003c/code\u003e\u003c/a\u003e Add warning for missing import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/96cd74d1a015a05bf4409a73b173dcdf8421902a\"\u003e\u003ccode\u003e96cd74d\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/c248b85d66c233a4673c64944bdeeb394be5116a\"\u003e\u003ccode\u003ec248b85\u003c/code\u003e\u003c/a\u003e Render typing_extensions.TypeAlias like other type aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/a2f49c9689ba76d5518c33fb509c57b5141342df\"\u003e\u003ccode\u003ea2f49c9\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings raised by astroid and sphinx\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/compare/v3.6.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ankitects/anki/pull/4756","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitects%2Fanki/issues/4756","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4756/packages"}},{"old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-21T21:49:35.000Z","version_change":"3.10.2.20260211 → 3.10.2.20260408","issue":{"uuid":"4305472026","node_id":"PR_kwDOR7xeb87UcWzZ","number":37,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 45 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T00:31:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-21T21:49:35.000Z","updated_at":"2026-05-13T00:31:58.000Z","time_to_close":1824141,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":45,"packages":[{"name":"faker","old_version":"40.12.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.39.0","new_version":"1.39.3","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20260402","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260402","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20260402","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20260402","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260402","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20260402","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260324","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260402","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260403","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260402","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260406","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260402","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.4.4.20260405","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20260402","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20260402","new_version":"3.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260402","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260402","new_version":"4.67.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.83","new_version":"1.42.92","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.11","new_version":"6.152.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260402","new_version":"2.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260402","new_version":"82.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.20.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.59.1","new_version":"0.62.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 45 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.12.0` | `40.15.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.11` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20260402` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260402` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20260402` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20260402` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260402` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20260402` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260324` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260402` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260403` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260402` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260406` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260402` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260402` | `311.0.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.4.4.20260405` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20260402` | `2.1.0.20260408` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20260402` | `3.20.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260402` | `2.18.0.20260408` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260402` | `4.67.3.20260408` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.83` | `1.42.92` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260408` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.11` | `6.152.1` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260402` | `2.0.0.20260408` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260402` | `82.0.0.20260408` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `1.20.2` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.59.1` | `0.62.0` |\n\n\nUpdates `faker` from 40.12.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.39.0 to 1.39.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.9 to 0.15.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.11\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.11\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/53554b1cfe837f2eb992a81794480699478f1116\"\u003e\u003ccode\u003e53554b1\u003c/code\u003e\u003c/a\u003e Bump 0.15.11 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24678\"\u003e#24678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/08c56c83cffbb1025cbf5bdede6c6d8be591cf47\"\u003e\u003ccode\u003e08c56c8\u003c/code\u003e\u003c/a\u003e Factor out the \u003ccode\u003emdtest\u003c/code\u003e crate (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24616\"\u003e#24616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/725fbb736d2a999971449b61190b914abd26102a\"\u003e\u003ccode\u003e725fbb7\u003c/code\u003e\u003c/a\u003e [ty] Use partially qualified names when reporting diagnostics regarding bad c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ddd6a30ff5fa27694dc1c50d0749885a1519d0a7\"\u003e\u003ccode\u003eddd6a30\u003c/code\u003e\u003c/a\u003e [ty] Do not suggest argument completion when at value of keyword argument (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9282e61d482a36da08d66bb8271afeef50b3bc45\"\u003e\u003ccode\u003e9282e61\u003c/code\u003e\u003c/a\u003e Disallow \u003ca href=\"https://github.com/disjoint\"\u003e\u003ccode\u003e@​disjoint\u003c/code\u003e\u003c/a\u003e_base on TypedDicts and Protocols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9986d8e3008eefe2e387312c4dc8b9c60f6f362\"\u003e\u003ccode\u003ee9986d8\u003c/code\u003e\u003c/a\u003e [ty] Reject using properties with \u003ccode\u003eNever\u003c/code\u003e setters or deleters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24510\"\u003e#24510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9cf212ff82f7b66b4a275ad6a9b1564aee1fa4a8\"\u003e\u003ccode\u003e9cf212f\u003c/code\u003e\u003c/a\u003e [ty] Normalize property setter and deleter wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24509\"\u003e#24509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/12a1589de4d7120cf99441ee4c14871bdc20968d\"\u003e\u003ccode\u003e12a1589\u003c/code\u003e\u003c/a\u003e Add override mention to ASYNC109 docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dccb03d010f4442ed60624f8d2ba932706abaabb\"\u003e\u003ccode\u003edccb03d\u003c/code\u003e\u003c/a\u003e [ty] Avoid panicking on overloaded \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24661\"\u003e#24661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/61f9a0a5763fb068cd2f26c0ee9d63a277fb26c2\"\u003e\u003ccode\u003e61f9a0a\u003c/code\u003e\u003c/a\u003e [ty] Sync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24646\"\u003e#24646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.9...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20260402 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260402 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20260402 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20260402 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260402 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20260402 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260324 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260402 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 7.34.1.20260403 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260402 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260406 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260402 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260402 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.4.4.20260405 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20260402 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20260402 to 3.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260402 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260402 to 4.67.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.83 to 1.42.92\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260124 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.11 to 6.152.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.1\u003c/h2\u003e\n\u003cp\u003eImprove some internal type hints.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.0\u003c/h2\u003e\n\u003cp\u003eHypothesis generally recommends that the \u0026quot;.hypothesis\u0026quot; directory not\nbe checked into version control. As a result, Hypothesis now\nautomatically creates a \u0026quot;.gitignore\u0026quot; with \u0026quot;*\u0026quot; in the \u0026quot;.hypothesis\u0026quot;\ndirectory, which excludes it from being tracked by git.\u003c/p\u003e\n\u003cp\u003eIf you do want to check \u0026quot;.hypothesis\u0026quot; into git, you can remove the\n\u0026quot;.gitignore\u0026quot; file. Hypothesis will not re-create it unless the entire\n\u0026quot;.hypothesis\u0026quot; directory is removed.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.14\u003c/h2\u003e\n\u003cp\u003eThis patch fixes our \u0026quot;from_regex()\u0026quot; type annotations so that\n\u0026quot;from_regex(..., alphabet=None)\u0026quot; is accepted.\u003c/p\u003e\n\u003cp\u003eThis patch also adds unicode line breaks and thai combining vowels to\nour list of constant strings to upweight at runtime.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-14\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.13\u003c/h2\u003e\n\u003cp\u003eThis patch removes some newly unnecessary \u0026quot;# type: ignore\u0026quot; comments.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-13\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.12\u003c/h2\u003e\n\u003cp\u003eThis release improves \u0026quot;Phase.explain\u0026quot; output by excluding pytest-\nrelated syrupy files as a possible source of variation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-12\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d451213b510a6edf42c5a9263ee4c99119ad6594\"\u003e\u003ccode\u003ed451213\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.1 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c95fa97ed244498708c50e8c73633f6d53961999\"\u003e\u003ccode\u003ec95fa97\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4706\"\u003e#4706\u003c/a\u003e from Liam-DeVoe/typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7dd2cfd7561fd0ef56054f049f13b2915089db2f\"\u003e\u003ccode\u003e7dd2cfd\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/35fdf62412e8e14968a8a8c225fefd185ce36e20\"\u003e\u003ccode\u003e35fdf62\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.0 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0cb15c586a25603673cfe826a1a91ea38bd094d0\"\u003e\u003ccode\u003e0cb15c5\u003c/code\u003e\u003c/a\u003e tighten check for typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0e0320429b4faf331fa61a7fa9cfe934d87b518b\"\u003e\u003ccode\u003e0e03204\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4704\"\u003e#4704\u003c/a\u003e from Liam-DeVoe/auto-ignore-.hypothesis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3625c6309082674d166836638ad335a307c5e675\"\u003e\u003ccode\u003e3625c63\u003c/code\u003e\u003c/a\u003e fix ci failures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/8a8a6a153ac5364cc160e5a6542f17d84fce9618\"\u003e\u003ccode\u003e8a8a6a1\u003c/code\u003e\u003c/a\u003e reword for clarity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0102250a5d2c6c44d0be9faa3099a0276427cb80\"\u003e\u003ccode\u003e0102250\u003c/code\u003e\u003c/a\u003e fix ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e571cf37a0df940df49faf573e53269648f95349\"\u003e\u003ccode\u003ee571cf3\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.14 and update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.11...hypothesis-python-6.152.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260402 to 2.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260402 to 82.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.0 to 1.20.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch3\u003eEnabling \u003ccode\u003e--local-partial-types\u003c/code\u003e by default\u003c/h3\u003e\n\u003cp\u003eThis flag affects the inference of types based on assignments in other scopes.\nFor now, explicitly disabling this continues to be supported, but this support will be removed\nin the future as the legacy behaviour is hard to support with other current and future features\nin mypy, like the daemon or the new implementation of flexible redefinitions.\u003c/p\u003e\n\u003cp\u003eContributed by Ivan Levkivskyi, Jukka Lehtosalo, Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/21163\"\u003ePR 21163\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eEnabling \u003ccode\u003e--strict-bytes\u003c/code\u003e by default\u003c/h3\u003e\n\u003cp\u003ePer \u003ca href=\"https://peps.python.org/pep-0688\"\u003ePEP 688\u003c/a\u003e, mypy no longer treats \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e\nvalues as assignable to the \u003ccode\u003ebytes\u003c/code\u003e type.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/18371\"\u003ePR 18371\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eDrop Support for Targeting Python 3.9\u003c/h3\u003e\n\u003cp\u003eMypy no longer supports type checking code with \u003ccode\u003e--python-version 3.9\u003c/code\u003e.\nUse \u003ccode\u003e--python-version 3.10\u003c/code\u003e or newer.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu, Marc Mueller in \u003ca href=\"https://redirect.github.com/python/mypy/pull/21243\"\u003ePR 21243\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eRemove special casing of legacy bundled stubs\u003c/h3\u003e\n\u003cp\u003eMypy used to bundle stubs for a few packages in versions 0.812 and earlier. To navigate the\ntransition, mypy used to report missing types for these packages even if \u003ccode\u003e--ignore-missing-imports\u003c/code\u003e\nwas set. Mypy now consistently respects \u003ccode\u003e--ignore-missing-imports\u003c/code\u003e for all packages.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/18372\"\u003ePR 18372\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003ePrevent assignment to None for non-Optional class variables with type comments\u003c/h3\u003e\n\u003cp\u003eMypy used to allow assignment to None for class variables when using type comments. This was a\ncommon idiom in Python 3.5 and earlier, prior to the introduction of variable annotations.\nHowever, this was a soundness hole and has now been removed.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/20054\"\u003ePR 20054\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eMypy 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.0...v1.20.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.59.1 to 0.62.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.62.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.61.1...0.62.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.61.1...0.62.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.61.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.61.0...0.61.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.61.0...0.61.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.61.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.2\u003c/h2\u003e\n\u003cp\u003eFixes exponential memory usage on unannotated dictionaries in 0.60.1.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/de2839344133e9cab81fcec5947a4c890a3564b4\"\u003e\u003ccode\u003ede28393\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/05a213c7ebe0674b284c8c9e4433ccc47399d481\"\u003e\u003ccode\u003e05a213c\u003c/code\u003e\u003c/a\u003e upgrade provenant to 0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/141dd714f9755a11979d3ee36453d9dbd0272277\"\u003e\u003ccode\u003e141dd71\u003c/code\u003e\u003c/a\u003e Fix lint issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4707a8fd6984811e52b41c0f61f51ce23b5cd7d9\"\u003e\u003ccode\u003e4707a8f\u003c/code\u003e\u003c/a\u003e Assume unannotated \u003ccode\u003e__new__\u003c/code\u003e returns \u003ccode\u003eSelf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/05b3e73d044792017fe0edb8ec22eb201c4d34cb\"\u003e\u003ccode\u003e05b3e73\u003c/code\u003e\u003c/a\u003e Add provenant-cli binary dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/593495be0eff4ed0356e9862a86aafc122e1f233\"\u003e\u003ccode\u003e593495b\u003c/code\u003e\u003c/a\u003e Bump semver 1.0.27 -\u0026gt; 1.0.28\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2dbb18dace24e8c7aa8469b61fcc4dd6458f4bfb\"\u003e\u003ccode\u003e2dbb18d\u003c/code\u003e\u003c/a\u003e Fix incorrect type inference for enum member .value with mixin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/69bb0219795dad3be71c1288814b0b7595ebaec6\"\u003e\u003ccode\u003e69bb021\u003c/code\u003e\u003c/a\u003e Fix false positive invalid-type-var for generic functions used as closure def...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/9bc95b4747a8fe351ceb16e0b2e12977990c080c\"\u003e\u003ccode\u003e9bc95b4\u003c/code\u003e\u003c/a\u003e include a schema version in \u003ccode\u003epyrefly report\u003c/code\u003e \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3103\"\u003e#3103\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3163\"\u003e#3163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/24c22be0646f31120c4cf6da548c8ba0b1a3def8\"\u003e\u003ccode\u003e24c22be\u003c/code\u003e\u003c/a\u003e Fix(\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2918\"\u003e#2918\u003c/a\u003e): \u003ccode\u003eNotImplemented\u003c/code\u003e being incorrectly accepted as a callable (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.1...0.62.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/jhappye/NexusAI/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhappye%2FNexusAI/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"}},{"old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","update_type":null,"path":"/api","pr_created_at":"2026-04-17T06:22:05.000Z","version_change":"3.10.2.20260211 → 3.10.2.20260408","issue":{"uuid":"4280607672","node_id":"PR_kwDOSE-lVs7TNjHT","number":20,"state":"closed","title":"chore(deps-dev): bump the dev group in /api with 33 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-17T22:26:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-17T06:22:05.000Z","updated_at":"2026-04-17T22:26:31.000Z","time_to_close":57865,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":33,"packages":[{"name":"faker","old_version":"40.11.0","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.3","new_version":"1.39.2","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260322","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":"/api","ecosystem":"pip"},"body":"Bumps the dev group in /api with 33 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.11.0` | `40.13.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.3` | `1.39.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.11` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260408` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260322` | `2.18.0.20260408` |\n\nUpdates `faker` from 40.11.0 to 40.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/adb7c1aa70fb6eae4785363e811e0982b8f8a7dd\"\u003e\u003ccode\u003eadb7c1a\u003c/code\u003e\u003c/a\u003e Bump version: 40.12.0 → 40.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/eedde76b11c2b05fec9fb8ac3cd394e1519e255d\"\u003e\u003ccode\u003eeedde76\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6fa5e2876653d08629dcdf9a91fdd678b4cb0759\"\u003e\u003ccode\u003e6fa5e28\u003c/code\u003e\u003c/a\u003e Follow-up to \u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e: Add requested tests (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce98d844ca907e065ec2109fa3a1a1b3c1ba3200\"\u003e\u003ccode\u003ece98d84\u003c/code\u003e\u003c/a\u003e Fix: Ensure deterministic locale selection in multi-locale mode (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.3 to 1.39.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f2f217469b0b59e77c49e8a92be3e8fe1c0e5146\"\u003e\u003ccode\u003ef2f2174\u003c/code\u003e\u003c/a\u003e Merge tag '1.1.409' into merge-1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/63998f4d0720a86447f4c4a04716e34f3e703660\"\u003e\u003ccode\u003e63998f4\u003c/code\u003e\u003c/a\u003e Publish 1.1.409\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.3...v1.39.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.11\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.11\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.11/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Omit overridden methods for \u003ccode\u003eASYNC109\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24648\"\u003e#24648\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add override mention to \u003ccode\u003eASYNC109\u003c/code\u003e docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Neovim config examples to use \u003ccode\u003evim.lsp.config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24577\"\u003e#24577\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/53554b1cfe837f2eb992a81794480699478f1116\"\u003e\u003ccode\u003e53554b1\u003c/code\u003e\u003c/a\u003e Bump 0.15.11 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24678\"\u003e#24678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/08c56c83cffbb1025cbf5bdede6c6d8be591cf47\"\u003e\u003ccode\u003e08c56c8\u003c/code\u003e\u003c/a\u003e Factor out the \u003ccode\u003emdtest\u003c/code\u003e crate (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24616\"\u003e#24616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/725fbb736d2a999971449b61190b914abd26102a\"\u003e\u003ccode\u003e725fbb7\u003c/code\u003e\u003c/a\u003e [ty] Use partially qualified names when reporting diagnostics regarding bad c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ddd6a30ff5fa27694dc1c50d0749885a1519d0a7\"\u003e\u003ccode\u003eddd6a30\u003c/code\u003e\u003c/a\u003e [ty] Do not suggest argument completion when at value of keyword argument (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9282e61d482a36da08d66bb8271afeef50b3bc45\"\u003e\u003ccode\u003e9282e61\u003c/code\u003e\u003c/a\u003e Disallow \u003ca href=\"https://github.com/disjoint\"\u003e\u003ccode\u003e@​disjoint\u003c/code\u003e\u003c/a\u003e_base on TypedDicts and Protocols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24671\"\u003e#24671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9986d8e3008eefe2e387312c4dc8b9c60f6f362\"\u003e\u003ccode\u003ee9986d8\u003c/code\u003e\u003c/a\u003e [ty] Reject using properties with \u003ccode\u003eNever\u003c/code\u003e setters or deleters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24510\"\u003e#24510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9cf212ff82f7b66b4a275ad6a9b1564aee1fa4a8\"\u003e\u003ccode\u003e9cf212f\u003c/code\u003e\u003c/a\u003e [ty] Normalize property setter and deleter wrappers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24509\"\u003e#24509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/12a1589de4d7120cf99441ee4c14871bdc20968d\"\u003e\u003ccode\u003e12a1589\u003c/code\u003e\u003c/a\u003e Add override mention to ASYNC109 docs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24666\"\u003e#24666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dccb03d010f4442ed60624f8d2ba932706abaabb\"\u003e\u003ccode\u003edccb03d\u003c/code\u003e\u003c/a\u003e [ty] Avoid panicking on overloaded \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24661\"\u003e#24661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/61f9a0a5763fb068cd2f26c0ee9d63a277fb26c2\"\u003e\u003ccode\u003e61f9a0a\u003c/code\u003e\u003c/a\u003e [ty] Sync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24646\"\u003e#24646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jsonschema` from 4.26.0.20260202 to 4.26.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260322 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20250822 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260322 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260323 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260323 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.2.28.20260301 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260322 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/gokool-hiva/Dify-Gokool/pull/20","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokool-hiva%2FDify-Gokool/issues/20","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20/packages"}},{"old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-16T16:39:42.000Z","version_change":"3.10.2.20260211 → 3.10.2.20260408","issue":{"uuid":"4277165372","node_id":"PR_kwDOR3iKCc7TCbug","number":46,"state":"open","title":"chore(deps-dev): bump the dev group across 1 directory with 45 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-16T16:39:42.000Z","updated_at":"2026-04-16T16:39:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":45,"packages":[{"name":"faker","old_version":"40.11.1","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.4","new_version":"1.39.1","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.8","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260324","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.3.32.20260329","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260322","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260303","new_version":"4.67.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.78","new_version":"1.42.89","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.10","new_version":"6.152.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260316","new_version":"2.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","new_version":"82.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.57.1","new_version":"0.61.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 45 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.11.1` | `40.13.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.4` | `1.39.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.10` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260324` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.3.32.20260329` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260408` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260322` | `2.18.0.20260408` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260303` | `4.67.3.20260408` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.78` | `1.42.89` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260408` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.10` | `6.152.1` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260316` | `2.0.0.20260408` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260408` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.1` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.57.1` | `0.61.0` |\n\n\nUpdates `faker` from 40.11.1 to 40.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/adb7c1aa70fb6eae4785363e811e0982b8f8a7dd\"\u003e\u003ccode\u003eadb7c1a\u003c/code\u003e\u003c/a\u003e Bump version: 40.12.0 → 40.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/eedde76b11c2b05fec9fb8ac3cd394e1519e255d\"\u003e\u003ccode\u003eeedde76\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6fa5e2876653d08629dcdf9a91fdd678b4cb0759\"\u003e\u003ccode\u003e6fa5e28\u003c/code\u003e\u003c/a\u003e Follow-up to \u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e: Add requested tests (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce98d844ca907e065ec2109fa3a1a1b3c1ba3200\"\u003e\u003ccode\u003ece98d84\u003c/code\u003e\u003c/a\u003e Fix: Ensure deterministic locale selection in multi-locale mode (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.4 to 1.39.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f2f217469b0b59e77c49e8a92be3e8fe1c0e5146\"\u003e\u003ccode\u003ef2f2174\u003c/code\u003e\u003c/a\u003e Merge tag '1.1.409' into merge-1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/63998f4d0720a86447f4c4a04716e34f3e703660\"\u003e\u003ccode\u003e63998f4\u003c/code\u003e\u003c/a\u003e Publish 1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/3bc9d494291348d530aa0b44f668fadff64ccc4c\"\u003e\u003ccode\u003e3bc9d49\u003c/code\u003e\u003c/a\u003e Revert version bump (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/11391\"\u003e#11391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/386d8314c2d279418287fdb44bb9795e893db95b\"\u003e\u003ccode\u003e386d831\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.409\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/abc7b2cc36475f96b88c4daa6f159823b600789c\"\u003e\u003ccode\u003eabc7b2c\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.409\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.4...v1.39.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.8 to 0.15.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.10\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.10/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/252f76102a618bff6537b6c53c316ca3837f4abf\"\u003e\u003ccode\u003e252f761\u003c/code\u003e\u003c/a\u003e Bump 0.15.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24519\"\u003e#24519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/37a1ec8bb8e30955787b0cdf6e97f7f2254dba7f\"\u003e\u003ccode\u003e37a1ec8\u003c/code\u003e\u003c/a\u003e [ty] Fix assignability of intersections with bounded typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24502\"\u003e#24502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f518cc9ca0c830773dd49c3964eb5e49d52c8aed\"\u003e\u003ccode\u003ef518cc9\u003c/code\u003e\u003c/a\u003e [ty] Allow partially stringified \u003ccode\u003etype[…]\u003c/code\u003e annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24518\"\u003e#24518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16c4090d0a711b9c0523b932014f3daf140f35bc\"\u003e\u003ccode\u003e16c4090\u003c/code\u003e\u003c/a\u003e docs: fix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/99d97bd72f1934ac2af93e52468c10ef1c7a1a4e\"\u003e\u003ccode\u003e99d97bd\u003c/code\u003e\u003c/a\u003e [ty] Tighten up a few edge cases in \u003ccode\u003eConcatenate\u003c/code\u003e type-expression parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2714e345bdd64a5baae3844c0d25db7b0b9fe330\"\u003e\u003ccode\u003e2714e34\u003c/code\u003e\u003c/a\u003e [ty] Enable \u003ccode\u003epull-diagnostics\u003c/code\u003e by default in E2E tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24516\"\u003e#24516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8bc700722ab1b7272a4d724839da7c569b349d4\"\u003e\u003ccode\u003ed8bc700\u003c/code\u003e\u003c/a\u003e LSP: Add support for custom extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a45f96d65dbd4f958b07accd718f8d2af48cb956\"\u003e\u003ccode\u003ea45f96d\u003c/code\u003e\u003c/a\u003e [ty] stop special-casing str constructor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24514\"\u003e#24514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87a0f01cfd016e0297ef05ab638cde006bf8d947\"\u003e\u003ccode\u003e87a0f01\u003c/code\u003e\u003c/a\u003e [ruff] Treat f-string interpolation as potential side effect in RUF019 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9ba8489b8d1f1fd5fd66887a74d5f2f58f733d4\"\u003e\u003ccode\u003ee9ba848\u003c/code\u003e\u003c/a\u003e [ty] Fix excess subscript argument inference for non-generic types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24354\"\u003e#24354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.8...0.15.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260322 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260324 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260322 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260323 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260323 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.3.32.20260329 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20250822 to 3.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260322 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260303 to 4.67.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.78 to 1.42.89\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260124 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.10 to 6.152.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.1\u003c/h2\u003e\n\u003cp\u003eImprove some internal type hints.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.0\u003c/h2\u003e\n\u003cp\u003eHypothesis generally recommends that the \u0026quot;.hypothesis\u0026quot; directory not\nbe checked into version control. As a result, Hypothesis now\nautomatically creates a \u0026quot;.gitignore\u0026quot; with \u0026quot;*\u0026quot; in the \u0026quot;.hypothesis\u0026quot;\ndirectory, which excludes it from being tracked by git.\u003c/p\u003e\n\u003cp\u003eIf you do want to check \u0026quot;.hypothesis\u0026quot; into git, you can remove the\n\u0026quot;.gitignore\u0026quot; file. Hypothesis will not re-create it unless the entire\n\u0026quot;.hypothesis\u0026quot; directory is removed.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-0\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.14\u003c/h2\u003e\n\u003cp\u003eThis patch fixes our \u0026quot;from_regex()\u0026quot; type annotations so that\n\u0026quot;from_regex(..., alphabet=None)\u0026quot; is accepted.\u003c/p\u003e\n\u003cp\u003eThis patch also adds unicode line breaks and thai combining vowels to\nour list of constant strings to upweight at runtime.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-14\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.13\u003c/h2\u003e\n\u003cp\u003eThis patch removes some newly unnecessary \u0026quot;# type: ignore\u0026quot; comments.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-13\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.12\u003c/h2\u003e\n\u003cp\u003eThis release improves \u0026quot;Phase.explain\u0026quot; output by excluding pytest-\nrelated syrupy files as a possible source of variation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-12\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.11\u003c/h2\u003e\n\u003cp\u003eThis patch improves printing of primitive values generated from\ncomplex strategies, particularly for \u0026quot;from_regex()\u0026quot;. Previously, these\nwould often be printed as function calls desctribing how to construct\nthem. Now they will always be printed as a literal value.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-11\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d451213b510a6edf42c5a9263ee4c99119ad6594\"\u003e\u003ccode\u003ed451213\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.1 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c95fa97ed244498708c50e8c73633f6d53961999\"\u003e\u003ccode\u003ec95fa97\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4706\"\u003e#4706\u003c/a\u003e from Liam-DeVoe/typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7dd2cfd7561fd0ef56054f049f13b2915089db2f\"\u003e\u003ccode\u003e7dd2cfd\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into typing-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/35fdf62412e8e14968a8a8c225fefd185ce36e20\"\u003e\u003ccode\u003e35fdf62\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.0 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0cb15c586a25603673cfe826a1a91ea38bd094d0\"\u003e\u003ccode\u003e0cb15c5\u003c/code\u003e\u003c/a\u003e tighten check for typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0e0320429b4faf331fa61a7fa9cfe934d87b518b\"\u003e\u003ccode\u003e0e03204\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4704\"\u003e#4704\u003c/a\u003e from Liam-DeVoe/auto-ignore-.hypothesis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3625c6309082674d166836638ad335a307c5e675\"\u003e\u003ccode\u003e3625c63\u003c/code\u003e\u003c/a\u003e fix ci failures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/8a8a6a153ac5364cc160e5a6542f17d84fce9618\"\u003e\u003ccode\u003e8a8a6a1\u003c/code\u003e\u003c/a\u003e reword for clarity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0102250a5d2c6c44d0be9faa3099a0276427cb80\"\u003e\u003ccode\u003e0102250\u003c/code\u003e\u003c/a\u003e fix ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e571cf37a0df940df49faf573e53269648f95349\"\u003e\u003ccode\u003ee571cf3\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.14 and update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.10...hypothesis-python-6.152.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260316 to 2.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260210 to 82.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.20.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways disable sync in SQLite cache (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21184\"\u003e21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTemporarily skip few base64 tests (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21193\"\u003e21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u003ccode\u003edict.__or__\u003c/code\u003e typeshed change (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21186\"\u003e21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing for match case with variadic tuples (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21192\"\u003e21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing \u003ccode\u003etype[T]\u003c/code\u003e in type calls (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21174\"\u003e21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression for catching empty tuple in except (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21153\"\u003e21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix reachability for frozenset and dict view narrowing (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21151\"\u003e21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix narrowing with chained comparison (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21150\"\u003e21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid narrowing to unreachable at module level (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21144\"\u003e21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow dangerous identity comparisons to \u003ccode\u003eAny\u003c/code\u003e typed variables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21142\"\u003e21142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--warn-unused-config\u003c/code\u003e should not be a strict flag (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21139\"\u003e21139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c60e8bfcb5910974b577e443725c475e0485d269\"\u003e\u003ccode\u003ec60e8bf\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/842e4927738264949e969df0c2ee285a13594d06\"\u003e\u003ccode\u003e842e492\u003c/code\u003e\u003c/a\u003e Always disable sync in SQLite cache (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21184\"\u003e#21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e82a046356b242441fcd55c8cf922c7904ef311a\"\u003e\u003ccode\u003ee82a046\u003c/code\u003e\u003c/a\u003e Temporarily skip few base64 tests (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21193\"\u003e#21193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f7fa418b6504e20c1277947e03a6db2f6d03e13e\"\u003e\u003ccode\u003ef7fa418\u003c/code\u003e\u003c/a\u003e Revert dict.\u003cstrong\u003eor\u003c/strong\u003e typeshed change (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a2e8ee1afd5bbda26ad301496685295b1a7997a3\"\u003e\u003ccode\u003ea2e8ee1\u003c/code\u003e\u003c/a\u003e Fix narrowing for match case with variadic tuples (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21192\"\u003e#21192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/521f88f510c2065132909928815f08502097ceea\"\u003e\u003ccode\u003e521f88f\u003c/code\u003e\u003c/a\u003e Avoid narrowing type[T] in type calls (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21174\"\u003e#21174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4876e9186b927fe4777609fc9932752dcfb7047\"\u003e\u003ccode\u003ea4876e9\u003c/code\u003e\u003c/a\u003e Fix regression for catching empty tuple in except (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21153\"\u003e#21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6fccffcac0c8c24034d4f2b262ca7e5564ba9375\"\u003e\u003ccode\u003e6fccffc\u003c/code\u003e\u003c/a\u003e Fix reachability for frozenset and dict view narrowing (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21151\"\u003e#21151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/de50419dc84a66f0e8606308023f81a44dee54f3\"\u003e\u003ccode\u003ede50419\u003c/code\u003e\u003c/a\u003e Fix narrowing with chained comparison (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21150\"\u003e#21150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/eafcf18ff1d83923c0f749cf3056962df63ed693\"\u003e\u003ccode\u003eeafcf18\u003c/code\u003e\u003c/a\u003e Avoid narrowing to unreachable at module level (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21144\"\u003e#21144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v1.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.57.1 to 0.61.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.61.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.2...0.61.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.2\u003c/h2\u003e\n\u003cp\u003eFixes exponential memory usage on unannotated dictionaries in 0.60.1.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.1...0.60.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.60.0...0.60.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.60.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\"\u003ehttps://github.com/facebook/pyrefly/compare/0.59.1...0.60.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.59.1\u003c/h2\u003e\n\u003cp\u003eFixed a performance regression in 0.59.0.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.0...0.59.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.59.0...0.59.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.59.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : Beta\u003c/strong\u003e\u003cbr /\u003e\n\u003cem\u003e\u003cstrong\u003eRelease date:\u003c/strong\u003e March 30, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.59.0 bundles \u003cstrong\u003e153 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003eArea\u003c/th\u003e\n\u003cth align=\"left\"\u003eWhat’s new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- You can now use \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause without triggering a false positive \u003ccode\u003emissing-explicit-return\u003c/code\u003e error.  \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pyrefly now correctly handles type inference for nested empty dictionaries when constructing TypedDict instances, avoiding \u003ccode\u003eimplicit-any\u003c/code\u003e errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages now highlight related code with inline labels; for example, an unsupported * operation will show the types of both operands directly in the source snippet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- LSP hover information for classes now displays constructor signature and docstring. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Support additional LSP functionality for notebooks, including find-references and rename.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- Faster typechecking in large pythonc codebases, up to 2x faster on recent benchmarks on real world projects \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Reduced CPU usage through smarter caching of module resolution results \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Improved performance of the LSP server by reducing redundant workspace diagnostic publishes.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed 16 bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2026\"\u003e#2026\u003c/a\u003e: Fixed an issue where recursive bounded generics were incorrectly reported as \u003ccode\u003eobject\u003c/code\u003e, ensuring accurate type checking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2812\"\u003e#2812\u003c/a\u003e: Resolved a false positive \u003ccode\u003einvalid-type-var\u003c/code\u003e error when persisting the \u003ccode\u003eget\u003c/code\u003e method of a fully-annotated \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2804\"\u003e#2804\u003c/a\u003e: Fixed an \u003ccode\u003eimplicit-any\u003c/code\u003e false positive that occurred with TypedDict items, improving code readability.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2868\"\u003e#2868\u003c/a\u003e: Pyrefly now correctly recognizes \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause as exhaustive.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2814\"\u003e#2814\u003c/a\u003e: Enhanced hover information for \u003ccode\u003edatetime.datetime\u003c/code\u003e imports to display constructor signatures and docstrings.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2896\"\u003e#2896\u003c/a\u003e: Fixed a \u003ccode\u003ebad-argument-type\u003c/code\u003e error that occurred when using double-underscore arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2893\"\u003e#2893\u003c/a\u003e: Pyrefly now correctly handles dict Literal key types as subtypes of str key types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2865\"\u003e#2865\u003c/a\u003e: Resolved an issue where tuple subclasses with overridden \u003ccode\u003e__getitem__\u003c/code\u003e were not recognized.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2871\"\u003e#2871\u003c/a\u003e: Fixed a false positive error when using \u003ccode\u003eisinstance\u003c/code\u003e with \u003ccode\u003etype | X\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/89c943636570ceba7c8b70ccda648dd31f892e83\"\u003e\u003ccode\u003e89c9436\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/8cee24781db0ed17ce50281efa60a4c760dd0398\"\u003e\u003ccode\u003e8cee247\u003c/code\u003e\u003c/a\u003e Add composite GitHub Action for CI type checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d16b045936da0f30327e36bc17ca5229a89131ee\"\u003e\u003ccode\u003ed16b045\u003c/code\u003e\u003c/a\u003e Resolve xrefs for dotted names in string literals via attribute resolution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/eaefaaa1ff032e1c3d9454baf08405a18f6fe552\"\u003e\u003ccode\u003eeaefaaa\u003c/code\u003e\u003c/a\u003e Add faling test for overloads for returning Self (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3111\"\u003e#3111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e94e945b55837b28a62b4be657d41c1e610c30a7\"\u003e\u003ccode\u003ee94e945\u003c/code\u003e\u003c/a\u003e Bump zerocopy 0.8.31 -\u0026gt; 0.8.48\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/afb1499dd4b8a601d905bbe3aaec893b57c8704c\"\u003e\u003ccode\u003eafb1499\u003c/code\u003e\u003c/a\u003e Bump rustc-hash 2.1.1 -\u0026gt; 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/13d1036d6f92a3621a2aae235f010e0751d19470\"\u003e\u003ccode\u003e13d1036\u003c/code\u003e\u003c/a\u003e Bump mio 1.1.1 -\u0026gt; 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/36293ea87a7ac145f69c9e4d12d965a919c33c42\"\u003e\u003ccode\u003e36293ea\u003c/code\u003e\u003c/a\u003e Bump uuid 1.22.0 -\u0026gt; 1.23.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a6b813c96fcf5253fd5272507ba8ee749661e983\"\u003e\u003ccode\u003ea6b813c\u003c/code\u003e\u003c/a\u003e Use function index instead of location as the function id\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/308bf05d98d815869141972f2189801ab35c862c\"\u003e\u003ccode\u003e308bf05\u003c/code\u003e\u003c/a\u003e Add tests for gradual-aware union narrowing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.57.1...0.61.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/henrydev23/dify-ntte-moi/pull/46","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrydev23%2Fdify-ntte-moi/issues/46","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/46/packages"}},{"old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-11T21:42:40.000Z","version_change":"3.10.2.20260211 → 3.10.2.20260408","issue":{"uuid":"4245847328","node_id":"PR_kwDORmx2Bs7RtNnT","number":64,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 49 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-30T21:47:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-11T21:42:40.000Z","updated_at":"2026-05-30T21:47:47.000Z","time_to_close":4233906,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":49,"packages":[{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.8.0","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.2","new_version":"1.39.0","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20251022","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260223","new_version":"0.22.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20251102","new_version":"26.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.4.0.20260409","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20250919","new_version":"3.1.5.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20250916","new_version":"4.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20251012","new_version":"2.9.21.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20250916","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20251115","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20251008","new_version":"311.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.4.4.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20251008","new_version":"2.18.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.0.20250809","new_version":"4.67.3.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.41.3","new_version":"1.42.88","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.0.2.20250809","new_version":"1.1.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.148.2","new_version":"6.151.12","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"1.17.0.20250915","new_version":"2.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"80.9.0.20250822","new_version":"82.0.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.16.3.1","new_version":"1.17.1.3","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"import-linter","old_version":"2.10","new_version":"2.11","repository_url":"https://github.com/seddonym/import-linter"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.60.2","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 49 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.13.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.2` | `1.39.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.10` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260409` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20251022` | `6.2.0.20260408` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260408` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260408` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260408` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260223` | `0.22.3.20260408` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260408` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260408` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260408` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20251102` | `26.4.0.20260409` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.4.0.20260409` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260408` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260408` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260408` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260408` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260408` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20250919` | `3.1.5.20260408` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20250916` | `4.9.0.20260408` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260408` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260408` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20251012` | `2.9.21.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20250916` | `1.1.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20251115` | `2.9.0.20260408` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20251008` | `311.0.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.4.4.20260408` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260408` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260408` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20251008` | `2.18.0.20260408` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.0.20250809` | `4.67.3.20260408` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.41.3` | `1.42.88` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.0.2.20250809` | `1.1.0.20260408` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.148.2` | `6.151.12` |\n| [types-cffi](https://github.com/python/typeshed) | `1.17.0.20250915` | `2.0.0.20260408` |\n| [types-setuptools](https://github.com/python/typeshed) | `80.9.0.20250822` | `82.0.0.20260408` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.16.3.1` | `1.17.1.3` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [import-linter](https://github.com/seddonym/import-linter) | `2.10` | `2.11` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.60.2` |\n\n\nUpdates `coverage` from 7.13.4 to 7.13.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.8.0 to 40.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/adb7c1aa70fb6eae4785363e811e0982b8f8a7dd\"\u003e\u003ccode\u003eadb7c1a\u003c/code\u003e\u003c/a\u003e Bump version: 40.12.0 → 40.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/eedde76b11c2b05fec9fb8ac3cd394e1519e255d\"\u003e\u003ccode\u003eeedde76\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6fa5e2876653d08629dcdf9a91fdd678b4cb0759\"\u003e\u003ccode\u003e6fa5e28\u003c/code\u003e\u003c/a\u003e Follow-up to \u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e: Add requested tests (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce98d844ca907e065ec2109fa3a1a1b3c1ba3200\"\u003e\u003ccode\u003ece98d84\u003c/code\u003e\u003c/a\u003e Fix: Ensure deterministic locale selection in multi-locale mode (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2287\"\u003e#2287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.2 to 1.39.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d4b4104727048b226326649741c319430a8c9cae\"\u003e\u003ccode\u003ed4b4104\u003c/code\u003e\u003c/a\u003e 1.39.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/241c884744586fd9af586d6f203fe621e552ce21\"\u003e\u003ccode\u003e241c884\u003c/code\u003e\u003c/a\u003e fix diagnostic ruleset defaults for \u003ccode\u003ereportEmptyAbstractUsage\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b4774cbdf1afb7a0fa052aac4c9b2d78022cdf16\"\u003e\u003ccode\u003eb4774cb\u003c/code\u003e\u003c/a\u003e cherrypick \u003ca href=\"https://redirect.github.com/python/typeshed/pull/15488\"\u003epython/typeshed#15488\u003c/a\u003e to prevent false pos...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/df077f6f1330fa80016d49df49b2bb3de9eb8930\"\u003e\u003ccode\u003edf077f6\u003c/code\u003e\u003c/a\u003e flag abstract base classes with no abstract methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/be981660d7d7e65227c2a981a2ac541a75e2b5f9\"\u003e\u003ccode\u003ebe98166\u003c/code\u003e\u003c/a\u003e set uv \u003ccode\u003eexclude-newer\u003c/code\u003e to 1 week\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b2ebfbad429c8389f9f3e110e22ed131b6422370\"\u003e\u003ccode\u003eb2ebfba\u003c/code\u003e\u003c/a\u003e Update SECURITY.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/2455efb5c3113e0c54ab233f83f2f3a9a592a72e\"\u003e\u003ccode\u003e2455efb\u003c/code\u003e\u003c/a\u003e 1.38.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/78db0e0b80a5cd02ae13dd36502a9f300de7a94f\"\u003e\u003ccode\u003e78db0e0\u003c/code\u003e\u003c/a\u003e i hate node i hate webpack i hate all this shit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/1cc918afb0116639f0ba5680c93cd5e3506c93fb\"\u003e\u003ccode\u003e1cc918a\u003c/code\u003e\u003c/a\u003e use \u003ccode\u003e@​core-js/pure\u003c/code\u003e to polyfill newer ecmascript features now that it has prope...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b31ffd95280f64a456e58d01709cf8ba2036224d\"\u003e\u003ccode\u003eb31ffd9\u003c/code\u003e\u003c/a\u003e remove unused \u003ccode\u003eignoreErrors\u003c/code\u003e function that was added to the \u003ccode\u003ePromise\u003c/code\u003e prototy...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.2...v1.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.5 to 0.15.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.10\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.10/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/252f76102a618bff6537b6c53c316ca3837f4abf\"\u003e\u003ccode\u003e252f761\u003c/code\u003e\u003c/a\u003e Bump 0.15.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24519\"\u003e#24519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/37a1ec8bb8e30955787b0cdf6e97f7f2254dba7f\"\u003e\u003ccode\u003e37a1ec8\u003c/code\u003e\u003c/a\u003e [ty] Fix assignability of intersections with bounded typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24502\"\u003e#24502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f518cc9ca0c830773dd49c3964eb5e49d52c8aed\"\u003e\u003ccode\u003ef518cc9\u003c/code\u003e\u003c/a\u003e [ty] Allow partially stringified \u003ccode\u003etype[…]\u003c/code\u003e annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24518\"\u003e#24518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16c4090d0a711b9c0523b932014f3daf140f35bc\"\u003e\u003ccode\u003e16c4090\u003c/code\u003e\u003c/a\u003e docs: fix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/99d97bd72f1934ac2af93e52468c10ef1c7a1a4e\"\u003e\u003ccode\u003e99d97bd\u003c/code\u003e\u003c/a\u003e [ty] Tighten up a few edge cases in \u003ccode\u003eConcatenate\u003c/code\u003e type-expression parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2714e345bdd64a5baae3844c0d25db7b0b9fe330\"\u003e\u003ccode\u003e2714e34\u003c/code\u003e\u003c/a\u003e [ty] Enable \u003ccode\u003epull-diagnostics\u003c/code\u003e by default in E2E tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24516\"\u003e#24516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8bc700722ab1b7272a4d724839da7c569b349d4\"\u003e\u003ccode\u003ed8bc700\u003c/code\u003e\u003c/a\u003e LSP: Add support for custom extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a45f96d65dbd4f958b07accd718f8d2af48cb956\"\u003e\u003ccode\u003ea45f96d\u003c/code\u003e\u003c/a\u003e [ty] stop special-casing str constructor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24514\"\u003e#24514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87a0f01cfd016e0297ef05ab638cde006bf8d947\"\u003e\u003ccode\u003e87a0f01\u003c/code\u003e\u003c/a\u003e [ruff] Treat f-string interpolation as potential side effect in RUF019 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9ba8489b8d1f1fd5fd66887a74d5f2f58f733d4\"\u003e\u003ccode\u003ee9ba848\u003c/code\u003e\u003c/a\u003e [ty] Fix excess subscript argument inference for non-generic types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24354\"\u003e#24354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20251022 to 6.2.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260223 to 0.22.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jsonschema` from 4.26.0.20260202 to 4.26.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20251102 to 26.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.4.0.20260409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20250822 to 3.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20250919 to 3.1.5.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20250916 to 4.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20251012 to 2.9.21.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20250916 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20251115 to 2.9.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20251008 to 311.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.2.28.20260301 to 2026.4.4.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20250822 to 3.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20251008 to 2.18.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.0.20250809 to 4.67.3.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.41.3 to 1.42.88\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.0.2.20250809 to 1.1.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.148.2 to 6.151.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.12\u003c/h2\u003e\n\u003cp\u003eThis release improves \u0026quot;Phase.explain\u0026quot; output by excluding pytest-\nrelated syrupy files as a possible source of variation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-12\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.11\u003c/h2\u003e\n\u003cp\u003eThis patch improves printing of primitive values generated from\ncomplex strategies, particularly for \u0026quot;from_regex()\u0026quot;. Previously, these\nwould often be printed as function calls desctribing how to construct\nthem. Now they will always be printed as a literal value.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-11\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.10\u003c/h2\u003e\n\u003cp\u003eWhen shrinking takes more than five minutes, Hypothesis now prints the\n\u0026quot;\u003ca href=\"https://github.com/seed\"\u003e\u003ccode\u003e@​seed\u003c/code\u003e\u003c/a\u003e\u0026quot; decorator alongside the slow-shrinking warning so you can\nreproduce the failure.\u003c/p\u003e\n\u003cp\u003eThanks to Ian Hunt-Isaak for this contribution!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-10\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.9\u003c/h2\u003e\n\u003cp\u003eRemove some old unused code.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-9\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.8\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a crash when \u0026quot;sys.modules\u0026quot; contains unhashable\nvalues, such as \u0026quot;SimpleNamespace\u0026quot; objects (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4660\"\u003e#4660\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-8\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.7\u003c/h2\u003e\n\u003cp\u003eThis patch updates our vendored list of top-level domains, which is\nused by the provisional \u0026quot;domains()\u0026quot; strategy.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-7\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.6\u003c/h2\u003e\n\u003cp\u003eThis patch fixes several duplicate word typos in comments and\ndocumentation.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-6\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.5\u003c/h2\u003e\n\u003cp\u003eThis patch teaches our pytest plugin to :ref:\u003ccode\u003e find interesting constants \u0026lt;v6.131.1\u0026gt;\u003c/code\u003e when pytest is collecting tests, to avoid\narbitrarily attributing the latency to whichever test function\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/2b1de221b8f627131169cac859597da6283cb7e1\"\u003e\u003ccode\u003e2b1de22\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.12 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0016ad00857fff7eda4fb2e1508e91d5844b0b4f\"\u003e\u003ccode\u003e0016ad0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4695\"\u003e#4695\u003c/a\u003e from HypothesisWorks/DRMacIver/syrupy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c43f47599deb6b440704d13a9849287c1aa93bee\"\u003e\u003ccode\u003ec43f475\u003c/code\u003e\u003c/a\u003e Remove extra blank line in conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/acbfebbe97f4ba677217ff5744112e70db5864c9\"\u003e\u003ccode\u003eacbfebb\u003c/code\u003e\u003c/a\u003e Refactor test layout in response to code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/25cdc50c5421855530a4ec369567b8198ef9d61c\"\u003e\u003ccode\u003e25cdc50\u003c/code\u003e\u003c/a\u003e Don't install syrupy in tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d96f37439e5d426b3ab4622e8256478c3bd63dd5\"\u003e\u003ccode\u003ed96f374\u003c/code\u003e\u003c/a\u003e Inline list definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/6ab0b0ccb91c26bd4e870c954f14ae9c98d6250e\"\u003e\u003ccode\u003e6ab0b0c\u003c/code\u003e\u003c/a\u003e Remove useless module docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ebe4fcbbaccc48ee2ea41f7670f0d37557a70b22\"\u003e\u003ccode\u003eebe4fcb\u003c/code\u003e\u003c/a\u003e Move get_output into common utils function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0ddfbc699a47e9578e7a23b86259f553e361ad82\"\u003e\u003ccode\u003e0ddfbc6\u003c/code\u003e\u003c/a\u003e Update hypothesis-python/RELEASE.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b4fc0530faed8398e9e64b74044da969f31b3e42\"\u003e\u003ccode\u003eb4fc053\u003c/code\u003e\u003c/a\u003e Add release file\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.148.2...hypothesis-python-6.151.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 1.17.0.20250915 to 2.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 80.9.0.20250822 to 82.0.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.16.3.1 to 1.17.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.3\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fixed several issues with \u003ccode\u003escipy.sparse\u003c/code\u003e arrays and matrices for certain slicing and multi-indexing operations (see \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1454\"\u003escipy/scipy-stubs#1454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e✨ Many improved function signatures (shape-typing, input-dependent return dtypes) in \u003ccode\u003escipy.io\u003c/code\u003e, \u003ccode\u003escipy.linalg\u003c/code\u003e, \u003ccode\u003escipy.ndimage\u003c/code\u003e, \u003ccode\u003escipy.signal\u003c/code\u003e, and \u003ccode\u003escipy.stats\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Increased the type-testing coverage from 84.0% to 87.7%. The goal is to reach 100% coverage in the near future. For the current progress and per-module coverage, see \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1099\"\u003escipy/scipy-stubs#1099\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003endimage\u003c/code\u003e: improved morphology functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1458\"\u003escipy/scipy-stubs#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elinalg.interpolative\u003c/code\u003e: improved shape-typing and dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1459\"\u003escipy/scipy-stubs#1459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elinalg\u003c/code\u003e: improved \u003ccode\u003esvdvals\u003c/code\u003e and \u003ccode\u003esubspace_angles\u003c/code\u003e shape-types and dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1460\"\u003escipy/scipy-stubs#1460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003endimage\u003c/code\u003e: improved interpolation functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1461\"\u003escipy/scipy-stubs#1461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improve \u003ccode\u003e{g,h,p}mean\u003c/code\u003e by adding 3*26 overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1463\"\u003escipy/scipy-stubs#1463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eiqr\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1464\"\u003escipy/scipy-stubs#1464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ezmap\u003c/code\u003e dtypes and shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1465\"\u003escipy/scipy-stubs#1465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eio\u003c/code\u003e: improved \u003ccode\u003eMMFile.{read,write}\u003c/code\u003e signatures by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1467\"\u003escipy/scipy-stubs#1467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: minor improvements to some filter design functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1475\"\u003escipy/scipy-stubs#1475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improved LTI conversion functions dtypes (\u003ccode\u003e_lti_conversion\u003c/code\u003e) by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1477\"\u003escipy/scipy-stubs#1477\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: fix sparse array/matrix sliced index assignment by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1456\"\u003escipy/scipy-stubs#1456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: fix sparse array/matrix mixed multi-index assignment by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1457\"\u003escipy/scipy-stubs#1457\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd movement to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1462\"\u003escipy/scipy-stubs#1462\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✅ Testing\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003eCovariance\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1468\"\u003escipy/scipy-stubs#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003echatterjeexi\u003c/code\u003e and \u003ccode\u003espearmanrho\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1469\"\u003escipy/scipy-stubs#1469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test remaining resampling functions and classes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1470\"\u003escipy/scipy-stubs#1470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003edirichlet_multinomial\u003c/code\u003e  and \u003ccode\u003ematrix_t\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1471\"\u003escipy/scipy-stubs#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003erv_histogram\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1472\"\u003escipy/scipy-stubs#1472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003enew_distributions\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1473\"\u003escipy/scipy-stubs#1473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: test \u003ccode\u003eabs\u003c/code\u003e and \u003ccode\u003eMixture\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1474\"\u003escipy/scipy-stubs#1474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: test the remaining filter design functions (\u003ccode\u003e_filter_design\u003c/code\u003e) by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1476\"\u003escipy/scipy-stubs#1476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: test \u003ccode\u003edetrend\u003c/code\u003e, \u003ccode\u003eresidue[z]\u003c/code\u003e, and \u003ccode\u003einvres[z]\u003c/code\u003e by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1478\"\u003escipy/scipy-stubs#1478\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: test remaining waveform functions by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1479\"\u003escipy/scipy-stubs#1479\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/6bb5184d6869edd3957399c3ef72f0db9fc53690\"\u003e\u003ccode\u003e6bb5184\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/38d5286101eba47843041ca813c59e604feb9a6b\"\u003e\u003ccode\u003e38d5286\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1479\"\u003e#1479\u003c/a\u003e from scipy:signal._waveforms/tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/84ddb4e3eb28d50d04a58abd69aa5c02e1f160a3\"\u003e\u003ccode\u003e84ddb4e\u003c/code\u003e\u003c/a\u003e ✅ \u003ccode\u003esignal\u003c/code\u003e: test remaainiang waveform functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/8d2113f2ee63660f87f6006efbc2594de2176300\"\u003e\u003ccode\u003e8d2113f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1478\"\u003e#1478\u003c/a\u003e from scipy:signal._signaltools/tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/eb410588331ca61fc43e0ca207c1caf2940ab6dc\"\u003e\u003ccode\u003eeb41058\u003c/code\u003e\u003c/a\u003e ✅ \u003ccode\u003esignal\u003c/code\u003e: test \u003ccode\u003edetrend\u003c/code\u003e, \u003ccode\u003eresidue[z]\u003c/code\u003e, and \u003ccode\u003einvres[z]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/40fa398f70c00288f9e6285ba978c2039610f5b2\"\u003e\u003ccode\u003e40fa398\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1477\"\u003e#1477\u003c/a\u003e from scipy:signal._lti_conversion/improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/e8dfe75ed11e51ea006ad1968b819d0b1f41fc7d\"\u003e\u003ccode\u003ee8dfe75\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003ess2zpk\u003c/code\u003e dtypes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/eb07f678745c17e9751bf007a11bcd067614890c\"\u003e\u003ccode\u003eeb07f67\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003ezpk2ss\u003c/code\u003e dtypes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4cc11bf7611843dfa89fe9b1fa36a1674d01415\"\u003e\u003ccode\u003eb4cc11b\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003eabcd_normalize\u003c/code\u003e dtypes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/6c90b7bf4a412b84bb447f13c86bdf35f9947c4b\"\u003e\u003ccode\u003e6c90b7b\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003esignal\u003c/code\u003e: improved \u003ccode\u003ess2tf\u003c/code\u003e dtypes and shape-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.16.3.1...v1.17.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `import-linter` from 2.10 to 2.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/seddonym/import-linter/blob/main/docs/release_notes.md\"\u003eimport-linter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.11 (2026-03-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--version\u003c/code\u003e flag to \u003ccode\u003elint-imports\u003c/code\u003e and \u003ccode\u003eimport-linter\u003c/code\u003e commands.\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003efastapi\u003c/code\u003e and \u003ccode\u003euvicorn\u003c/code\u003e optional via the \u003ccode\u003eui\u003c/code\u003e extra (\u003ccode\u003epip install import-linter[ui]\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eBugfix: fix back button navigation in explore command.\u003c/li\u003e\n\u003cli\u003eProvide lower limits for \u003ccode\u003efastapi\u003c/code\u003e and \u003ccode\u003euvicorn\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eSwitch to nox for testing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/fabeab72e88f5055721c785003a2fde80f79bc64\"\u003e\u003ccode\u003efabeab7\u003c/code\u003e\u003c/a\u003e Release v2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/af956e1416aee2ea2cecc9fb94cd892affe6d6d2\"\u003e\u003ccode\u003eaf956e1\u003c/code\u003e\u003c/a\u003e Use nox for CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/e0005c47e2147affc7cf0d19fdf0ac37f981afcf\"\u003e\u003ccode\u003ee0005c4\u003c/code\u003e\u003c/a\u003e Delegate to nox to run the tests from the justfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/61df307700bd89e1616bb355e43e8a124e58130a\"\u003e\u003ccode\u003e61df307\u003c/code\u003e\u003c/a\u003e Add test_earliest_dependencies to noxfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/736e4d3d9eea0bb37e2edaad6aceff3dbb7f8a4f\"\u003e\u003ccode\u003e736e4d3\u003c/code\u003e\u003c/a\u003e Add noxfile for testing under each Python version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/5cea377fb0efe90b912f16ff9bb49c20aa6cdf1d\"\u003e\u003ccode\u003e5cea377\u003c/code\u003e\u003c/a\u003e Add ability to run nox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/521b90be68f8840e4ca08277c8f9837392bc75a7\"\u003e\u003ccode\u003e521b90b\u003c/code\u003e\u003c/a\u003e Tweak lowest dependencies of ui\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/903a61d06153bb8e8273a0cdcde8c5b27a650b1c\"\u003e\u003ccode\u003e903a61d\u003c/code\u003e\u003c/a\u003e Don't run tests for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/b447e69eb564b28757fc3beb06ee5c4066054067\"\u003e\u003ccode\u003eb447e69\u003c/code\u003e\u003c/a\u003e Move httpx to dev dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seddonym/import-linter/commit/230b22cbd05b485c0355e7a8ced634a7ab3fb782\"\u003e\u003ccode\u003e230b22c\u003c/code\u003e\u003c/a\u003e Rename dev-no-ui to dev-minimal\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/seddonym/import-linter/compare/v2.10...v2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003ePlanned Changes to Defaults and Flags in Mypy 2.0\u003c/h3\u003e\n\u003cp\u003eAs a reminder, we are planning to enable \u003ccode\u003e--local-partial-types\u003c/code\u003e by default in mypy 2.0, which\nwill likely be the next feature release. This will often require at least minor code changes. This\noption is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon\nmodes consistent.\u003c/p\u003e\n\u003cp\u003eNote that this release improves the compatibility of \u003ccode\u003e--local-partial-types\u003c/code\u003e significantly to\nmake the switch easier (see below for more).\u003c/p\u003e\n\u003cp\u003eThis can also be configured in a mypy configuration file (use \u003ccode\u003eFalse\u003c/code\u003e to disable):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003elocal_partial_types = True\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe will also enable \u003ccode\u003e--strict-bytes\u003c/code\u003e by default in mypy 2.0. This usually requires at most\nminor code changes to adopt. For more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e will be renamed to \u003ccode\u003e--allow-redefinition\u003c/code\u003e. If you want\nto continue using the older \u003ccode\u003e--allow-redefinition\u003c/code\u003e semantics which are less flexible (e.g.\nlimited support for conditional redefinitions), you can switch to \u003ccode\u003e--allow-redefinition-old\u003c/code\u003e,\nwhich is currently supported as an alias to the legacy \u003ccode\u003e--allow-redefinition\u003c/code\u003e behavior.\nTo use \u003ccode\u003e--allow-redefinition\u003c/code\u003e in the upcoming mypy 2.0, you ...\n\n_Description has been truncated_","html_url":"https://github.com/takashi1minami/oss-dify-mirror/pull/64","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/takashi1minami%2Foss-dify-mirror/issues/64","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/64/packages"}},{"old_version":"3.8.0.20250708","new_version":"3.10.2.20260211","update_type":"minor","path":null,"pr_created_at":"2026-03-01T13:57:22.000Z","version_change":"3.8.0.20250708 → 3.10.2.20260211","issue":{"uuid":"4007265965","node_id":"PR_kwDON42vC87HIUN1","number":64,"state":"closed","title":"build(deps): Bump the minor group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["part:tooling","type:tech-debt"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-18T10:59:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T13:57:22.000Z","updated_at":"2026-04-18T10:59:34.000Z","time_to_close":4136530,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"minor","update_count":7,"packages":[{"name":"grpcio","old_version":"1.73.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"markdown","old_version":"3.8.2","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocs-macros-plugin","old_version":"1.3.7","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"mkdocs-material","old_version":"9.6.21","new_version":"9.7.3","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mypy","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"types-markdown","old_version":"3.8.0.20250708","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"grpcio-tools","old_version":"1.73.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio](https://github.com/grpc/grpc) | `1.73.1` | `1.78.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8.2` | `3.10.2` |\n| [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin) | `1.3.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.21` | `9.7.3` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.19.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.8.0.20250708` | `3.10.2.20260211` |\n| [grpcio-tools](https://github.com/grpc/grpc) | `1.73.1` | `1.78.0` |\n\n\nUpdates `grpcio` from 1.73.1 to 1.78.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.78.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.78.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egutsy\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadding address_sorting dep in naming test build. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41045\"\u003e#41045\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41358\"\u003e#41358\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[python] aio: fix race condition causing \u003ccode\u003easyncio.run()\u003c/code\u003e to hang forever during the shutdown process. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40989\"\u003e#40989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Migrate to pyproject.toml build system from setup.py builds. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40833\"\u003e#40833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Log error details when ExecuteBatchError occurs (at DEBUG level). (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40921\"\u003e#40921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Update setuptools min version to 77.0.1 . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40931\"\u003e#40931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRuby\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ruby] Fix version comparison for the ruby_abi_version symbol for ruby 4 compatibility. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41061\"\u003e#41061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.78.0-pre2\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.78.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/5e6ba94242b92e363220bc2163d55ce3554d4ecc\"\u003e\u003ccode\u003e5e6ba94\u003c/code\u003e\u003c/a\u003e [build] add missing includes (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41518\"\u003e#41518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e364c5ca7f28da753be233b4f1966ab309c01ed3\"\u003e\u003ccode\u003ee364c5c\u003c/code\u003e\u003c/a\u003e [PHP] ignore PHPUnit security advisory in Mac build (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea4d6271b2a3e94c1549317cc1e523be8f294dee\"\u003e\u003ccode\u003eea4d627\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41489\"\u003e#41489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/9840ecd84d075e53d5a01b93e3ea7c71cb641944\"\u003e\u003ccode\u003e9840ecd\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre2 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41397\"\u003e#41397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea1d162a851c178dad9e8f90d7172c44228a93cb\"\u003e\u003ccode\u003eea1d162\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/818a08f379de39de0dc594ac063b0ce99875ec47\"\u003e\u003ccode\u003e818a08f\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][PHP] Fix runtime error with PHp8.5 alpha because zend_exc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7f13023412c1a589af7558eb0b9f8f664a76431\"\u003e\u003ccode\u003ef7f1302\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Build] Move xds-protos templates to the new path (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/4\"\u003e#4\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a38203462e4e64bc847942f08b6dffb780e5e70b\"\u003e\u003ccode\u003ea382034\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre1 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41290\"\u003e#41290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/8d22d6239230b9f3c446f0bac719e46460cbdb30\"\u003e\u003ccode\u003e8d22d62\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 52.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41288\"\u003e#41288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ad19eab6500686839bb7ff14ec8f2a8463a32a57\"\u003e\u003ccode\u003ead19eab\u003c/code\u003e\u003c/a\u003e [PH2][Settings][Security]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.73.1...v1.78.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.8.2 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.8.2...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.7 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.21 to 9.7.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.2\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to \u003ccode\u003emkdocs build\u003c/code\u003e about impending MkDocs 2.0 incompatibility (doesn't affect strict mode)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.1\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is now in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features. Going forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the Insiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote on deprecated plugins\u003c/strong\u003e: The [projects] and [typeset] plugins are included in this release, but must be considered deprecated. Both plugins proved unsustainable to maintain and represent architectural dead ends. They are provided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eChanges\u003c/strong\u003e:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pinned blog posts and author profiles\u003c/li\u003e\n\u003cli\u003eAdded support for customizing pagination for blog index pages\u003c/li\u003e\n\u003cli\u003eAdded support for customizing blog category sort order\u003c/li\u003e\n\u003cli\u003eAdded support for staying on page when switching languages\u003c/li\u003e\n\u003cli\u003eAdded support for disabling tags in table of contents\u003c/li\u003e\n\u003cli\u003eAdded support for nested tags and shadow tags\u003c/li\u003e\n\u003cli\u003eAdded support for footnote tooltips\u003c/li\u003e\n\u003cli\u003eAdded support for instant previews\u003c/li\u003e\n\u003cli\u003eAdded support for instant prefetching\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card layouts\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card background images\u003c/li\u003e\n\u003cli\u003eAdded support for selectable rangs in code blocks\u003c/li\u003e\n\u003cli\u003eAdded support for custom selectors for code annotations\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/da5d442f904d0c938f4dadc384a7126e8ce30cd0\"\u003e\u003ccode\u003eda5d442\u003c/code\u003e\u003c/a\u003e Prepare 9.7.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/03e8baecdcb62bf3478b68487c2a1fa61a4c938c\"\u003e\u003ccode\u003e03e8bae\u003c/code\u003e\u003c/a\u003e Fixed order of imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/70dee38366615652d7198ae85ff208a4b4c0e80d\"\u003e\u003ccode\u003e70dee38\u003c/code\u003e\u003c/a\u003e Switched warning message to print to stderr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b78109b36b2aaf39a02eb2b75af6df856f0c5600\"\u003e\u003ccode\u003eb78109b\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/e1dd2c88ecd26810050bacf2e67f47a0c2cee4ba\"\u003e\u003ccode\u003ee1dd2c8\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6972761d8202f0aafb6f3ea7177c39c65337a978\"\u003e\u003ccode\u003e6972761\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/e21a119e38f7bca184e469eaeefa3d5535e5022b\"\u003e\u003ccode\u003ee21a119\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d5654b500a7021625d3c78f59842805c45e7b65a\"\u003e\u003ccode\u003ed5654b5\u003c/code\u003e\u003c/a\u003e Prepare 9.7.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b18af2f74a98e0d54f7f11b4e029d7ea29166df3\"\u003e\u003ccode\u003eb18af2f\u003c/code\u003e\u003c/a\u003e Opened up version ranges in optional dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/39cdfbd87c80079cd06a6d2a953cd53f531db61d\"\u003e\u003ccode\u003e39cdfbd\u003c/code\u003e\u003c/a\u003e Added social card for blog post\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.21...9.7.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.17.1 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.17.1...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.8.0.20250708 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-tools` from 1.73.1 to 1.78.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.78.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.78.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egutsy\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadding address_sorting dep in naming test build. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41045\"\u003e#41045\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41358\"\u003e#41358\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[python] aio: fix race condition causing \u003ccode\u003easyncio.run()\u003c/code\u003e to hang forever during the shutdown process. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40989\"\u003e#40989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Migrate to pyproject.toml build system from setup.py builds. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40833\"\u003e#40833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Log error details when ExecuteBatchError occurs (at DEBUG level). (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40921\"\u003e#40921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Update setuptools min version to 77.0.1 . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40931\"\u003e#40931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRuby\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ruby] Fix version comparison for the ruby_abi_version symbol for ruby 4 compatibility. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41061\"\u003e#41061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.78.0-pre2\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.78.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.78.0 (gutsy).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/5e6ba94242b92e363220bc2163d55ce3554d4ecc\"\u003e\u003ccode\u003e5e6ba94\u003c/code\u003e\u003c/a\u003e [build] add missing includes (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41518\"\u003e#41518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e364c5ca7f28da753be233b4f1966ab309c01ed3\"\u003e\u003ccode\u003ee364c5c\u003c/code\u003e\u003c/a\u003e [PHP] ignore PHPUnit security advisory in Mac build (backport to 1.78.x) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea4d6271b2a3e94c1549317cc1e523be8f294dee\"\u003e\u003ccode\u003eea4d627\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41489\"\u003e#41489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/9840ecd84d075e53d5a01b93e3ea7c71cb641944\"\u003e\u003ccode\u003e9840ecd\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre2 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41397\"\u003e#41397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ea1d162a851c178dad9e8f90d7172c44228a93cb\"\u003e\u003ccode\u003eea1d162\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023 for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/818a08f379de39de0dc594ac063b0ce99875ec47\"\u003e\u003ccode\u003e818a08f\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][PHP] Fix runtime error with PHp8.5 alpha because zend_exc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7f13023412c1a589af7558eb0b9f8f664a76431\"\u003e\u003ccode\u003ef7f1302\u003c/code\u003e\u003c/a\u003e [Backport][v1.78.x][Fix][Build] Move xds-protos templates to the new path (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/4\"\u003e#4\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a38203462e4e64bc847942f08b6dffb780e5e70b\"\u003e\u003ccode\u003ea382034\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.78.0-pre1 (on v1.78.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41290\"\u003e#41290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/8d22d6239230b9f3c446f0bac719e46460cbdb30\"\u003e\u003ccode\u003e8d22d62\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 52.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41288\"\u003e#41288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ad19eab6500686839bb7ff14ec8f2a8463a32a57\"\u003e\u003ccode\u003ead19eab\u003c/code\u003e\u003c/a\u003e [PH2][Settings][Security]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.73.1...v1.78.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/frequenz-floss/frequenz-api-assets/pull/64","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Ffrequenz-api-assets/issues/64","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/64/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":null,"pr_created_at":"2026-02-22T02:03:08.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3973322702","node_id":"PR_kwDOG1Zs187FZyLR","number":12136,"state":"open","title":"Chore(deps): Bump the utilities-patch group across 1 directory with 10 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-22T02:03:08.000Z","updated_at":"2026-02-22T02:12:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":10,"packages":[{"name":"django-soft-delete","old_version":"1.0.22","new_version":"1.0.23","repository_url":"https://github.com/san4ezy/django_softdelete"},{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-llms-openai","old_version":"0.6.18","new_version":"0.6.19"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"sentence-transformers","old_version":"5.2.2","new_version":"5.2.3","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"zensical","old_version":"0.0.21","new_version":"0.0.23","repository_url":"https://github.com/zensical/zensical"},{"name":"prek","old_version":"0.3.2","new_version":"0.3.3","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.2","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 10 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-soft-delete](https://github.com/san4ezy/django_softdelete) | `1.0.22` | `1.0.23` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.15` |\n| llama-index-llms-openai | `0.6.18` | `0.6.19` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.2` | `5.2.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.21` | `0.0.23` |\n| [prek](https://github.com/j178/prek) | `0.3.2` | `0.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.2` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\n\nUpdates `django-soft-delete` from 1.0.22 to 1.0.23\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/san4ezy/django_softdelete/blob/master/CHANGELOG.md\"\u003edjango-soft-delete's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.0.23] - 2026-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ealters_data = True\u003c/code\u003e attribute to \u003ccode\u003erestore()\u003c/code\u003e, \u003ccode\u003edelete()\u003c/code\u003e, and \u003ccode\u003ehard_delete()\u003c/code\u003e methods on both models and querysets. This prevents these methods from being accidentally executed from Django templates, following Django security best practices (Issue \u003ca href=\"https://redirect.github.com/san4ezy/django_softdelete/issues/67\"\u003e#67\u003c/a\u003e). Issue described here: \u003ca href=\"https://redirect.github.com/san4ezy/django_softdelete/issues/67\"\u003esan4ezy/django_softdelete#67\u003c/a\u003e .\u003c/li\u003e\n\u003cli\u003eAdded regression tests to ensure data-altering methods remain protected from template execution.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/san4ezy/django_softdelete/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-llms-openai` from 0.6.18 to 0.6.19\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `sentence-transformers` from 5.2.2 to 5.2.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/eae47949a4cd318cee9c7812da8b2d955230f98f\"\u003e\u003ccode\u003eeae4794\u003c/code\u003e\u003c/a\u003e Release v5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/1a6b4e6180b00d298c2321fffd96e569c0da70c5\"\u003e\u003ccode\u003e1a6b4e6\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003ecompat\u003c/code\u003e] Introduce Transformers v5.2 compatibility: trainer _nested_gather ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.2.2...v5.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.21 to 0.0.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003ch1\u003eSummary\u003c/h1\u003e\n\u003cp\u003eThis version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e10b5162 \u003cstrong\u003ecompat\u003c/strong\u003e – lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.22\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version adds support for the \u003ca href=\"https://github.com/mkdocstrings/autorefs\"\u003eautorefs\u003c/a\u003e plugin, and further improves performance for large mkdocstrings projects. The \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e is updated to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.7\"\u003ev0.0.7\u003c/a\u003e, which fixes some isses with the mobile browsering experience.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ee32ab15 \u003cstrong\u003ezensical\u003c/strong\u003e, \u003cstrong\u003ecompat\u003c/strong\u003e – support autorefs plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1b1fd84 \u003cstrong\u003ezensical\u003c/strong\u003e – reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003ee33c972 \u003cstrong\u003ecompat\u003c/strong\u003e – don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003eb3c699b \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003ee233f9f \u003cstrong\u003ecompat\u003c/strong\u003e – fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee3fc49f \u003cstrong\u003ezensical\u003c/strong\u003e – relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/d9462afc011bdfce4b948e0c1aa71af56144cf9f\"\u003e\u003ccode\u003ed9462af\u003c/code\u003e\u003c/a\u003e chore: release v0.0.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/10b5162aa6782983ebdbdd6445030d9a309579a8\"\u003e\u003ccode\u003e10b5162\u003c/code\u003e\u003c/a\u003e fix: lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7b845d9212787f972ab7d9e4b7c363121e3c50fa\"\u003e\u003ccode\u003e7b845d9\u003c/code\u003e\u003c/a\u003e chore: release v0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1b1fd8458d4a372d85c8a255618f6eb7354204b3\"\u003e\u003ccode\u003e1b1fd84\u003c/code\u003e\u003c/a\u003e fix: reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e33c972e03fe69e69ab6774bbda8ce5652fdc848\"\u003e\u003ccode\u003ee33c972\u003c/code\u003e\u003c/a\u003e fix: don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/b3c699ba45b0db862f8230832b21b2463690c99f\"\u003e\u003ccode\u003eb3c699b\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/8352b1a14f2f7ffc82e10eefee959f5e6f6d2fde\"\u003e\u003ccode\u003e8352b1a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003ezrx\u003c/code\u003e to v0.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e32ab15b1fe6bd81f1a66780e6084f563165e1c1\"\u003e\u003ccode\u003ee32ab15\u003c/code\u003e\u003c/a\u003e feature: support autorefs plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e233f9f7d4520e8a6a382c05b9250149e63ce58b\"\u003e\u003ccode\u003ee233f9f\u003c/code\u003e\u003c/a\u003e fix: fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e3fc49f72fb299f467557edabda6a004c84597fd\"\u003e\u003ccode\u003ee3fc49f\u003c/code\u003e\u003c/a\u003e fix: relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.21...v0.0.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.2 to 0.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.3\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c741c8c277d97f206aea369c4e69405fafc3cf29\"\u003e\u003ccode\u003ec741c8c\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1655\"\u003e#1655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7c52973ec0009f7074ea55afefc81a1314456c07\"\u003e\u003ccode\u003e7c52973\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.10.2 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1639\"\u003e#1639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34d30bc543d024851f07b33cbd33f7dc6cabdf08\"\u003e\u003ccode\u003e34d30bc\u003c/code\u003e\u003c/a\u003e docs: add prek usage reference for homeassistant Powercalc project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/97c3e0dd0eeee4e27ef663af6749bf50a5f86b84\"\u003e\u003ccode\u003e97c3e0d\u003c/code\u003e\u003c/a\u003e Update Rust crate async-compression to v0.4.39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/903e324bfe77564b195b9d63033cdda655548c09\"\u003e\u003ccode\u003e903e324\u003c/code\u003e\u003c/a\u003e Update Rust crate clap to v4.5.58\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/6412d77cc7deb77914aee5d94c38f526dea48fd8\"\u003e\u003ccode\u003e6412d77\u003c/code\u003e\u003c/a\u003e Update Rust crate clap_complete to v4.5.66 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/04b4a7226c36ac44fdc9c0d29fe05c4a4f04b4e7\"\u003e\u003ccode\u003e04b4a72\u003c/code\u003e\u003c/a\u003e Update Rust crate libc to v0.2.182\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e9e1850c0a92e4c6134b34185e4395a2bd553cf9\"\u003e\u003ccode\u003ee9e1850\u003c/code\u003e\u003c/a\u003e Update Rust crate lazy-regex to v3.6.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e024d65e172ccb6838e64753b91781a584029360\"\u003e\u003ccode\u003ee024d65\u003c/code\u003e\u003c/a\u003e Update Rust crate memchr to v2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/cd79359265f00a7684f94f0b5bff2b3ddccc350d\"\u003e\u003ccode\u003ecd79359\u003c/code\u003e\u003c/a\u003e Update Rust crate indicatif to v0.18.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1644\"\u003e#1644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.2...v0.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.2\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eExpand the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23385\"\u003e#23385\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eIn preview, Ruff now enables a significantly expanded default rule set of 412 rules, up from the stable default set of 59 rules. The new rules are mostly a superset of the stable defaults, with the exception of these rules, which are removed from the preview defaults:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-imports-on-one-line\"\u003e\u003ccode\u003emultiple-imports-on-one-line\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE401\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE402\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE701\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-statements-on-one-line-semicolon\"\u003e\u003ccode\u003emultiple-statements-on-one-line-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE702\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/useless-semicolon\"\u003e\u003ccode\u003euseless-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE703\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/none-comparison\"\u003e\u003ccode\u003enone-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE711\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/true-false-comparison\"\u003e\u003ccode\u003etrue-false-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE712\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-in-test\"\u003e\u003ccode\u003enot-in-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE713\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-is-test\"\u003e\u003ccode\u003enot-is-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE714\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/type-comparison\"\u003e\u003ccode\u003etype-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE721\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lambda-assignment\"\u003e\u003ccode\u003elambda-assignment\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE731\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-variable-name\"\u003e\u003ccode\u003eambiguous-variable-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE741\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-class-name\"\u003e\u003ccode\u003eambiguous-class-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE742\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-function-name\"\u003e\u003ccode\u003eambiguous-function-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE743\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star\"\u003e\u003ccode\u003eundefined-local-with-import-star\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF403\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF405\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/forward-annotation-syntax-error\"\u003e\u003ccode\u003eforward-annotation-syntax-error\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF722\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you use preview and prefer the old defaults, you can restore them with configuration like:\u003c/p\u003e\n\u003cpre lang=\"toml\"\u003e\u003ccode\u003e\r\n# ruff.toml\r\n\u003cp\u003e[lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\u003c/p\u003e\n\u003ch1\u003epyproject.toml\u003c/h1\u003e\n\u003cp\u003e[tool.ruff.lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIf you do give them a try, feel free to share your feedback in the \u003ca href=\"https://github.com/astral-sh/ruff/discussions/23203\"\u003eGitHub discussion\u003c/a\u003e!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Also check string annotations (\u003ccode\u003ePYI041\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19023\"\u003e#19023\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.2\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eExpand the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23385\"\u003e#23385\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eIn preview, Ruff now enables a significantly expanded default rule set of 412\nrules, up from the stable default set of 59 rules. The new rules are mostly a\nsuperset of the stable defaults, with the exception of these rules, which are\nremoved from the preview defaults:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-imports-on-one-line\"\u003e\u003ccode\u003emultiple-imports-on-one-line\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE401\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE402\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file\"\u003e\u003ccode\u003emodule-import-not-at-top-of-file\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE701\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/multiple-statements-on-one-line-semicolon\"\u003e\u003ccode\u003emultiple-statements-on-one-line-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE702\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/useless-semicolon\"\u003e\u003ccode\u003euseless-semicolon\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE703\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/none-comparison\"\u003e\u003ccode\u003enone-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE711\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/true-false-comparison\"\u003e\u003ccode\u003etrue-false-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE712\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-in-test\"\u003e\u003ccode\u003enot-in-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE713\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/not-is-test\"\u003e\u003ccode\u003enot-is-test\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE714\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/type-comparison\"\u003e\u003ccode\u003etype-comparison\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE721\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lambda-assignment\"\u003e\u003ccode\u003elambda-assignment\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE731\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-variable-name\"\u003e\u003ccode\u003eambiguous-variable-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE741\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-class-name\"\u003e\u003ccode\u003eambiguous-class-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE742\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/ambiguous-function-name\"\u003e\u003ccode\u003eambiguous-function-name\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eE743\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star\"\u003e\u003ccode\u003eundefined-local-with-import-star\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF403\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF405\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/forward-annotation-syntax-error\"\u003e\u003ccode\u003eforward-annotation-syntax-error\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF722\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you use preview and prefer the old defaults, you can restore them with\nconfiguration like:\u003c/p\u003e\n\u003cpre lang=\"toml\"\u003e\u003ccode\u003e\n# ruff.toml\n\u003cp\u003e[lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\u003c/p\u003e\n\u003ch1\u003epyproject.toml\u003c/h1\u003e\n\u003cp\u003e[tool.ruff.lint]\nselect = [\u0026quot;E4\u0026quot;, \u0026quot;E7\u0026quot;, \u0026quot;E9\u0026quot;, \u0026quot;F\u0026quot;]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIf you do give them a try, feel free to share your feedback in the \u003ca href=\"https://github.com/astral-sh/ruff/discussions/23203\"\u003eGitHub\ndiscussion\u003c/a\u003e!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9d18ee9115f9cbb4c21478baa7c1fa2b46e0759c\"\u003e\u003ccode\u003e9d18ee9\u003c/code\u003e\u003c/a\u003e Hard code workflow name and \u003ccode\u003ecancel-in-progress\u003c/code\u003e only for PRs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23431\"\u003e#23431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc15f024b931fe56365f40de3fab01219c092c4\"\u003e\u003ccode\u003e7cc15f0\u003c/code\u003e\u003c/a\u003e Bump 0.15.2 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23430\"\u003e#23430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d1b544393ae9cddd8e48ebee8dbfd54bda89f375\"\u003e\u003ccode\u003ed1b5443\u003c/code\u003e\u003c/a\u003e Add extension mapping to configuration file options (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23384\"\u003e#23384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/222574af90c5c0ca8f84c8385cf30c7c10ac2496\"\u003e\u003ccode\u003e222574a\u003c/code\u003e\u003c/a\u003e Expand the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23385\"\u003e#23385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1465b5de3829549b45397e9587b83ab7ac6d26d0\"\u003e\u003ccode\u003e1465b5d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-async\u003c/code\u003e] Fix \u003ccode\u003ein_async_context\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23426\"\u003e#23426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/410902fa401afda969cc000f13be341896e6868e\"\u003e\u003ccode\u003e410902f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Fix handling of \u003ccode\u003etyping.{io,re}\u003c/code\u003e (\u003ccode\u003eUP035\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23131\"\u003e#23131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/729610acd9e19f57526e8ca40f355626154826bb\"\u003e\u003ccode\u003e729610a\u003c/code\u003e\u003c/a\u003e [ty] Fall back to ambiguous for large control flow graphs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23399\"\u003e#23399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1425c185b0a47be87112762f65b5bf7e323fb950\"\u003e\u003ccode\u003e1425c18\u003c/code\u003e\u003c/a\u003e [ty] Add code folding support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/97acaaea5f993f33d3f5bb27c5db760a2f3d1e8a\"\u003e\u003ccode\u003e97acaae\u003c/code\u003e\u003c/a\u003e [ty] Fix stack overflow for self-referential \u003ccode\u003eTypeOf\u003c/code\u003e in annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23407\"\u003e#23407\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1f380c82584a6dab7e8715bc7dd5ae187da1e69a\"\u003e\u003ccode\u003e1f380c8\u003c/code\u003e\u003c/a\u003e [ty] Update tests \u003ccode\u003ereveal_type\u003c/code\u003e and \u003ccode\u003eNever\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23418\"\u003e#23418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12136","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12136","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12136/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":null,"pr_created_at":"2026-02-20T20:26:43.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3970246270","node_id":"PR_kwDOG1Zs187FQPet","number":12127,"state":"open","title":"Chore(deps): Bump the utilities-patch group with 7 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-20T20:26:43.000Z","updated_at":"2026-02-22T04:00:19.588Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":7,"packages":[{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.15","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-llms-openai","old_version":"0.6.18","new_version":"0.6.19"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"sentence-transformers","old_version":"5.2.2","new_version":"5.2.3","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"prek","old_version":"0.3.2","new_version":"0.3.3","repository_url":"https://github.com/j178/prek"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.15` |\n| llama-index-llms-openai | `0.6.18` | `0.6.19` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.2` | `5.2.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [prek](https://github.com/j178/prek) | `0.3.2` | `0.3.3` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.15\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-18]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[Integration] AgentMesh: Trust Layer for LlamaIndex Agents (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20644\"\u003e#20644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.15]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport basic operations for multimodal types (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20640\"\u003e#20640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat recursive llm type support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20642\"\u003e#20642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: remove redundant metadata_seperator field from TextNode (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): update mock prompt type in mock_prompts.py (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20661\"\u003e#20661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal template var formatting (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20682\"\u003e#20682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal prompt templates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20683\"\u003e#20683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat multimodal chat prompt helper (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20684\"\u003e#20684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eensure at least one message/content block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-ibm [0.6.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.9]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSonnet 4-6 addition (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20723\"\u003e#20723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.10]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(bedrock-converse): ensure thinking_delta is populated in all chat modes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20664\"\u003e#20664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Sonnet 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20726\"\u003e#20726\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-ibm [0.7.0.post1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Remove persistent_connection parameter support, update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20714\"\u003e#20714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: Update IBM docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20718\"\u003e#20718\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-mistralai [0.10.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRrubini/mistral azure sdk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20668\"\u003e#20668\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-oci-data-science [1.0.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for new OCI DataScience endpoint /predictWithStream for streaming use case (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20545\"\u003e#20545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-observability-otel [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove otel data serialization by flattening dicts (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20719\"\u003e#20719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: support custom span processor; refactor: use llama-index-instrumentation instead of llama-index-core (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20732\"\u003e#20732\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-program-evaporate [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSandbox LLM-generated code execution in EvaporateExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20676\"\u003e#20676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-readers-bitbucket [0.4.2]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/4937fc017cbf91d08c6beaadb790ae44745a87a1\"\u003e\u003ccode\u003e4937fc0\u003c/code\u003e\u003c/a\u003e Release 0.14.15 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20735\"\u003e#20735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/98698936ec2cccaf8eb78018176d6d6da8daaee2\"\u003e\u003ccode\u003e9869893\u003c/code\u003e\u003c/a\u003e feat(bedrock-converse): Add support for Nova 2 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20736\"\u003e#20736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/40da24454784980dd4d27135533a1fff779d6929\"\u003e\u003ccode\u003e40da244\u003c/code\u003e\u003c/a\u003e fix(layoutir): restrict requires-python to \u0026gt;=3.12 to match layoutir dependenc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6504188504a5070b43bb0d4633f000e129f51f87\"\u003e\u003ccode\u003e6504188\u003c/code\u003e\u003c/a\u003e feat: support custom span processor; refactor: use llama-index-instrumentatio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/dc716d159cf93c60dca31e2abaca1166877216a2\"\u003e\u003ccode\u003edc716d1\u003c/code\u003e\u003c/a\u003e chore: update issue classifier action to v0.2.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20734\"\u003e#20734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6d0aff422db769014e384242f7a2130015d71fa5\"\u003e\u003ccode\u003e6d0aff4\u003c/code\u003e\u003c/a\u003e ensure at least one message/conent block is returned by the old memory (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20729\"\u003e#20729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/fdcc72cc362e033a45db52af52be15dad2bab472\"\u003e\u003ccode\u003efdcc72c\u003c/code\u003e\u003c/a\u003e feat: add issue classifier gh action (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20720\"\u003e#20720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/171ae830ad98c22cc69afa043678340536bc7dbe\"\u003e\u003ccode\u003e171ae83\u003c/code\u003e\u003c/a\u003e fix: Update WhatsAppChatLoader to retrieve DataFrame in pandas format (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20722\"\u003e#20722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/68c760a50d29844f96e56e189e91c676e6445bf9\"\u003e\u003ccode\u003e68c760a\u003c/code\u003e\u003c/a\u003e fix(layoutir): hotfix for output_dir crash and Block extraction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20708\"\u003e#20708\u003c/a\u003e follo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/83f45ce5fcdd3a96c587ab3f86e527addda621f0\"\u003e\u003ccode\u003e83f45ce\u003c/code\u003e\u003c/a\u003e Add retry and error handling to BaseExtractor (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20693\"\u003e#20693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-llms-openai` from 0.6.18 to 0.6.19\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `sentence-transformers` from 5.2.2 to 5.2.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/eae47949a4cd318cee9c7812da8b2d955230f98f\"\u003e\u003ccode\u003eeae4794\u003c/code\u003e\u003c/a\u003e Release v5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/1a6b4e6180b00d298c2321fffd96e569c0da70c5\"\u003e\u003ccode\u003e1a6b4e6\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003ecompat\u003c/code\u003e] Introduce Transformers v5.2 compatibility: trainer _nested_gather ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.2.2...v5.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.2 to 0.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.3\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c741c8c277d97f206aea369c4e69405fafc3cf29\"\u003e\u003ccode\u003ec741c8c\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1655\"\u003e#1655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7c52973ec0009f7074ea55afefc81a1314456c07\"\u003e\u003ccode\u003e7c52973\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.10.2 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1639\"\u003e#1639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34d30bc543d024851f07b33cbd33f7dc6cabdf08\"\u003e\u003ccode\u003e34d30bc\u003c/code\u003e\u003c/a\u003e docs: add prek usage reference for homeassistant Powercalc project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/97c3e0dd0eeee4e27ef663af6749bf50a5f86b84\"\u003e\u003ccode\u003e97c3e0d\u003c/code\u003e\u003c/a\u003e Update Rust crate async-compression to v0.4.39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/903e324bfe77564b195b9d63033cdda655548c09\"\u003e\u003ccode\u003e903e324\u003c/code\u003e\u003c/a\u003e Update Rust crate clap to v4.5.58\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/6412d77cc7deb77914aee5d94c38f526dea48fd8\"\u003e\u003ccode\u003e6412d77\u003c/code\u003e\u003c/a\u003e Update Rust crate clap_complete to v4.5.66 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/04b4a7226c36ac44fdc9c0d29fe05c4a4f04b4e7\"\u003e\u003ccode\u003e04b4a72\u003c/code\u003e\u003c/a\u003e Update Rust crate libc to v0.2.182\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e9e1850c0a92e4c6134b34185e4395a2bd553cf9\"\u003e\u003ccode\u003ee9e1850\u003c/code\u003e\u003c/a\u003e Update Rust crate lazy-regex to v3.6.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e024d65e172ccb6838e64753b91781a584029360\"\u003e\u003ccode\u003ee024d65\u003c/code\u003e\u003c/a\u003e Update Rust crate memchr to v2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/cd79359265f00a7684f94f0b5bff2b3ddccc350d\"\u003e\u003ccode\u003ecd79359\u003c/code\u003e\u003c/a\u003e Update Rust crate indicatif to v0.18.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1644\"\u003e#1644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.2...v0.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12127/packages"}},{"old_version":"3.6.0.20240316","new_version":"3.10.2.20260211","update_type":"minor","path":null,"pr_created_at":"2026-02-20T12:02:39.000Z","version_change":"3.6.0.20240316 → 3.10.2.20260211","issue":{"uuid":"3968222814","node_id":"PR_kwDOLYRIeM7FJib2","number":16,"state":"closed","title":"Bump the optional group with 15 updates","user":"dependabot[bot]","labels":["part:tooling"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-20T12:04:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-20T12:02:39.000Z","updated_at":"2026-02-20T12:04:44.000Z","time_to_close":123,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"optional","update_count":15,"packages":[{"name":"flake8","old_version":"7.0.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"flake8-pyproject","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/john-hen/Flake8-pyproject"},{"name":"pydoclint","old_version":"0.4.1","new_version":"0.8.3","repository_url":"https://github.com/jsh9/pydoclint"},{"name":"markdown","old_version":"3.6","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mike","old_version":"2.1.1","new_version":"2.1.3","repository_url":"https://github.com/jimporter/mike"},{"name":"mkdocs-gen-files","old_version":"0.5.0","new_version":"0.6.0","repository_url":"https://github.com/oprypin/mkdocs-gen-files"},{"name":"mkdocs-literate-nav","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-macros-plugin","old_version":"1.0.5","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"mkdocs-material","old_version":"9.5.25","new_version":"9.7.2","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"frequenz-repo-config","old_version":"0.9.2","new_version":"0.14.0"},{"name":"mypy","old_version":"1.10.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"types-markdown","old_version":"3.6.0.20240316","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"frequenz-repo-config","old_version":"0.9.2","new_version":"0.14.0"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"async-solipsism","old_version":"0.6","new_version":"0.9","repository_url":"https://github.com/bmerry/async-solipsism"}],"path":null,"ecosystem":"pip"},"body":"Bumps the optional group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [flake8-pyproject](https://github.com/john-hen/Flake8-pyproject) | `1.2.3` | `1.2.4` |\n| [pydoclint](https://github.com/jsh9/pydoclint) | `0.4.1` | `0.8.3` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.6` | `3.10.2` |\n| [mike](https://github.com/jimporter/mike) | `2.1.1` | `2.1.3` |\n| [mkdocs-gen-files](https://github.com/oprypin/mkdocs-gen-files) | `0.5.0` | `0.6.0` |\n| [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) | `0.6.1` | `0.6.2` |\n| [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin) | `1.0.5` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.25` | `9.7.2` |\n| [frequenz-repo-config[lib]](https://github.com/frequenz-floss/frequenz-repo-config-python) | `0.9.2` | `0.14.0` |\n| [mypy](https://github.com/python/mypy) | `1.10.0` | `1.19.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.6.0.20240316` | `3.10.2.20260211` |\n| [frequenz-repo-config[extra-lint-examples]](https://github.com/frequenz-floss/frequenz-repo-config-python) | `0.9.2` | `0.14.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [async-solipsism](https://github.com/bmerry/async-solipsism) | `0.6` | `0.9` |\n\nUpdates `flake8` from 7.0.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/c48217e1fc006c2dddd14df54e83b67da15de5cd\"\u003e\u003ccode\u003ec48217e\u003c/code\u003e\u003c/a\u003e Release 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f9e0f33281d5bb892cae2c674ac398439d99c732\"\u003e\u003ccode\u003ef9e0f33\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1986\"\u003e#1986\u003c/a\u003e from PyCQA/document-f542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6bcdb628597fa2d03494965089ff87a492ffc1e9\"\u003e\u003ccode\u003e6bcdb62\u003c/code\u003e\u003c/a\u003e document F542\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/70a15b8890d5bdf8c449ebb1b5259bd0140cc16b\"\u003e\u003ccode\u003e70a15b8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1985\"\u003e#1985\u003c/a\u003e from PyCQA/upgrade-deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/4941a3e32e54488698ecbc23993bfeb2a60c0fc5\"\u003e\u003ccode\u003e4941a3e\u003c/code\u003e\u003c/a\u003e upgrade pyflakes / pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/23e4005c5501999c29e1e3774de7ed18d1e4e22d\"\u003e\u003ccode\u003e23e4005\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1983\"\u003e#1983\u003c/a\u003e from PyCQA/py314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/019424b80d3d7d5d8a2a1638f5877080546e3f46\"\u003e\u003ccode\u003e019424b\u003c/code\u003e\u003c/a\u003e add support for t-strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/6b6f3d5fefecc994a06f425c18c3cddc9b71e4a4\"\u003e\u003ccode\u003e6b6f3d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1980\"\u003e#1980\u003c/a\u003e from PyCQA/asottile-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/8dfa6695b4fb1e1401b357367a0a71037d29f6aa\"\u003e\u003ccode\u003e8dfa669\u003c/code\u003e\u003c/a\u003e add rtd sphinx config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/ce3411118382d9332feb2749c8f417d10bfa2584\"\u003e\u003ccode\u003ece34111\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/1976\"\u003e#1976\u003c/a\u003e from PyCQA/document-f824\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.0.0...7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8-pyproject` from 1.2.3 to 1.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-hen/Flake8-pyproject/releases\"\u003eflake8-pyproject's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes typo in name of meta variable in \u003ccode\u003e--toml-config\u003c/code\u003e help message. (\u003ca href=\"https://redirect.github.com/john-hen/Flake8-pyproject/issues/21\"\u003e#21\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRegisters GitHub repo as trusted publisher for PyPI releases. (\u003ca href=\"https://redirect.github.com/john-hen/Flake8-pyproject/issues/38\"\u003e#38\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/3c516a9319beee324f9a200dfb4e08677de4a63f\"\u003e\u003ccode\u003e3c516a9\u003c/code\u003e\u003c/a\u003e Bumped version to 1.2.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/df70f19558f784eb0cb7988440735d56f53f3cae\"\u003e\u003ccode\u003edf70f19\u003c/code\u003e\u003c/a\u003e Added GitHub workflow for releases on PyPI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/d46e99c695149cd860a918c354de0d1d89166b7e\"\u003e\u003ccode\u003ed46e99c\u003c/code\u003e\u003c/a\u003e Only run scheduled test weekly instead of nightly.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/da0b9ed7d586490aff8503e38f2d481c1706bdee\"\u003e\u003ccode\u003eda0b9ed\u003c/code\u003e\u003c/a\u003e Added link to GitHub releases as a project URL.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/8e4b87fbe7291687f41b11180c8b3ae486ac538e\"\u003e\u003ccode\u003e8e4b87f\u003c/code\u003e\u003c/a\u003e Cosmetic changes to code format of dev tools in \u003ccode\u003etools\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/4227bd4a987b66a9ab46f0b4e04b098e388598e7\"\u003e\u003ccode\u003e4227bd4\u003c/code\u003e\u003c/a\u003e Use longer names for dev tools in \u003ccode\u003etools\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/3866f48fbcd63231622f54e848268273605be1a8\"\u003e\u003ccode\u003e3866f48\u003c/code\u003e\u003c/a\u003e Mention early on that we need to be called in \u003ccode\u003epyproject.toml\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/40bf63915dabd85a53a7d06c24232a3b278c4b25\"\u003e\u003ccode\u003e40bf639\u003c/code\u003e\u003c/a\u003e Removed configuration and documentation of pre-commit hook.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/9df7abb5a4b1b25f032c7d3f06fd3f074424c471\"\u003e\u003ccode\u003e9df7abb\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-hen/Flake8-pyproject/commit/2c230622c7e81e3f2f6cd632272c92fd6bdda83b\"\u003e\u003ccode\u003e2c23062\u003c/code\u003e\u003c/a\u003e Fixed reporting of code coverage.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/john-hen/Flake8-pyproject/compare/1.2.3...1.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydoclint` from 0.4.1 to 0.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jsh9/pydoclint/releases\"\u003epydoclint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.8.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix baseline renegeration bug by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/275\"\u003ejsh9/pydoclint#275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd config option to allow omitting stars in varargs by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/276\"\u003ejsh9/pydoclint#276\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/277\"\u003ejsh9/pydoclint#277\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.8.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to partially match violation codes by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/272\"\u003ejsh9/pydoclint#272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how multiple \u003cstrong\u003einit\u003c/strong\u003e() are recognized by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/273\"\u003ejsh9/pydoclint#273\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.8.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange logic to detect docstring style mismatch by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/271\"\u003ejsh9/pydoclint#271\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd inline violation suppression for native mode by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/270\"\u003ejsh9/pydoclint#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.7.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefresh linters \u0026amp; formatters by \u003ca href=\"https://github.com/jsh9\"\u003e\u003ccode\u003e@​jsh9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/269\"\u003ejsh9/pydoclint#269\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.7.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003e@property\u003c/code\u003e + \u003ccode\u003e@abstractmethod\u003c/code\u003e without a Returns: section by \u003ca href=\"https://github.com/barometz\"\u003e\u003ccode\u003e@​barometz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/261\"\u003ejsh9/pydoclint#261\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barometz\"\u003e\u003ccode\u003e@​barometz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jsh9/pydoclint/pull/261\"\u003ejsh9/pydoclint#261\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.4...0.7.5\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.4...0.7.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.7.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jsh9/pydoclint/blob/main/CHANGELOG.md\"\u003epydoclint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.8.3] - 2025-11-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded\n\u003cul\u003e\n\u003cli\u003eA new config option \u003ccode\u003e--omit-stars-when-documenting-varargs\u003c/code\u003e (shortform:\n\u003ccode\u003e-oswdv\u003c/code\u003e) so docstrings may describe varargs without the leading \u003ccode\u003e*\u003c/code\u003e\ncharacters (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/268\"\u003ejsh9/pydoclint#268\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed\n\u003cul\u003e\n\u003cli\u003eA bug where \u003ccode\u003e--auto-regenerate-baseline\u003c/code\u003e removes entries of files that have\nnot yet been fixed (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/274\"\u003ejsh9/pydoclint#274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.2...0.8.3\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.8.2] - 2025-11-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded\n\u003cul\u003e\n\u003cli\u003eAbility to partially match violation codes in inline \u003ccode\u003enoqa\u003c/code\u003e in the native\nmode (which \u003cem\u003eflake8\u003c/em\u003e already supports)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed\n\u003cul\u003e\n\u003cli\u003eA bug: when there are more than one \u003ccode\u003e__init__()\u003c/code\u003e in a class (overloaded),\nthe first \u003ccode\u003e__init__()\u003c/code\u003e is incorrectly recognized as the \u0026quot;right\u0026quot; one. (The\nlast \u003ccode\u003e__init__()\u003c/code\u003e should be considered the right one.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.1...0.8.2\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.8.1] - 2025-11-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged\n\u003cul\u003e\n\u003cli\u003eThe logic to detect docstring style mismatches, fixing a false positive\ncase where non-Sphinx style docstrings are detected as Sphinx style\n(because there are some rST keywords in them)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.8.0...0.8.1\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.8.0] - 2025-11-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded\n\u003cul\u003e\n\u003cli\u003eNew functionality: \u003cem\u003epydoclint\u003c/em\u003e native mode can parse \u0026quot;noqa\u0026quot; comments and\nthus users can suppress violations in the native mode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.6...0.8.0\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.7.6] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged\n\u003cul\u003e\n\u003cli\u003eUpdated linter and auto-formatter configurations\u003c/li\u003e\n\u003cli\u003eMade a lot of changes to fix code style; some logic was also updated per\nthe suggestions of linters\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFull diff\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\"\u003ehttps://github.com/jsh9/pydoclint/compare/0.7.5...0.7.6\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/98bb10c4e73a050e31471409df8edfaeb88befb8\"\u003e\u003ccode\u003e98bb10c\u003c/code\u003e\u003c/a\u003e Add config option to allow omitting stars in varargs (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/277\"\u003e#277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/c37407d03df27b4c37b31e697fd474377c3c4efc\"\u003e\u003ccode\u003ec37407d\u003c/code\u003e\u003c/a\u003e Fix baseline renegeration bug (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/276\"\u003e#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/3386cd2ad39784792a0d39d942dd4b26960c2a27\"\u003e\u003ccode\u003e3386cd2\u003c/code\u003e\u003c/a\u003e Fix baseline renegeration bug (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/275\"\u003e#275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/8c1081806da276917ac686a12f0c435414955da0\"\u003e\u003ccode\u003e8c10818\u003c/code\u003e\u003c/a\u003e Fix how multiple \u003cstrong\u003einit\u003c/strong\u003e() are recognized (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/273\"\u003e#273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/51435e3714765f9d4b220c868ab185670f3bb14b\"\u003e\u003ccode\u003e51435e3\u003c/code\u003e\u003c/a\u003e Add ability to partially match violation codes (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/e361239034992fbceac83994e47a40a5e7ecf3ea\"\u003e\u003ccode\u003ee361239\u003c/code\u003e\u003c/a\u003e Change logic to detect docstring style mismatch (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/271\"\u003e#271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/bf4c4021dccf832777452e05e94f98a36c59636b\"\u003e\u003ccode\u003ebf4c402\u003c/code\u003e\u003c/a\u003e Add hyperlink\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/a7585273e2b3c8e84a1883d33a168519947c807f\"\u003e\u003ccode\u003ea758527\u003c/code\u003e\u003c/a\u003e Update --check-style-mismatch explanations in config_options.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/e8ffd8988fe57ce4dc8a0625c3281b24ca396240\"\u003e\u003ccode\u003ee8ffd89\u003c/code\u003e\u003c/a\u003e Add inline violation suppression for native mode (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsh9/pydoclint/commit/0a9ad0c159fe5ced98dbbcd3b850a8850ed009b7\"\u003e\u003ccode\u003e0a9ad0c\u003c/code\u003e\u003c/a\u003e Refresh linters \u0026amp; formatters (\u003ca href=\"https://redirect.github.com/jsh9/pydoclint/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jsh9/pydoclint/compare/0.4.1...0.8.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.6 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.9.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed comment parsing in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed declarations in Python 3.14.\u003c/li\u003e\n\u003cli\u003eFix issue with unclosed HTML tag \u003ccode\u003e\u0026lt;foo\u003c/code\u003e and Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.8.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.2] - 2025-06-19\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.6...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.1 to 2.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.3\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen deploying using a deploy prefix, only delete stale versions of the docs within that prefix\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.1.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove ambiguity of some Git commands so that file and branch names don't collide\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.3 (2024-08-12)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen deploying using a deploy prefix, only delete stale versions of the docs\nwithin that prefix\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003ev2.1.2 (2024-06-23)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove ambiguity of some Git commands so that file and branch names don't\ncollide\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/c4e96085f86e6930e9669e12d81941eff7c3de1d\"\u003e\u003ccode\u003ec4e9608\u003c/code\u003e\u003c/a\u003e Update version to 2.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/3b19e27e9041cca20131f97419a9d7d88f85cf37\"\u003e\u003ccode\u003e3b19e27\u003c/code\u003e\u003c/a\u003e Announce the previous change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/dd9826a855965b0ce6bd06d290665f43ce9dabab\"\u003e\u003ccode\u003edd9826a\u003c/code\u003e\u003c/a\u003e Consult deploy prefix when deleting files during deploy; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/227\"\u003e#227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/91cf5ee70da446a80bbc6108513581d0d6858ecf\"\u003e\u003ccode\u003e91cf5ee\u003c/code\u003e\u003c/a\u003e Properly escape parameters in regex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/90cf1314af3452003eaf40c9f97853efd2ee4e86\"\u003e\u003ccode\u003e90cf131\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/62aaeafe60927b0653b319585cbe4a1a1eb1bc23\"\u003e\u003ccode\u003e62aaeaf\u003c/code\u003e\u003c/a\u003e Update version to 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/3f7d756e26fca03660e6f08927c7cd911e933c78\"\u003e\u003ccode\u003e3f7d756\u003c/code\u003e\u003c/a\u003e Use \u0026quot;--\u0026quot; to disambiguate Git arguments in a few more places; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/218\"\u003e#218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/5e6970d65beaf2c92fa1d22dbf524a931a393e8b\"\u003e\u003ccode\u003e5e6970d\u003c/code\u003e\u003c/a\u003e Belatedly update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/9291efbd6961d652c16c000dc1fe4f2f1e19f94c\"\u003e\u003ccode\u003e9291efb\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.1...v2.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-gen-files` from 0.5.0 to 0.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/releases\"\u003emkdocs-gen-files's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompatibility with MkDocs 1.6 is improved - generated files don't have to have an \u003ccode\u003eabs_src_path\u003c/code\u003e - \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/7baa03225e6c34cc85d17f79c47e42eb2c2e359e\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/commit/7baa03225e6c34cc85d17f79c47e42eb2c2e359e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThere was a bug: using \u003ccode\u003eedit_uri_template\u003c/code\u003e in MkDocs would prevent \u003ccode\u003eset_edit_path()\u003c/code\u003e from working.\nThis is now fixed - \u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/37\"\u003e#37\u003c/a\u003e - thanks to \u003ca href=\"https://github.com/frankkusters\"\u003e\u003ccode\u003e@​frankkusters\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe MkDocs configuration file now can be \u003ccode\u003emkdocs.yaml\u003c/code\u003e, not only \u003ccode\u003emkdocs.yml\u003c/code\u003e. Thanks to \u003ca href=\"https://github.com/mgor\"\u003e\u003ccode\u003e@​mgor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/pull/39\"\u003eoprypin/mkdocs-gen-files#39\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMkDocs 1.4.1 is now the lowest supported version -  \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/2e47124f6a00150b40e2694cfb721d4f373be914\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/commit/2e47124f6a00150b40e2694cfb721d4f373be914\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.9 is now the lowest supported version.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://oprypin.github.io/mkdocs-gen-files/extras.html#programmatically-generating-the-navigation\"\u003enav generator\u003c/a\u003e can support empty paths - \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/440b0bfafa35bd1b1b3b3ed5aaa7b9f11d9cfe7c\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/commit/440b0bfafa35bd1b1b3b3ed5aaa7b9f11d9cfe7c\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/5136a79ab5af156688cca28fb1c081204250159b\"\u003e\u003ccode\u003e5136a79\u003c/code\u003e\u003c/a\u003e v0.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/df9d4dc3fb81edb6b9337e03a24421cc6f040d52\"\u003e\u003ccode\u003edf9d4dc\u003c/code\u003e\u003c/a\u003e Add a workaround that allows edit_uri_template to work in MkDocs 1.6+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/e0e32472a5651f30545354cbd903e26091f50b38\"\u003e\u003ccode\u003ee0e3247\u003c/code\u003e\u003c/a\u003e allow \u003ccode\u003e.yaml\u003c/code\u003e extension for mkdocs configuration file (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/bfe7bbcf0b336d5d9f5d395224b4d063c10c3778\"\u003e\u003ccode\u003ebfe7bbc\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/d56e1d95d927bc53afc5f18ec9ef8167e9b4de13\"\u003e\u003ccode\u003ed56e1d9\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/440b0bfafa35bd1b1b3b3ed5aaa7b9f11d9cfe7c\"\u003e\u003ccode\u003e440b0bf\u003c/code\u003e\u003c/a\u003e Support empty path in \u003ccode\u003eNav\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/85d56eb8ed6eccf1528ca158dbf97c8f0b6bb72e\"\u003e\u003ccode\u003e85d56eb\u003c/code\u003e\u003c/a\u003e Add more lints, update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/1a822d9e0d376d8ecae95fb961144a5af4887ef1\"\u003e\u003ccode\u003e1a822d9\u003c/code\u003e\u003c/a\u003e Update template, fix lints, update docs deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/7baa03225e6c34cc85d17f79c47e42eb2c2e359e\"\u003e\u003ccode\u003e7baa032\u003c/code\u003e\u003c/a\u003e Fix types and compatibility with MkDocs 1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/6fd0fe048ebf928763458d8dba1a476ca2196117\"\u003e\u003ccode\u003e6fd0fe0\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.1 to 0.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/6cc020ab973468678fa4420434ce84ee53ea2208?w=1\"\u003eFix compatibility with MkDocs 1.6+\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire at least MkDocs 1.4\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther refactors, see \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.1...v0.6.2\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.1...v0.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/7423f00fe2c26c879310f76631b8180cb2bb6ace\"\u003e\u003ccode\u003e7423f00\u003c/code\u003e\u003c/a\u003e v0.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/285344cc3e328c484deb5d932b722a252336e71b\"\u003e\u003ccode\u003e285344c\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/c39fba6d1d789fb7ab9ee31d75fc2ec5973797c0\"\u003e\u003ccode\u003ec39fba6\u003c/code\u003e\u003c/a\u003e Put more items into TYPE_CHECKING\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/889bcb240e2757f4a2a0efd3a0ef9d58db96427d\"\u003e\u003ccode\u003e889bcb2\u003c/code\u003e\u003c/a\u003e Update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/12f9f79e8ce5d6ee2c934e7787d20d0f055e4c50\"\u003e\u003ccode\u003e12f9f79\u003c/code\u003e\u003c/a\u003e Add more lints, update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/57210ef5a0e855d7cf49be6e2136e9208493cc13\"\u003e\u003ccode\u003e57210ef\u003c/code\u003e\u003c/a\u003e Update template, fix lints, update docs deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/6cc020ab973468678fa4420434ce84ee53ea2208\"\u003e\u003ccode\u003e6cc020a\u003c/code\u003e\u003c/a\u003e Fix types and compatibility with MkDocs 1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/9c0564974487df94a62158028fd5e839f6779f68\"\u003e\u003ccode\u003e9c05649\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/07787d5ac634eca808742de2dfafad60f676d90c\"\u003e\u003ccode\u003e07787d5\u003c/code\u003e\u003c/a\u003e Refactor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/1a7b4d74d283cdabe0b625614cf00e299d678c3f\"\u003e\u003ccode\u003e1a7b4d7\u003c/code\u003e\u003c/a\u003e Refactor for type annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.1...v0.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.0.5 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/releases\"\u003emkdocs-macros-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev.1.3.7 With Test Framework\u003c/h2\u003e\n\u003ch2\u003e1.3.7, 2024-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: incompatibility with the d2 module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.6, 2024-10-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: complete test framework, using pytest and Mkdocs-Test (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/244\"\u003e#244\u003c/a\u003e)\nA number of automated test cases are implemented.\u003c/li\u003e\n\u003cli\u003eChanged: move from setup.py to pyproject.toml (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0, 2024-09-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: three hooks \u003ccode\u003eregister_variables/macros/filters\u003c/code\u003e to facilitate\ncooperation with other MkDocs plugins.\u003c/li\u003e\n\u003cli\u003eFixed: `define_env() was always required in module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: trace the case when no module is found (INFO)\u003c/li\u003e\n\u003cli\u003eImproved documentation, particularly about HTML pages\u003c/li\u003e\n\u003cli\u003eAdded: parameters \u003ccode\u003ej2_comment_start_string\u003c/code\u003e and\n\u003ccode\u003ej2_comment_end_string\u003c/code\u003e to plugin's parameters,\nto specify alternate markers for comments.\u003c/li\u003e\n\u003cli\u003eAdded the multiline parameter \u003ccode\u003eforce_render_paths\u003c/code\u003e in the config file,\nto specify directories or file patterns to be rendered for the case when \u003ccode\u003erender_by_default = false\u003c/code\u003e\n(the \u003ccode\u003erender_macros\u003c/code\u003e parameter in the YAML header of the page\nhas the last word).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.5, 2023-10-31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: git.short_tag (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: Mermaid diagrams in the documentation (Readthedocs)\u003c/li\u003e\n\u003cli\u003eFixed: Changelog was no longer displayed (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/186\"\u003e#186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.7, 2024-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: incompatibility with the d2 module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.6, 2024-10-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: complete test framework, using pytest and Mkdocs-Test (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/244\"\u003e#244\u003c/a\u003e)\nA number of automated test cases are implemented.\u003c/li\u003e\n\u003cli\u003eChanged: move from setup.py to pyproject.toml (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0, 2024-09-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: three hooks \u003ccode\u003eregister_variables/macros/filters\u003c/code\u003e to facilitate\ncooperation with other MkDocs plugins.\u003c/li\u003e\n\u003cli\u003eFixed: `define_env() was always required in module (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/191\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded: trace the case when no module is found (INFO)\u003c/li\u003e\n\u003cli\u003eImproved documentation, particularly about HTML pages\u003c/li\u003e\n\u003cli\u003eAdded: parameters \u003ccode\u003ej2_comment_start_string\u003c/code\u003e and\n\u003ccode\u003ej2_comment_end_string\u003c/code\u003e to plugin's parameters,\nto specify alternate markers for comments.\u003c/li\u003e\n\u003cli\u003eAdded the multiline parameter \u003ccode\u003eforce_render_paths\u003c/code\u003e in the config file,\nto specify directories or file patterns to be rendered for the case when \u003ccode\u003erender_by_default = false\u003c/code\u003e\n(the \u003ccode\u003erender_macros\u003c/code\u003e parameter in the YAML header of the page\nhas the last word).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.0.5...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.5.25 to 9.7.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.2\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to \u003ccode\u003emkdocs build\u003c/code\u003e about impending MkDocs 2.0 incompatibility (doesn't affect strict mode)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.1\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is now in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features. Going forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the Insiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote on deprecated plugins\u003c/strong\u003e: The [projects] and [typeset] plugins are included in this release, but must be considered deprecated. Both plugins proved unsustainable to maintain and represent architectural dead ends. They are provided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eChanges\u003c/strong\u003e:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pinned blog posts and author profiles\u003c/li\u003e\n\u003cli\u003eAdded support for customizing pagination for blog index pages\u003c/li\u003e\n\u003cli\u003eAdded support for customizing blog category sort order\u003c/li\u003e\n\u003cli\u003eAdded support for staying on page when switching languages\u003c/li\u003e\n\u003cli\u003eAdded support for disabling tags in table of contents\u003c/li\u003e\n\u003cli\u003eAdded support for nested tags and shadow tags\u003c/li\u003e\n\u003cli\u003eAdded support for footnote tooltips\u003c/li\u003e\n\u003cli\u003eAdded support for instant previews\u003c/li\u003e\n\u003cli\u003eAdded support for instant prefetching\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card layouts\u003c/li\u003e\n\u003cli\u003eAdded support for custom social card background images\u003c/li\u003e\n\u003cli\u003eAdded support for selectable rangs in code blocks\u003c/li\u003e\n\u003cli\u003eAdded support for custom selectors for code annotations\u003c/li\u003e\n\u003cli\u003eAdded support for configurable log level in privacy plugin\u003c/li\u003e\n\u003cli\u003eAdded support for processing of external links in privacy plugin\u003c/li\u003e\n\u003cli\u003eAdded support for automatic image optimization via optimize plugin\u003c/li\u003e\n\u003cli\u003eAdded support for navigation paths (breadcrumbs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/e21a119e38f7bca184e469eaeefa3d5535e5022b\"\u003e\u003ccode\u003ee21a119\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d5654b500a7021625d3c78f59842805c45e7b65a\"\u003e\u003ccode\u003ed5654b5\u003c/code\u003e\u003c/a\u003e Prepare 9.7.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b18af2f74a98e0d54f7f11b4e029d7ea29166df3\"\u003e\u003ccode\u003eb18af2f\u003c/code\u003e\u003c/a\u003e Opened up version ranges in optional dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/39cdfbd87c80079cd06a6d2a953cd53f531db61d\"\u003e\u003ccode\u003e39cdfbd\u003c/code\u003e\u003c/a\u003e Added social card for blog post\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/09ee7b1913eab1988ff3a81982c39634915336e1\"\u003e\u003ccode\u003e09ee7b1\u003c/code\u003e\u003c/a\u003e Added blog post on MkDocs 2.0 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8564\"\u003e#8564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/0d11a2d01174a0ab3bec97300c4432da44128253\"\u003e\u003ccode\u003e0d11a2d\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8560\"\u003e#8560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/8fc61b5cb00845825179d6fd3e331c789f83187b\"\u003e\u003ccode\u003e8fc61b5\u003c/code\u003e\u003c/a\u003e Updated dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/3f0eaca8da7e06db5bbb8ca41febb78459baf650\"\u003e\u003ccode\u003e3f0eaca\u003c/code\u003e\u003c/a\u003e Documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/eaba2dc24f196ecbf8e9aa87f8982be4e154920b\"\u003e\u003ccode\u003eeaba2dc\u003c/code\u003e\u003c/a\u003e Re-enable publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/7e236f6866b73aa080cd4d209752f6440bf67440\"\u003e\u003ccode\u003e7e236f6\u003c/code\u003e\u003c/a\u003e Temporarily disable publishing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.5.25...9.7.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `frequenz-repo-config[lib]` from 0.9.2 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/releases\"\u003efrequenz-repo-config[lib]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003ch1\u003eFrequenz Repository Configuration Release Notes\u003c/h1\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release adds a new workflow for Dependabot auto-merge and updates mkdocstrings to v2.\u003c/p\u003e\n\u003ch2\u003eUpgrading\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cp\u003eAll upgrading should be done via the migration script or regenerating the templates.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecurl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBut you might still need to adapt your code, just have a look at the script output for further instructions.\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emkdocsstrings-python\u003c/code\u003e v2 is now supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies have been updated.\u003c/li\u003e\n\u003cli\u003eNew warning ignores for protobuf gencode versions in pytest.\u003c/li\u003e\n\u003cli\u003eAdded Dependabot auto-merge workflow using \u003ccode\u003efrequenz-floss/dependabot-auto-approve\u003c/code\u003e action.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emkdocstrings: Move \u003ccode\u003epaths\u003c/code\u003e key to the right section in \u003ccode\u003emkdocs.yml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix invalid YAML syntax in Dependabot workflow template.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump types-pyyaml from 6.0.12.20250402 to 6.0.12.20250516 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/410\"\u003efrequenz-floss/frequenz-repo-config-python#410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the patch group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/408\"\u003efrequenz-floss/frequenz-repo-config-python#408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/409\"\u003efrequenz-floss/frequenz-repo-config-python#409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove filtering of warnings in pytest by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/411\"\u003efrequenz-floss/frequenz-repo-config-python#411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mkdocsstrings config by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/412\"\u003efrequenz-floss/frequenz-repo-config-python#412\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge v0.13.x into v0.x.x by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/420\"\u003efrequenz-floss/frequenz-repo-config-python#420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the patch group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/424\"\u003efrequenz-floss/frequenz-repo-config-python#424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/423\"\u003efrequenz-floss/frequenz-repo-config-python#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate templates dependencies by \u003ca href=\"https://github.com/llucax\"\u003e\u003ccode\u003e@​llucax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/431\"\u003efrequenz-floss/frequenz-repo-config-python#431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump types-markdown from 3.8.0.20250415 to 3.8.0.20250708 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/430\"\u003efrequenz-floss/frequenz-repo-config-python#430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mypy from 1.16.1 to 1.17.1 in the minor group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/428\"\u003efrequenz-floss/frequenz-repo-config-python#428\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the mkdocstrings group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/pull/432\"\u003efrequenz-floss/frequenz-repo-config-python#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/blob/v0.x.x/RELEASE_NOTES.md\"\u003efrequenz-repo-config[lib]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFrequenz Repository Configuration Release Notes\u003c/h1\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release migrates lightweight GitHub Actions workflow jobs to use the new cost-effective \u003ccode\u003eubuntu-slim\u003c/code\u003e runner.\nIt also updates cookiecutter pyproject license metadata to SPDX expressions to avoid setuptools deprecation warnings.\nThe auto-dependabot workflow now uses a GitHub App installation token instead of \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e to fix merge queue and auto-merge failures.\u003c/p\u003e\n\u003ch2\u003eUpgrading\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cp\u003eAll upgrading should be done via the migration script or regenerating the templates.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecurl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBut you might still need to adapt your code:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMigrated lightweight workflow jobs to use the new \u003ccode\u003eubuntu-slim\u003c/code\u003e runner for cost savings.\nThe following jobs now use \u003ccode\u003eubuntu-slim\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eci.yaml\u003c/code\u003e: \u003ccode\u003eprotolint\u003c/code\u003e, \u003ccode\u003enox-all\u003c/code\u003e, \u003ccode\u003etest-installation-all\u003c/code\u003e, \u003ccode\u003ecreate-github-release\u003c/code\u003e, \u003ccode\u003epublish-to-pypi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eci-pr.yaml\u003c/code\u003e: \u003ccode\u003eprotolint\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eauto-dependabot.yaml\u003c/code\u003e: \u003ccode\u003eauto-merge\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erelease-notes-check.yml\u003c/code\u003e: \u003ccode\u003echeck-release-notes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edco-merge-queue.yml\u003c/code\u003e: \u003ccode\u003eDCO\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elabeler.yml\u003c/code\u003e: \u003ccode\u003eLabel\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ca href=\"https://github.com/pjknkda/flake8-datetimez\"\u003e\u003ccode\u003eflake8-datetimez\u003c/code\u003e\u003c/a\u003e plugin to the \u003ccode\u003eflake8\u003c/code\u003e session. This plugin prevents accidental use of naive \u003ccode\u003edatetime\u003c/code\u003e objects by flagging calls that create or return datetimes without timezone information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe CI workflow now uses a simpler matrix.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSwitched \u003ccode\u003eproject.license\u003c/code\u003e to SPDX expressions and added \u003ccode\u003eproject.license-files\u003c/code\u003e. This removes deprecated setuptools license metadata and avoids build warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/a72bd53788be72e52e392ba037d1846e9af9bdb0\"\u003e\u003ccode\u003ea72bd53\u003c/code\u003e\u003c/a\u003e Update mypy-protobuf requirement from \u0026lt;4,\u0026gt;=3.0.0 to \u0026gt;=3.0.0,\u0026lt;5 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/489\"\u003e#489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/10341d61167efc0469c829a7e5159f4fb98db43b\"\u003e\u003ccode\u003e10341d6\u003c/code\u003e\u003c/a\u003e template: Bump protobuf and grpcio to latest versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/af4476785f83336c08114d344820f3c5e47819fa\"\u003e\u003ccode\u003eaf44767\u003c/code\u003e\u003c/a\u003e Update mypy-protobuf requirement from \u0026lt;4,\u0026gt;=3.0.0 to \u0026gt;=3.0.0,\u0026lt;5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/8a4e067b5d713b7667fa0e2fb00328de43bf2355\"\u003e\u003ccode\u003e8a4e067\u003c/code\u003e\u003c/a\u003e Prepare for release v0.14.0 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/490\"\u003e#490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/73dc4ef502a49f798a6ad672edd6b6b5478851ec\"\u003e\u003ccode\u003e73dc4ef\u003c/code\u003e\u003c/a\u003e Prepare for release v0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/3d86e084ef981c8f5c8b7256918866bd22bbc069\"\u003e\u003ccode\u003e3d86e08\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/5894e50f24b3fcd742d8d44d2c370ad9a43d734f\"\u003e\u003ccode\u003e5894e50\u003c/code\u003e\u003c/a\u003e Bump pydoclint from 0.7.3 to 0.8.3 (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/4a81cbbb8281d46e23c58112bdd202ace0861c85\"\u003e\u003ccode\u003e4a81cbb\u003c/code\u003e\u003c/a\u003e Bump frequenz-floss/gh-action-nox from 1.0.1 to 1.1.0 in the compatible group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/41b3a2cb1a54c14ca1a4bc1bb983b17bee5580b1\"\u003e\u003ccode\u003e41b3a2c\u003c/code\u003e\u003c/a\u003e Bump pytest from 9.0.1 to 9.0.2 in the patch group (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/487\"\u003e#487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/commit/c2bbc77892b57010335680effe03cb368dc54b75\"\u003e\u003ccode\u003ec2bbc77\u003c/code\u003e\u003c/a\u003e Bump the minor group with 7 updates (\u003ca href=\"https://redirect.github.com/frequenz-floss/frequenz-repo-config-python/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/compare/v0.9.2...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.10.0 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.10.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.6.0.20240316 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `frequenz-repo-config[extra-lint-examples]` from 0.9.2 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/frequenz-floss/frequenz-repo-config-python/releases\"\u003efrequenz-repo-config[extra-lint-examples]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003ch1\u003eFrequenz Repository Configuration Release Notes\u003c/h1\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release adds a new workflow for Dependabot auto-merge and updates mkdocstrings to v2.\u003c/p\u003e\n\u003ch2\u003eUpgrading\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cp\u003eAll upgrading should be done via the migration script or regenerating the templates.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecurl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBut you might still need to adapt your code, just have a look at the script output for further instructions.\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emkdocsstrings-python\u003c/code\u003e v2 is now supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies have been updated.\u003c/li\u003e\n\u003cli\u003eNew warning ignores for protobuf gencode versions in pytest.\u003c/li\u003e\n\u003cli\u003eAdded Dependabot auto-merge workflow using \u003ccode\u003efrequenz-floss/dependabot-auto-approve\u003c/code\u003e action.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003ch3\u003eCookiecutter template\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emkdocstrings: Move \u003ccode\u003epaths\u003c/code\u003e key to the right section in \u003ccode\u003emkdocs.yml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix invalid YAML syntax in Dependabot workflow template.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump types-pyyaml from 6.0.12.20250402 to 6.0.12.20250516 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/llucax/frequenz-client-microgrid-python/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/llucax%2Ffrequenz-client-microgrid-python/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":null,"pr_created_at":"2026-02-18T13:27:57.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3957872661","node_id":"PR_kwDOJRBi487Env5C","number":509,"state":"open","title":"Bump the patch group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["part:tooling","type:tech-debt","tool:auto-merged"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-18T13:27:57.000Z","updated_at":"2026-02-18T14:17:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"patch","update_count":4,"packages":[{"name":"mkdocstrings-python","old_version":"2.0.1","new_version":"2.0.2","repository_url":"https://github.com/mkdocstrings/python"},{"name":"markdown","old_version":"3.10","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocstrings","old_version":"1.0.0","new_version":"1.0.3"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch group with 4 updates in the / directory: [mkdocstrings-python](https://github.com/mkdocstrings/python), [markdown](https://github.com/Python-Markdown/markdown), [mkdocstrings[python]](https://github.com/mkdocstrings/mkdocstrings) and [types-markdown](https://github.com/typeshed-internal/stub_uploader).\n\nUpdates `mkdocstrings-python` from 2.0.1 to 2.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/releases\"\u003emkdocstrings-python's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md\"\u003emkdocstrings-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.2\"\u003e2.0.2\u003c/a\u003e - 2026-02-09\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003eCompare with 2.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix aliases for parameters (\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e0ae77a3\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/813\"\u003eIssue-mkdocstrings-813\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/4e546b5ddc527c74cfa695890faea404a69b7ee2\"\u003e\u003ccode\u003e4e546b5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/1781871f96323002a0be145695105a04e3f17f83\"\u003e\u003ccode\u003e1781871\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981\"\u003e\u003ccode\u003e0ae77a3\u003c/code\u003e\u003c/a\u003e fix: Fix aliases for parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/5bab7f500db27b95e0eb6a28b2fbb846a0fba146\"\u003e\u003ccode\u003e5bab7f5\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README (\u003ca href=\"https://redirect.github.com/mkdocstrings/python/issues/325\"\u003e#325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 3.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.1] - 2026-01-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure nested elements inside inline comments are properly unescaped (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1571\"\u003e#1571\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake the docs build successfully with mkdocstrings-python 2.0 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1575\"\u003e#1575\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix infinite loop when multiple bogus or unclosed HTML comments appear in input (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1578\"\u003e#1578\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix another infinite loop when handling bad comments (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1586\"\u003e#1586\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.10.0] - 2025-11-03\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and PyPy 3.11 and drop support for Python 3.9\nand PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix an HTML comment parsing case in some Python versions that can cause an\ninfinite loop (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1554\"\u003e#1554\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRevert the default behavior of \u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e (to \u003ccode\u003eTrue\u003c/code\u003e). The new\nbehavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1561\"\u003e#1561\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.9.0] - 2025-09-04\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFootnotes are now ordered by the occurrence of their references in the\ndocument. A new configuration option for the footnotes extension,\n\u003ccode\u003eUSE_DEFINITION_ORDER\u003c/code\u003e, has been added to support restoring the previous\nbehavior of ordering footnotes by the occurrence of definitions (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1367\"\u003e#1367\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure inline processing iterates through elements in document order (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1546\"\u003e#1546\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix handling of incomplete HTML tags in code spans in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1547\"\u003e#1547\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.8.2] - 2025-06-19\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ecodecs\u003c/code\u003e deprecation in Python 3.14 (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1537\"\u003e#1537\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e5fa5b86e8ec380cbc520cfc637d72c779e5c601\"\u003e\u003ccode\u003ee5fa5b8\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/f9253495f5d9919f2fdd5e147832b5fc21330f65\"\u003e\u003ccode\u003ef925349\u003c/code\u003e\u003c/a\u003e More HTML fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/9933a0a4699f3dea91f46528a2bf54863f531c08\"\u003e\u003ccode\u003e9933a0a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow reference links with backticks\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/07dfa4eb43f7a2ab3181b4f842a960a03a6c1221\"\u003e\u003ccode\u003e07dfa4e\u003c/code\u003e\u003c/a\u003e Allow reference links with backticks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca\"\u003e\u003ccode\u003efb6b27a\u003c/code\u003e\u003c/a\u003e Fix infinite loop when text contains multiple unclosed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/89112c293f7b399ae8808f3a06306f46601e9684\"\u003e\u003ccode\u003e89112c2\u003c/code\u003e\u003c/a\u003e Make the docs build successfully with mkdocstrings-python 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.0...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings[python]` from 1.0.0 to 1.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases\"\u003emkdocstrings[python]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.2\"\u003e1.0.2\u003c/a\u003e - 2026-01-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.1...1.0.2\"\u003eCompare with 1.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse global instances for handlers and autorefs (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/9f79141d7eb35aba0c89a43795df0ee22a25a61e\"\u003e9f79141\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.1\"\u003e1.0.1\u003c/a\u003e - 2026-01-19\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.0...1.0.1\"\u003eCompare with 1.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual cross-references in Zensical too (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/d37d9079e5381350b2e3ffc5f698e28a5b572d36\"\u003ed37d907\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eSupport cross-references in Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/f43f1ee2cd38a0dba64fc7d0db3c5ffb037bf7f7\"\u003ef43f1ee\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/pull/812\"\u003ePR-812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md\"\u003emkdocstrings[python]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.3\"\u003e1.0.3\u003c/a\u003e - 2026-02-07\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.2...1.0.3\"\u003eCompare with 1.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward extension instances directly passed from Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e65b27ec\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003ePropagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003edbf263d\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.2\"\u003e1.0.2\u003c/a\u003e - 2026-01-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.1...1.0.2\"\u003eCompare with 1.0.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse global instances for handlers and autorefs (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/9f79141d7eb35aba0c89a43795df0ee22a25a61e\"\u003e9f79141\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.1\"\u003e1.0.1\u003c/a\u003e - 2026-01-19\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.0...1.0.1\"\u003eCompare with 1.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual cross-references in Zensical too (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/d37d9079e5381350b2e3ffc5f698e28a5b572d36\"\u003ed37d907\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eSupport cross-references in Zensical (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/f43f1ee2cd38a0dba64fc7d0db3c5ffb037bf7f7\"\u003ef43f1ee\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/pull/812\"\u003ePR-812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/8bdff16af916b7285eae5a07eb085c21754be3b7\"\u003e\u003ccode\u003e8bdff16\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/65b27ec8d1d671eddf021e48b0114cc3f8aca14a\"\u003e\u003ccode\u003e65b27ec\u003c/code\u003e\u003c/a\u003e fix: Forward extension instances directly passed from Zensical\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/1624e2c52fbdff2ee611142edbf52454427f8f8d\"\u003e\u003ccode\u003e1624e2c\u003c/code\u003e\u003c/a\u003e ci: Update lint/type-checking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/cc3d6a4d286668a9a249ac38dfaf8b45470f3314\"\u003e\u003ccode\u003ecc3d6a4\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/dbf263dfdd2fdd769d66fa62bdd388e05988bc78\"\u003e\u003ccode\u003edbf263d\u003c/code\u003e\u003c/a\u003e fix: Propagate Zensical's \u003ccode\u003ezrelpath\u003c/code\u003e processor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/4e66617fbe26636f86117c26b2482c21892166fe\"\u003e\u003ccode\u003e4e66617\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/9f79141d7eb35aba0c89a43795df0ee22a25a61e\"\u003e\u003ccode\u003e9f79141\u003c/code\u003e\u003c/a\u003e refactor: Use global instances for handlers and autorefs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/cb8a3c781674b8e23cf0048955d70358d7bab49e\"\u003e\u003ccode\u003ecb8a3c7\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/d37d9079e5381350b2e3ffc5f698e28a5b572d36\"\u003e\u003ccode\u003ed37d907\u003c/code\u003e\u003c/a\u003e refactor: Support manual cross-references in Zensical too\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/0edd18af00fa5907bb31e8309ecf5ad4309da552\"\u003e\u003ccode\u003e0edd18a\u003c/code\u003e\u003c/a\u003e chore: Clean up after v1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.0...1.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/frequenz-floss/frequenz-repo-config-python/pull/509","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Ffrequenz-repo-config-python/issues/509","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/509/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":null,"pr_created_at":"2026-02-16T17:19:40.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3948757824","node_id":"PR_kwDOG1Zs187EJpzo","number":12102,"state":"closed","title":"Chore(deps): Bump the utilities-patch group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-16T17:20:34.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-16T17:19:40.000Z","updated_at":"2026-02-16T17:20:53.000Z","time_to_close":54,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":7,"packages":[{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.14","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"zensical","old_version":"0.0.21","new_version":"0.0.23","repository_url":"https://github.com/zensical/zensical"},{"name":"prek","old_version":"0.3.2","new_version":"0.3.3","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.14` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.21` | `0.0.23` |\n| [prek](https://github.com/j178/prek) | `0.3.2` | `0.3.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.14\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-10]\u003c/h2\u003e\n\u003ch3\u003ellama-index-callbacks-wandb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update cacheable Anthropic models (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20581\"\u003e#20581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: add support for opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20635\"\u003e#20635\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix bedrock converse empty tool config issue (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20571\"\u003e#20571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(llms-bedrock-converse): improve bedrock converse retry handling (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20590\"\u003e#20590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20637\"\u003e#20637\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/b4b5f403acef36c17952aa9b64d5472775037459\"\u003e\u003ccode\u003eb4b5f40\u003c/code\u003e\u003c/a\u003e Release 0.14.14 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20670\"\u003e#20670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/500eca1748117e20d75922023fb2502c4950eb4e\"\u003e\u003ccode\u003e500eca1\u003c/code\u003e\u003c/a\u003e docs: Clarify async streaming usage for LLM and ChatEngine (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20653\"\u003e#20653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/d875559bda34622b16e230a711c1f885633ae171\"\u003e\u003ccode\u003ed875559\u003c/code\u003e\u003c/a\u003e fix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20\"\u003e#20\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/a141cd674492bcdb14afcb6af9db8ecc6de1754d\"\u003e\u003ccode\u003ea141cd6\u003c/code\u003e\u003c/a\u003e Add support for adaptive thinking in Bedrock (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20659\"\u003e#20659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/e0fc5f79963223681d6934e07dc4b46100d6544d\"\u003e\u003ccode\u003ee0fc5f7\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 2 directories with 7 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20662\"\u003e#20662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c915902f2e6a16b484ee9f968ad7e57713a51d05\"\u003e\u003ccode\u003ec915902\u003c/code\u003e\u003c/a\u003e docs: Couchbase example documentation fix (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20658\"\u003e#20658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/35e0406472518181f52d4d5b4e743dea88d4e751\"\u003e\u003ccode\u003e35e0406\u003c/code\u003e\u003c/a\u003e update readme (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20656\"\u003e#20656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c7ad9616f51d048d09138a645c088e203b3182be\"\u003e\u003ccode\u003ec7ad961\u003c/code\u003e\u003c/a\u003e fix: avoid ValueError in ag-ui message conversion for multi-block ChatMessage...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/9400c9019d23cd5f12f74d4b60b10f19292d979b\"\u003e\u003ccode\u003e9400c90\u003c/code\u003e\u003c/a\u003e feat: add chonkie integration (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20622\"\u003e#20622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/1ca1369a6eaaee1e575a7823502e021721ee5964\"\u003e\u003ccode\u003e1ca1369\u003c/code\u003e\u003c/a\u003e Fix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.21 to 0.0.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003ch1\u003eSummary\u003c/h1\u003e\n\u003cp\u003eThis version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e10b5162 \u003cstrong\u003ecompat\u003c/strong\u003e – lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.22\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version adds support for the \u003ca href=\"https://github.com/mkdocstrings/autorefs\"\u003eautorefs\u003c/a\u003e plugin, and further improves performance for large mkdocstrings projects. The \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e is updated to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.7\"\u003ev0.0.7\u003c/a\u003e, which fixes some isses with the mobile browsering experience.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ee32ab15 \u003cstrong\u003ezensical\u003c/strong\u003e, \u003cstrong\u003ecompat\u003c/strong\u003e – support autorefs plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1b1fd84 \u003cstrong\u003ezensical\u003c/strong\u003e – reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003ee33c972 \u003cstrong\u003ecompat\u003c/strong\u003e – don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003eb3c699b \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003ee233f9f \u003cstrong\u003ecompat\u003c/strong\u003e – fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee3fc49f \u003cstrong\u003ezensical\u003c/strong\u003e – relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/d9462afc011bdfce4b948e0c1aa71af56144cf9f\"\u003e\u003ccode\u003ed9462af\u003c/code\u003e\u003c/a\u003e chore: release v0.0.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/10b5162aa6782983ebdbdd6445030d9a309579a8\"\u003e\u003ccode\u003e10b5162\u003c/code\u003e\u003c/a\u003e fix: lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7b845d9212787f972ab7d9e4b7c363121e3c50fa\"\u003e\u003ccode\u003e7b845d9\u003c/code\u003e\u003c/a\u003e chore: release v0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1b1fd8458d4a372d85c8a255618f6eb7354204b3\"\u003e\u003ccode\u003e1b1fd84\u003c/code\u003e\u003c/a\u003e fix: reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e33c972e03fe69e69ab6774bbda8ce5652fdc848\"\u003e\u003ccode\u003ee33c972\u003c/code\u003e\u003c/a\u003e fix: don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/b3c699ba45b0db862f8230832b21b2463690c99f\"\u003e\u003ccode\u003eb3c699b\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/8352b1a14f2f7ffc82e10eefee959f5e6f6d2fde\"\u003e\u003ccode\u003e8352b1a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003ezrx\u003c/code\u003e to v0.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e32ab15b1fe6bd81f1a66780e6084f563165e1c1\"\u003e\u003ccode\u003ee32ab15\u003c/code\u003e\u003c/a\u003e feature: support autorefs plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e233f9f7d4520e8a6a382c05b9250149e63ce58b\"\u003e\u003ccode\u003ee233f9f\u003c/code\u003e\u003c/a\u003e fix: fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e3fc49f72fb299f467557edabda6a004c84597fd\"\u003e\u003ccode\u003ee3fc49f\u003c/code\u003e\u003c/a\u003e fix: relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.21...v0.0.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.2 to 0.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.3\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.3.3/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.3\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-15.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead Python version specifier from hook repo \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e#:schema\u003c/code\u003e directives to generated prek.toml (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek util list-builtins\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1600\"\u003e#1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand install source detection to \u003ccode\u003emise\u003c/code\u003e, \u003ccode\u003euv tool\u003c/code\u003e, \u003ccode\u003epipx\u003c/code\u003e, and \u003ccode\u003easdf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1605\"\u003e#1605\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/j178/prek/pull/1607\"\u003e#1607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd progress bar to \u003ccode\u003ecache clean\u003c/code\u003e and show removal summary (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1616\"\u003e#1616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eyaml-to-toml\u003c/code\u003e CONFIG argument optional (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprek uninstall\u003c/code\u003e removes legacy scripts too (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1622\"\u003e#1622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix underflow when formatting summary output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1626\"\u003e#1626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003efiles/exclude\u003c/code\u003e filter against relative path of nested project (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelect \u003ccode\u003emusllinux\u003c/code\u003e wheel tag for uv on musl-based distros (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1628\"\u003e#1628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eprek list\u003c/code\u003e description (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ichoosetoaccept\"\u003e\u003ccode\u003e@​ichoosetoaccept\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/soraxas\"\u003e\u003ccode\u003e@​soraxas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9999years\"\u003e\u003ccode\u003e@​9999years\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c741c8c277d97f206aea369c4e69405fafc3cf29\"\u003e\u003ccode\u003ec741c8c\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1655\"\u003e#1655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7c52973ec0009f7074ea55afefc81a1314456c07\"\u003e\u003ccode\u003e7c52973\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.10.2 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1639\"\u003e#1639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34d30bc543d024851f07b33cbd33f7dc6cabdf08\"\u003e\u003ccode\u003e34d30bc\u003c/code\u003e\u003c/a\u003e docs: add prek usage reference for homeassistant Powercalc project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/97c3e0dd0eeee4e27ef663af6749bf50a5f86b84\"\u003e\u003ccode\u003e97c3e0d\u003c/code\u003e\u003c/a\u003e Update Rust crate async-compression to v0.4.39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/903e324bfe77564b195b9d63033cdda655548c09\"\u003e\u003ccode\u003e903e324\u003c/code\u003e\u003c/a\u003e Update Rust crate clap to v4.5.58\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/6412d77cc7deb77914aee5d94c38f526dea48fd8\"\u003e\u003ccode\u003e6412d77\u003c/code\u003e\u003c/a\u003e Update Rust crate clap_complete to v4.5.66 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/04b4a7226c36ac44fdc9c0d29fe05c4a4f04b4e7\"\u003e\u003ccode\u003e04b4a72\u003c/code\u003e\u003c/a\u003e Update Rust crate libc to v0.2.182\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e9e1850c0a92e4c6134b34185e4395a2bd553cf9\"\u003e\u003ccode\u003ee9e1850\u003c/code\u003e\u003c/a\u003e Update Rust crate lazy-regex to v3.6.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/e024d65e172ccb6838e64753b91781a584029360\"\u003e\u003ccode\u003ee024d65\u003c/code\u003e\u003c/a\u003e Update Rust crate memchr to v2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/cd79359265f00a7684f94f0b5bff2b3ddccc350d\"\u003e\u003ccode\u003ecd79359\u003c/code\u003e\u003c/a\u003e Update Rust crate indicatif to v0.18.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1644\"\u003e#1644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.2...v0.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d\"\u003e\u003ccode\u003ea2f11d2\u003c/code\u003e\u003c/a\u003e Prepare for 0.15.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23253\"\u003e#23253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff\"\u003e\u003ccode\u003ed29628e\u003c/code\u003e\u003c/a\u003e Remove docker-run-action (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23254\"\u003e#23254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0\"\u003e\u003ccode\u003e8a04266\u003c/code\u003e\u003c/a\u003e [ty] Allow discovering dependencies in system Python environments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22994\"\u003e#22994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163\"\u003e\u003ccode\u003e55d06c8\u003c/code\u003e\u003c/a\u003e Ensure pending suppression diagnostics are reported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea\"\u003e\u003ccode\u003ed056a9f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] support for configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a\"\u003e\u003ccode\u003ee22fa4f\u003c/code\u003e\u003c/a\u003e [ty] Fix method calls on subclasses of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23248\"\u003e#23248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c\"\u003e\u003ccode\u003efa56c15\u003c/code\u003e\u003c/a\u003e [ty] Fix bound method access on \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23246\"\u003e#23246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2\"\u003e\u003ccode\u003e4fd07d0\u003c/code\u003e\u003c/a\u003e Make range suppression test snapshot actually useful (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23251\"\u003e#23251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f\"\u003e\u003ccode\u003e8c63bce\u003c/code\u003e\u003c/a\u003e [ty] Include conditional symbols (like \u003ccode\u003edatetime.UTC\u003c/code\u003e) in auto-import in more...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d\"\u003e\u003ccode\u003e46be943\u003c/code\u003e\u003c/a\u003e Exclude WASM artifacts from GitHub releases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23221\"\u003e#23221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12102","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12102","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12102/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":"/backend","pr_created_at":"2026-02-16T17:06:03.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3948702152","node_id":"PR_kwDOQignMc7EJdvV","number":24,"state":"closed","title":"chore(deps): bump the python-dependencies group in /backend with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-16T17:10:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-16T17:06:03.000Z","updated_at":"2026-02-16T17:10:12.000Z","time_to_close":241,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":8,"packages":[{"name":"fastapi","old_version":"0.128.6","new_version":"0.129.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"redis","old_version":"7.1.0","new_version":"7.1.1","repository_url":"https://github.com/redis/redis-py"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-passlib","old_version":"1.7.7.20250602","new_version":"1.7.7.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"tox","old_version":"4.34.1","new_version":"4.36.0","repository_url":"https://github.com/tox-dev/tox"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the python-dependencies group in /backend with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.6` | `0.129.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.0` |\n| [redis](https://github.com/redis/redis-py) | `7.1.0` | `7.1.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.1` |\n| [types-passlib](https://github.com/typeshed-internal/stub_uploader) | `1.7.7.20250602` | `1.7.7.20260211` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n| [tox](https://github.com/tox-dev/tox) | `4.34.1` | `4.36.0` |\n\nUpdates `fastapi` from 0.128.6 to 0.129.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.129.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14897\"\u003e#14897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🎨 Update internal types for Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14898\"\u003e#14898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update highlights in webhooks docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14905\"\u003e#14905\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update source examples and docs from Python 3.9 to 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14900\"\u003e#14900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Update docs.py scripts to migrate Python 3.9 to Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14906\"\u003e#14906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.128.8\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix grammar in \u003ccode\u003edocs/en/docs/tutorial/first-steps.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14708\"\u003e#14708\u003c/a\u003e by \u003ca href=\"https://github.com/SanjanaS10\"\u003e\u003ccode\u003e@​SanjanaS10\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak PDM hook script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14895\"\u003e#14895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Update build setup for \u003ccode\u003efastapi-slim\u003c/code\u003e, deprecate it, and make it only depend on \u003ccode\u003efastapi\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14894\"\u003e#14894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.128.7\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Show a clear error on attempt to include router into itself. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14258\"\u003e#14258\u003c/a\u003e by \u003ca href=\"https://github.com/JavierSanchezCastro\"\u003e\u003ccode\u003e@​JavierSanchezCastro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Replace \u003ccode\u003edict\u003c/code\u003e by \u003ccode\u003eMapping\u003c/code\u003e on \u003ccode\u003eHTTPException.headers\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12997\"\u003e#12997\u003c/a\u003e by \u003ca href=\"https://github.com/rijenkii\"\u003e\u003ccode\u003e@​rijenkii\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Simplify reading files in memory, do it sequentially instead of (fake) parallel. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14884\"\u003e#14884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Use \u003ccode\u003edfn\u003c/code\u003e tag for definitions instead of \u003ccode\u003eabbr\u003c/code\u003e in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14744\"\u003e#14744\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Tweak comment in test to reference PR. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14885\"\u003e#14885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update LLM-prompt for \u003ccode\u003eabbr\u003c/code\u003e and \u003ccode\u003edfn\u003c/code\u003e tags. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14747\"\u003e#14747\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Test order for the submitted byte Files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14828\"\u003e#14828\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Configure \u003ccode\u003etest\u003c/code\u003e workflow to run tests with \u003ccode\u003einline-snapshot=review\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14876\"\u003e#14876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a2e51363c721ee6fccb148bff95ca328b4efdfed\"\u003e\u003ccode\u003ea2e5136\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.129.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b7ce02ae86ee466380d2db09be008cfe83a1ca35\"\u003e\u003ccode\u003eb7ce02a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/31d9750aceaff347bd55be37880b7f36bc26c1b1\"\u003e\u003ccode\u003e31d9750\u003c/code\u003e\u003c/a\u003e 🔨 Update docs.py scripts to migrate Python 3.9 to Python 3.10 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14906\"\u003e#14906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/109cc8aff126b60971ec27d68d32b8713f0ec72a\"\u003e\u003ccode\u003e109cc8a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c82a3d8a13af58e092ba95ffb4b8a64b9ca82726\"\u003e\u003ccode\u003ec82a3d8\u003c/code\u003e\u003c/a\u003e 📝 Update highlights in webhooks docs (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14905\"\u003e#14905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0e460654af7101866b7d0f22735ef6337fe13d0c\"\u003e\u003ccode\u003e0e46065\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c9e2277d8b3b0feead4bdad97fca7cf05c9263fd\"\u003e\u003ccode\u003ec9e2277\u003c/code\u003e\u003c/a\u003e 📝 Update source examples and docs from Python 3.9 to 3.10 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14900\"\u003e#14900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d06ab3f5c7c1b6229e28af37905eb51ab4b4cdb7\"\u003e\u003ccode\u003ed06ab3f\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3da206c06df1283518a54b18f27bed33f2d22612\"\u003e\u003ccode\u003e3da206c\u003c/code\u003e\u003c/a\u003e 🎨 Update internal types for Python 3.10 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14898\"\u003e#14898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cc903bd440a4a443510c7b10ef7e9a1f88f44e0e\"\u003e\u003ccode\u003ecc903bd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.6...0.129.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.12.0 to 2.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: Deterministic alias selection when using validate_by_name by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/707\"\u003epydantic/pydantic-settings#707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd deep merge functionality to config file sources by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for AWS Secrets Manager VersionId parameter by \u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Return \u003ccode\u003eNone\u003c/code\u003e for inaccessible GCP Secret Manager secrets by \u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix for cli_kebab_case=\u0026quot;all\u0026quot; and CliImplicitFlag[bool] by \u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpack type alisases when looking for \u003ccode\u003eNoDecode\u003c/code\u003e by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/695\"\u003epydantic/pydantic-settings#695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCliToggleFlag and CliDualFlag by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/717\"\u003epydantic/pydantic-settings#717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix for CLI duplicate enum field values. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/722\"\u003epydantic/pydantic-settings#722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixed load nested config from env by \u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-Path files support (for example Traversable) and open files using Path.open method by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd one more traversable test by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/725\"\u003epydantic/pydantic-settings#725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI fix fox external list args. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/727\"\u003epydantic/pydantic-settings#727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle case-insensitive retrieval in GoogleSecretManagerSettingsSource by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/730\"\u003epydantic/pydantic-settings#730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI test fixes for help text formatting. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/735\"\u003epydantic/pydantic-settings#735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid conflicts with the \u003ccode\u003eNAME\u003c/code\u003e environment variable in WSL by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: When restoring init kwargs, use deterministic order by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/746\"\u003epydantic/pydantic-settings#746\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd env_prefix_target by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/749\"\u003epydantic/pydantic-settings#749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e(default: …)\u003c/code\u003e in the help message for \u003ccode\u003eCliToggleFlag\u003c/code\u003e by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/740\"\u003epydantic/pydantic-settings#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for CLI serialize styles. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/755\"\u003epydantic/pydantic-settings#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for overriding default help on CLI internal parser. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/758\"\u003epydantic/pydantic-settings#758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI format_help method support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/759\"\u003epydantic/pydantic-settings#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(gcp): support SecretVersion annotation for per-field secret versioning by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/763\"\u003epydantic/pydantic-settings#763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003esnake_case_conversion\u003c/code\u003e with \u003ccode\u003eenv_prefix\u003c/code\u003e for Azure Key Vault source by \u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Only override preferred_key when no value was found by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/767\"\u003epydantic/pydantic-settings#767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate deps by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/768\"\u003epydantic/pydantic-settings#768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI coerce numeric types. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/769\"\u003epydantic/pydantic-settings#769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Union Discriminator Choices in Help by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/764\"\u003epydantic/pydantic-settings#764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) by \u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.13.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/777\"\u003epydantic/pydantic-settings#777\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/198e71cf0cd570501535de7ae93a70953150f073\"\u003e\u003ccode\u003e198e71c\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/777\"\u003e#777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/de71e84057b63b251ec84883b5e2ae886f82084f\"\u003e\u003ccode\u003ede71e84\u003c/code\u003e\u003c/a\u003e Add nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0f8f951b89b137bd563ce74dac016ba2c4cdc7a2\"\u003e\u003ccode\u003e0f8f951\u003c/code\u003e\u003c/a\u003e CLI Union Discriminator Choices in Help (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/764\"\u003e#764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ce9804c4620d38f0c3b3c1e3ebe10d934fd4ba2e\"\u003e\u003ccode\u003ece9804c\u003c/code\u003e\u003c/a\u003e CLI coerce numeric types. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/769\"\u003e#769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e460f0b4d8e8dd0916562d3390b9eec960736bb6\"\u003e\u003ccode\u003ee460f0b\u003c/code\u003e\u003c/a\u003e Update deps (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/768\"\u003e#768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/a04b03450e62f583cdaee2d93df693b991aeb319\"\u003e\u003ccode\u003ea04b034\u003c/code\u003e\u003c/a\u003e fix: Only override preferred_key when no value was found (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/767\"\u003e#767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f6ddaee324a6f35e418505a0222bd26f1894446e\"\u003e\u003ccode\u003ef6ddaee\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003esnake_case_conversion\u003c/code\u003e with \u003ccode\u003eenv_prefix\u003c/code\u003e for Azure Key Vault source (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/6ce78bcfb737ddc552b077dcfcc3586f153bcaeb\"\u003e\u003ccode\u003e6ce78bc\u003c/code\u003e\u003c/a\u003e feat(gcp): support SecretVersion annotation for per-field secret versioning (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/21c709383721610992bcd34de04386b7d911089b\"\u003e\u003ccode\u003e21c7093\u003c/code\u003e\u003c/a\u003e CLI format_help method support (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0e96e9c27eb73599054b83959bb938c82bbebde7\"\u003e\u003ccode\u003e0e96e9c\u003c/code\u003e\u003c/a\u003e Add support for overriding default help on CLI internal parser. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.1.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded initial health check policies, refactored add_database method (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3906\"\u003e#3906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisabled SCH in MultiDBClient underlying clients by default (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3938\"\u003e#3938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded logging for MultiDBClients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3865\"\u003e#3865\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3896\"\u003e#3896\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7351a1e2d68f386ce6079e274df6bf2ae1406188\"\u003e\u003ccode\u003e7351a1e\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b81c856c6b9f965cc5e4bb5fdcb2d3f323687357\"\u003e\u003ccode\u003eb81c856\u003c/code\u003e\u003c/a\u003e Disabled SCH in MultiDBClient underlying clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3938\"\u003e#3938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0438784ff41c0f14c6dd78682b9a8d9149a7b33b\"\u003e\u003ccode\u003e0438784\u003c/code\u003e\u003c/a\u003e Added initial health check policies, refactored add_database method (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3906\"\u003e#3906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/76befb443c583815cc99100a58ef943096f27b50\"\u003e\u003ccode\u003e76befb4\u003c/code\u003e\u003c/a\u003e Added logging for MultiDBClients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3896\"\u003e#3896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/faee0fbbafd1ab4ad7f5402385f71660c5601948\"\u003e\u003ccode\u003efaee0fb\u003c/code\u003e\u003c/a\u003e Remove high-severity exception logging (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3865\"\u003e#3865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.1.0...v7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.1.0 to 12.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.1.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePatch libavif for svt-av1 4.0 compatibility \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9413\"\u003e#9413\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOB Write with invalid tile extents \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5158d98c807e719c5938aa3886913ef0ea6814e9\"\u003e\u003ccode\u003e5158d98\u003c/code\u003e\u003c/a\u003e 12.1.1 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/9000313cc5d4a31bdcdd6d7f0781101abab553aa\"\u003e\u003ccode\u003e9000313\u003c/code\u003e\u003c/a\u003e Fix OOB Write with invalid tile extents (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cd0111849fb32c40860e3ee3d57b9b1cee4260cf\"\u003e\u003ccode\u003ecd01118\u003c/code\u003e\u003c/a\u003e Patch libavif for svt-av1 4.0 compatibility\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.1.0...12.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d\"\u003e\u003ccode\u003ea2f11d2\u003c/code\u003e\u003c/a\u003e Prepare for 0.15.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23253\"\u003e#23253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff\"\u003e\u003ccode\u003ed29628e\u003c/code\u003e\u003c/a\u003e Remove docker-run-action (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23254\"\u003e#23254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0\"\u003e\u003ccode\u003e8a04266\u003c/code\u003e\u003c/a\u003e [ty] Allow discovering dependencies in system Python environments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22994\"\u003e#22994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163\"\u003e\u003ccode\u003e55d06c8\u003c/code\u003e\u003c/a\u003e Ensure pending suppression diagnostics are reported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea\"\u003e\u003ccode\u003ed056a9f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] support for configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a\"\u003e\u003ccode\u003ee22fa4f\u003c/code\u003e\u003c/a\u003e [ty] Fix method calls on subclasses of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23248\"\u003e#23248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c\"\u003e\u003ccode\u003efa56c15\u003c/code\u003e\u003c/a\u003e [ty] Fix bound method access on \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23246\"\u003e#23246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2\"\u003e\u003ccode\u003e4fd07d0\u003c/code\u003e\u003c/a\u003e Make range suppression test snapshot actually useful (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23251\"\u003e#23251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f\"\u003e\u003ccode\u003e8c63bce\u003c/code\u003e\u003c/a\u003e [ty] Include conditional symbols (like \u003ccode\u003edatetime.UTC\u003c/code\u003e) in auto-import in more...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d\"\u003e\u003ccode\u003e46be943\u003c/code\u003e\u003c/a\u003e Exclude WASM artifacts from GitHub releases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23221\"\u003e#23221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-passlib` from 1.7.7.20250602 to 1.7.7.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.34.1 to 4.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.36.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(config): allow skip_missing_interpreters per environment by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3684\"\u003etox-dev/tox#3684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn non-zero exit code from \u003ccode\u003etox config\u003c/code\u003e when exceptions occur by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3683\"\u003etox-dev/tox#3683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development.rst to reflect current standards by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3685\"\u003etox-dev/tox#3685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild dependencies should only come from build backend by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3687\"\u003etox-dev/tox#3687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd packaging environment docs to regular Configuration by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3686\"\u003etox-dev/tox#3686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3688\"\u003etox-dev/tox#3688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs(plugins): document CLI argument conventions by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3689\"\u003etox-dev/tox#3689\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExclude self-dependencies in run_order to prevent KeyError by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3690\"\u003etox-dev/tox#3690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop setup.py mentions from the installation page by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3693\"\u003etox-dev/tox#3693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 perf(tests): prevent stale fixture state and fix flaky timing assertions by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3692\"\u003etox-dev/tox#3692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(run): add fail-fast option to stop on first failure by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3691\"\u003etox-dev/tox#3691\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs(plugins): document toxfile.py inline plugins by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3694\"\u003etox-dev/tox#3694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(cli): add shell completion via argcomplete by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3695\"\u003etox-dev/tox#3695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(package): validate extras against package metadata by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3696\"\u003etox-dev/tox#3696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(depends): add glob pattern support for depends option by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3697\"\u003etox-dev/tox#3697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(env): add disallow_pass_env to exclude env vars by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3698\"\u003etox-dev/tox#3698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: restructure documentation following Diataxis framework by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3702\"\u003etox-dev/tox#3702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: config enhancements, man page, version tracking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3703\"\u003etox-dev/tox#3703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a _resolve_path() static method to InstallPackageAction by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3699\"\u003etox-dev/tox#3699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFollow FORCE_COLOR. Any non-empty value now enables color by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3700\"\u003etox-dev/tox#3700\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3683\"\u003etox-dev/tox#3683\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.35.0...4.36.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.35.0...4.36.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.35.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix misleading ENVDIR reference in devenv description by \u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3670\"\u003etox-dev/tox#3670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI post packaging releese by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3673\"\u003etox-dev/tox#3673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix code block format in docs/plugins.rst by \u003ca href=\"https://github.com/mushitoriami\"\u003e\u003ccode\u003e@​mushitoriami\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3675\"\u003etox-dev/tox#3675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): correct path for built documentation by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3680\"\u003etox-dev/tox#3680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument injected environment variables by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3681\"\u003etox-dev/tox#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow toxfile.py inline plugin in --version output by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3682\"\u003etox-dev/tox#3682\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3670\"\u003etox-dev/tox#3670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mushitoriami\"\u003e\u003ccode\u003e@​mushitoriami\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3675\"\u003etox-dev/tox#3675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3680\"\u003etox-dev/tox#3680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3681\"\u003etox-dev/tox#3681\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.34.1...4.35.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.34.1...4.35.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFeatures - 4.36.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow \u003ccode\u003eskip_missing_interpreters\u003c/code\u003e to be set per environment, overriding the global setting. This enables marking\nspecific environments as optional while keeping others required. (:issue:\u003ccode\u003e435\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e CLI flag and \u003ccode\u003efail_fast\u003c/code\u003e per-environment config option to stop executing remaining environments\nwhen the first failure occurs - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e578\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd shell completion support for bash, zsh, and fish via :pypi:\u003ccode\u003eargcomplete\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e918\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eValidate that configured extras exist in package metadata, raising a clear error for unknown extras - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e1113\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd glob pattern support in \u003ccode\u003edepends\u003c/code\u003e (e.g. \u003ccode\u003edepends = py3*\u003c/code\u003e) to match environments by wildcard instead of listing\nthem explicitly - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e1152\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edisallow_pass_env\u003c/code\u003e configuration option to exclude specific environment variables after \u003ccode\u003epass_env\u003c/code\u003e glob\nexpansion - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e1387\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003efile:\u003c/code\u003e URIs in \u003ccode\u003e--installpkg\u003c/code\u003e (e.g. \u003ccode\u003e--installpkg file:///path/to/pkg.whl\u003c/code\u003e), including proper handling\nof percent-encoded characters - by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e. (:issue:\u003ccode\u003e3498\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBugfixes - 4.36.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an error when \u003ccode\u003edeps\u003c/code\u003e is configured on a PEP-517 packaging environment (e.g. \u003ccode\u003e.pkg\u003c/code\u003e), since build\ndependencies should be specified via the \u003ccode\u003e[build-system]\u003c/code\u003e table in \u003ccode\u003epyproject.toml\u003c/code\u003e - by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e\n(:issue:\u003ccode\u003e3412\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFollow \u003ccode\u003eFORCE_COLOR \u0026lt;https://force-color.org/\u0026gt;\u003c/code\u003e_ recommendations: any non-empty value now enables color (previously\nonly \u003ccode\u003eyes\u003c/code\u003e, \u003ccode\u003etrue\u003c/code\u003e, or \u003ccode\u003e1\u003c/code\u003e were accepted, and other values caused a crash). Also add support for\n\u003ccode\u003eTTY_COMPATIBLE\u003c/code\u003e (\u003ccode\u003e1\u003c/code\u003e forces color, \u003ccode\u003e0\u003c/code\u003e disables it) — by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e. (:issue:\u003ccode\u003e3579\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReturn non-zero exit code from tox config when configuration exceptions occur. (:issue:\u003ccode\u003e3649\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix flaky spinner test assertion caused by timing variations on slower systems. (:issue:\u003ccode\u003e3692\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDocumentation - 4.36.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDocument how to provide environments via \u003ccode\u003etoxfile.py\u003c/code\u003e inline plugins using \u003ccode\u003etox_extend_envs\u003c/code\u003e and \u003ccode\u003eMemoryLoader\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eby :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e828\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocument shell completion setup for bash, zsh, and fish in the CLI reference - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e918\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument negative factor conditions and multi-factor combinations with negation in the INI configuration reference -\nby :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3276\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a substitution quick reference table covering all available \u003ccode\u003e{...}\u003c/code\u003e replacement variables - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3326\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TOML configuration reference with complete examples for \u003ccode\u003etox.toml\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e formats, and emphasize\nTOML as the recommended format throughout - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3393\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the \u003ccode\u003etox exec\u003c/code\u003e subcommand with usage examples in the how-to guides - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3403\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eComprehensive documentation improvements: added how-to guides for tox exec, CI/CD, coverage, build backends, labels,\nmigration, debugging, and extras; expanded plugin documentation with all hook examples and packaging guide; added env\nvar handling guide, factor conditions reference, and substitution quick reference; integrated docstrfmt for consistent\nRST formatting; fixed docstring issues in source code - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e3475\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003edevelopment.rst\u003c/code\u003e to reflect current standards: replace references to\n\u003ccode\u003eflake8\u003c/code\u003e/\u003ccode\u003eblack\u003c/code\u003e/\u003ccode\u003eisort\u003c/code\u003e/\u003ccode\u003epyupgrade\u003c/code\u003e with \u003ccode\u003eruff\u003c/code\u003e, remove outdated Python 2.7 compatibility note, and fix CI\nconfig filename - by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e (:issue:\u003ccode\u003e3483\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop \u003ccode\u003esetup.py\u003c/code\u003e mentions from the installation page — by :user:\u003ccode\u003erahuldevikar\u003c/code\u003e. (:issue:\u003ccode\u003e3588\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/5408fd13a955e61d788b517e691e69fef83ce1e9\"\u003e\u003ccode\u003e5408fd1\u003c/code\u003e\u003c/a\u003e release 4.36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/99c315f1bfec0532a458e25fd69848628d4a7d66\"\u003e\u003ccode\u003e99c315f\u003c/code\u003e\u003c/a\u003e 👷 ci(release): add workflow dispatch for release preparation (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3704\"\u003e#3704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/f03d16682e4307f7691bee9caeed60c4c934cefa\"\u003e\u003ccode\u003ef03d166\u003c/code\u003e\u003c/a\u003e Follow FORCE_COLOR. Any non-empty value now enables color (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3700\"\u003e#3700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/03185a7bcef03a71eb8d3df0a010297e37e34e29\"\u003e\u003ccode\u003e03185a7\u003c/code\u003e\u003c/a\u003e Added a _resolve_path() static method to InstallPackageAction (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/30884c2f362d97cdf43df5a67516c0f67d3cef0e\"\u003e\u003ccode\u003e30884c2\u003c/code\u003e\u003c/a\u003e 📝 docs: enhance config reference, expand guides, integrate docstrfmt (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3703\"\u003e#3703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/d6687f21b88daad537698ff930a93bed81652294\"\u003e\u003ccode\u003ed6687f2\u003c/code\u003e\u003c/a\u003e 📝 docs: restructure documentation following Diataxis framework (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3702\"\u003e#3702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/a40b7da27dc8bf28216b0ad3bb54e6b767184052\"\u003e\u003ccode\u003ea40b7da\u003c/code\u003e\u003c/a\u003e ✨ feat(env): add disallow_pass_env to exclude env vars (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/8e85762372840eb6a72ff481efb86de5f1f69ac3\"\u003e\u003ccode\u003e8e85762\u003c/code\u003e\u003c/a\u003e ✨ feat(depends): add glob pattern support for depends option (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3697\"\u003e#3697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4afd60bc181492214689a04430669a1f583589d3\"\u003e\u003ccode\u003e4afd60b\u003c/code\u003e\u003c/a\u003e ✨ feat(package): validate extras against package metadata (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3696\"\u003e#3696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/c50d3437c07910575de12c117065a9ce7f74eb92\"\u003e\u003ccode\u003ec50d343\u003c/code\u003e\u003c/a\u003e ✨ feat(cli): add shell completion via argcomplete (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3695\"\u003e#3695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.34.1...4.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/morzan1001/Dependency-Control/pull/24","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/morzan1001%2FDependency-Control/issues/24","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/24/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":"/ci/builder","pr_created_at":"2026-02-15T22:07:04.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3945030168","node_id":"PR_kwDOCkIcu87D9YnI","number":35018,"state":"open","title":"build(deps): bump the simple group in /ci/builder with 3 updates","user":"dependabot[bot]","labels":["A-dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-15T22:07:04.000Z","updated_at":"2026-02-15T22:07:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"simple","update_count":3,"packages":[{"name":"cryptography","old_version":"46.0.4","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"jupyterlab","old_version":"4.5.3","new_version":"4.5.4","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":"/ci/builder","ecosystem":"pip"},"body":"Bumps the simple group in /ci/builder with 3 updates: [cryptography](https://github.com/pyca/cryptography), [jupyterlab](https://github.com/jupyterlab/jupyterlab) and [types-markdown](https://github.com/typeshed-internal/stub_uploader).\n\nUpdates `cryptography` from 46.0.4 to 46.0.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.4...46.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyterlab` from 4.5.3 to 4.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyterlab/jupyterlab/releases\"\u003ejupyterlab's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.4\u003c/h2\u003e\n\u003ch2\u003e4.5.4\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.3...19f81fcfb33889b59260da8b5aa9221379f10d11\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid using system clipboard in Notebook widget \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18474\"\u003e#18474\u003c/a\u003e (\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate CodeMirror versions, fixing a few selection issues \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18466\"\u003e#18466\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix debugger variable panel to render value 0 properly \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18464\"\u003e#18464\u003c/a\u003e (\u003ca href=\"https://github.com/itsmevichu\"\u003e\u003ccode\u003e@​itsmevichu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsider both the content type and pattern match in \u003ccode\u003eDocumentRegistry.getFileTypeForModel()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18409\"\u003e#18409\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efalse in saveAs to avoid fetching file body \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18379\"\u003e#18379\u003c/a\u003e (\u003ca href=\"https://github.com/DeborahOlaboye\"\u003e\u003ccode\u003e@​DeborahOlaboye\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump Lumino packages to the 2026.2.5 release, fixing iframe resizing \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18440\"\u003e#18440\u003c/a\u003e (\u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify notebook and cell metadata API changes in JupyterLab 4 \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18304\"\u003e#18304\u003c/a\u003e (\u003ca href=\"https://github.com/Krish-876\"\u003e\u003ccode\u003e@​Krish-876\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument a change in the Code Editor source updates via \u003ccode\u003esharedModel\u003c/code\u003e in JupyterLab 4 \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18260\"\u003e#18260\u003c/a\u003e (\u003ca href=\"https://github.com/Krish-876\"\u003e\u003ccode\u003e@​Krish-876\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Contents API fetch documentation of the \u003ccode\u003econtent\u003c/code\u003e default \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18383\"\u003e#18383\u003c/a\u003e (\u003ca href=\"https://github.com/ceasermikes002\"\u003e\u003ccode\u003e@​ceasermikes002\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AI rules \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18322\"\u003e#18322\u003c/a\u003e (\u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003eThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee \u003ca href=\"https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports\"\u003eour definition of contributors\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2026-01-23\u0026amp;to=2026-02-11\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/brichet\"\u003e\u003ccode\u003e@​brichet\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/ceasermikes002\"\u003e\u003ccode\u003e@​ceasermikes002\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aceasermikes002+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/DeborahOlaboye\"\u003e\u003ccode\u003e@​DeborahOlaboye\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ADeborahOlaboye+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/itsmevichu\"\u003e\u003ccode\u003e@​itsmevichu\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aitsmevichu+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jasongrout\"\u003e\u003ccode\u003e@​jasongrout\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajasongrout+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/Krish-876\"\u003e\u003ccode\u003e@​Krish-876\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AKrish-876+updated%3A2026-01-23..2026-02-11\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e)\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/2ecc1eed9944d9ad080f8c3f8206285338065af4\"\u003e\u003ccode\u003e2ecc1ee\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/19f81fcfb33889b59260da8b5aa9221379f10d11\"\u003e\u003ccode\u003e19f81fc\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18474\"\u003e#18474\u003c/a\u003e on branch 4.5.x (Avoid using system clipboard in Notebook ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/b82e6d75338a27b218298e254b6d31e1d2bd2daf\"\u003e\u003ccode\u003eb82e6d7\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18466\"\u003e#18466\u003c/a\u003e on branch 4.5.x (Update CodeMirror versions, fixing a few ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/c70c36e3c5ece87be55a836f45a6965e75a3d84c\"\u003e\u003ccode\u003ec70c36e\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18440\"\u003e#18440\u003c/a\u003e on branch 4.5.x (Bump Lumino packages to the 2026.2.5 rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/23b9ff52b4d97f33c1fce10089842f51787489ff\"\u003e\u003ccode\u003e23b9ff5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18464\"\u003e#18464\u003c/a\u003e on branch 4.5.x (Fix debugger variable panel to render val...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/553d941f6161e20eed5ddffa85a0da0538e05996\"\u003e\u003ccode\u003e553d941\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18409\"\u003e#18409\u003c/a\u003e on branch 4.5.x (Consider both the content type and patter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/d8acd39e47e71a1732bbca4757355f66b0f3197b\"\u003e\u003ccode\u003ed8acd39\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18304\"\u003e#18304\u003c/a\u003e on branch 4.5.x (Clarify notebook and cell metadata API ch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/e0219696094436eab6a62e4bf5784437bcf0e5a4\"\u003e\u003ccode\u003ee021969\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18260\"\u003e#18260\u003c/a\u003e on branch 4.5.x (Document a change in the Code Editor sour...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/dc39ba5e79190d8721932fee6ece0a329655c667\"\u003e\u003ccode\u003edc39ba5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18383\"\u003e#18383\u003c/a\u003e on branch 4.5.x (Fix Contents API fetch documentation of t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/fd57db92797b12ac0787347a4aa464e71ef38ddc\"\u003e\u003ccode\u003efd57db9\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18322\"\u003e#18322\u003c/a\u003e: Add AI rules (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18395\"\u003e#18395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.5.3...@jupyterlab/lsp@4.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/MaterializeInc/materialize/pull/35018","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fmaterialize/issues/35018","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35018/packages"}},{"old_version":"3.3.9","new_version":"3.10.0.20251106","update_type":"minor","path":null,"pr_created_at":"2026-02-15T08:29:16.000Z","version_change":"3.3.9 → 3.10.0.20251106","issue":{"uuid":"3943500464","node_id":"PR_kwDODg-Tdc7D4iH0","number":48002,"state":"closed","title":"chore(deps): bump the other-dependencies group across 1 directory with 61 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":["webjunkie"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-22T08:27:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-15T08:29:16.000Z","updated_at":"2026-02-22T08:27:25.000Z","time_to_close":604687,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"other-dependencies","update_count":61,"packages":[{"name":"aiokafka","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/aio-libs/aiokafka"},{"name":"antlr4-python3-runtime","old_version":"4.13.1","new_version":"4.13.2"},{"name":"beautifulsoup4","old_version":"4.12.3","new_version":"4.14.3"},{"name":"celery-redbeat","old_version":"2.1.1","new_version":"2.3.3","repository_url":"https://github.com/sibson/redbeat"},{"name":"conditional-cache","old_version":"1.2","new_version":"1.4","repository_url":"https://github.com/Eric-Canas/ConditionalCache"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"emoji","old_version":"2.14.1","new_version":"2.15.0","repository_url":"https://github.com/carpedm20/emoji"},{"name":"grimp","old_version":"3.13","new_version":"3.14","repository_url":"https://github.com/python-grimp/grimp"},{"name":"kombu","old_version":"5.3.7","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"nh3","old_version":"0.2.14","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"numpy","old_version":"2.1.3","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"openpyxl","old_version":"3.1.2","new_version":"3.1.5"},{"name":"orjson","old_version":"3.11.5","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"posthoganalytics","old_version":"7.4.3","new_version":"7.8.3","repository_url":"https://github.com/posthog/posthog-python"},{"name":"polars","old_version":"1.37.1","new_version":"1.38.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"pyroscope-io","old_version":"0.8.11","new_version":"0.8.16","repository_url":"https://github.com/pyroscope-io/pyroscope"},{"name":"scikit-learn","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"semantic-version","old_version":"2.8.5","new_version":"2.10.0","repository_url":"https://github.com/rbarrois/python-semanticversion"},{"name":"sqlalchemy","old_version":"2.0.38","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlalchemy-bigquery","old_version":"1.12.1","new_version":"1.16.0"},{"name":"sqlparse","old_version":"0.5.0","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"temporalio","old_version":"1.14.1","new_version":"1.22.0","repository_url":"https://github.com/temporalio/sdk-python"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"css-inline","old_version":"0.18.0","new_version":"0.20.0","repository_url":"https://github.com/Stranger6667/css-inline"},{"name":"tree-sitter","old_version":"0.24.0","new_version":"0.25.2","repository_url":"https://github.com/tree-sitter/py-tree-sitter"},{"name":"tree-sitter-bash","old_version":"0.23.3","new_version":"0.25.1","repository_url":"https://github.com/tree-sitter/tree-sitter-bash"},{"name":"tree-sitter-go","old_version":"0.23.4","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-go"},{"name":"tree-sitter-javascript","old_version":"0.23.1","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-javascript"},{"name":"tree-sitter-python","old_version":"0.23.6","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-python"},{"name":"tree-sitter-rust","old_version":"0.23.2","new_version":"0.24.0","repository_url":"https://github.com/tree-sitter/tree-sitter-rust"},{"name":"umap-learn","old_version":"0.5.7","new_version":"0.5.11","repository_url":"https://github.com/lmcinnes/umap"},{"name":"whitenoise","old_version":"6.10.0","new_version":"6.11.0","repository_url":"https://github.com/evansd/whitenoise"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"azure-storage-blob","old_version":"12.27.1","new_version":"12.28.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"asgiref","old_version":"3.11.0","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"claude-code-sdk","old_version":"0.0.14","new_version":"0.0.25","repository_url":"https://github.com/anthropics/claude-code-sdk-python"},{"name":"fastavro","old_version":"1.12.0","new_version":"1.12.1","repository_url":"https://github.com/fastavro/fastavro"},{"name":"pydantic-avro","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/godatadriven/pydantic-avro"},{"name":"playwright","old_version":"1.54.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"modal","old_version":"1.2.1","new_version":"1.3.2","repository_url":"https://github.com/modal-labs/modal-client"},{"name":"disposable-email-domains","old_version":"0.0.140","new_version":"0.0.160","repository_url":"https://github.com/disposable-email-domains/disposable-email-domains"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"duckdb","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"markdown-to-mrkdwn","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/fla9ua/markdown_to_mrkdwn"},{"name":"webauthn","old_version":"2.2.0","new_version":"2.7.0","repository_url":"https://github.com/duo-labs/py_webauthn"},{"name":"autoevals","old_version":"0.0.129","new_version":"0.0.130","repository_url":"https://github.com/braintrustdata/autoevals"},{"name":"braintrust","old_version":"0.2.4","new_version":"0.5.5","repository_url":"https://github.com/braintrustdata/braintrust-sdk"},{"name":"braintrust-langchain","old_version":"0.0.4","new_version":"0.2.1","repository_url":"https://github.com/braintrustdata/braintrust-sdk"},{"name":"datamodel-code-generator","old_version":"0.36.0","new_version":"0.53.0","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"debugpy","old_version":"1.8.16","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"fakeredis","old_version":"2.23.3","new_version":"2.33.0"},{"name":"ipython","old_version":"9.3.0","new_version":"9.10.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ty","old_version":"0.0.4","new_version":"0.0.15","repository_url":"https://github.com/astral-sh/ty"},{"name":"openapi-spec-validator","old_version":"0.7.1","new_version":"0.7.2","repository_url":"https://github.com/python-openapi/openapi-spec-validator"},{"name":"ruff","old_version":"0.14.11","new_version":"0.15.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"tach","old_version":"0.20.0","new_version":"0.33.2","repository_url":"https://github.com/gauge-sh/tach"},{"name":"types-boto3","old_version":"1.37.6","new_version":"1.42.44"},{"name":"types-markdown","old_version":"3.3.9","new_version":"3.10.0.20251106","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-pyyaml","old_version":"6.0.1","new_version":"6.0.12.20250915","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the other-dependencies group with 61 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiokafka](https://github.com/aio-libs/aiokafka) | `0.12.0` | `0.13.0` |\n| [antlr4-python3-runtime](http://www.antlr.org) | `4.13.1` | `4.13.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.3` | `4.14.3` |\n| [celery-redbeat](https://github.com/sibson/redbeat) | `2.1.1` | `2.3.3` |\n| [conditional-cache](https://github.com/Eric-Canas/ConditionalCache) | `1.2` | `1.4` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [emoji](https://github.com/carpedm20/emoji) | `2.14.1` | `2.15.0` |\n| [grimp](https://github.com/python-grimp/grimp) | `3.13` | `3.14` |\n| [kombu](https://github.com/celery/kombu) | `5.3.7` | `5.6.2` |\n| [nh3](https://github.com/messense/nh3) | `0.2.14` | `0.3.2` |\n| [numpy](https://github.com/numpy/numpy) | `2.1.3` | `2.4.2` |\n| [openpyxl](https://openpyxl.readthedocs.io) | `3.1.2` | `3.1.5` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.5` | `3.11.7` |\n| [posthoganalytics](https://github.com/posthog/posthog-python) | `7.4.3` | `7.8.3` |\n| [polars](https://github.com/pola-rs/polars) | `1.37.1` | `1.38.1` |\n| [pyroscope-io](https://github.com/pyroscope-io/pyroscope) | `0.8.11` | `0.8.16` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.0` | `1.8.0` |\n| [semantic-version](https://github.com/rbarrois/python-semanticversion) | `2.8.5` | `2.10.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.38` | `2.0.46` |\n| [sqlalchemy-bigquery[bqstorage]](https://github.com/googleapis/python-bigquery-sqlalchemy) | `1.12.1` | `1.16.0` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.0` | `0.5.5` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [temporalio](https://github.com/temporalio/sdk-python) | `1.14.1` | `1.22.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [css-inline](https://github.com/Stranger6667/css-inline) | `0.18.0` | `0.20.0` |\n| [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | `0.24.0` | `0.25.2` |\n| [tree-sitter-bash](https://github.com/tree-sitter/tree-sitter-bash) | `0.23.3` | `0.25.1` |\n| [tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) | `0.23.4` | `0.25.0` |\n| [tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) | `0.23.1` | `0.25.0` |\n| [tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) | `0.23.6` | `0.25.0` |\n| [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) | `0.23.2` | `0.24.0` |\n| [umap-learn](https://github.com/lmcinnes/umap) | `0.5.7` | `0.5.11` |\n| [whitenoise](https://github.com/evansd/whitenoise) | `6.10.0` | `6.11.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.27.1` | `12.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.0` | `3.11.1` |\n| [claude-code-sdk](https://github.com/anthropics/claude-code-sdk-python) | `0.0.14` | `0.0.25` |\n| [fastavro](https://github.com/fastavro/fastavro) | `1.12.0` | `1.12.1` |\n| [pydantic-avro](https://github.com/godatadriven/pydantic-avro) | `0.9.0` | `0.10.0` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.54.0` | `1.58.0` |\n| [modal](https://github.com/modal-labs/modal-client) | `1.2.1` | `1.3.2` |\n| [disposable-email-domains](https://github.com/disposable-email-domains/disposable-email-domains) | `0.0.140` | `0.0.160` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.4.2` | `1.4.4` |\n| [markdown-to-mrkdwn](https://github.com/fla9ua/markdown_to_mrkdwn) | `0.2.0` | `0.3.1` |\n| [webauthn](https://github.com/duo-labs/py_webauthn) | `2.2.0` | `2.7.0` |\n| [autoevals](https://github.com/braintrustdata/autoevals) | `0.0.129` | `0.0.130` |\n| [braintrust](https://github.com/braintrustdata/braintrust-sdk) | `0.2.4` | `0.5.5` |\n| [braintrust-langchain](https://github.com/braintrustdata/braintrust-sdk) | `0.0.4` | `0.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.36.0` | `0.53.0` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.16` | `1.8.20` |\n| [fakeredis[lua]](https://github.com/cunla/fakeredis-py) | `2.23.3` | `2.33.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.3.0` | `9.10.0` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.4` | `0.0.15` |\n| [openapi-spec-validator](https://github.com/python-openapi/openapi-spec-validator) | `0.7.1` | `0.7.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.11` | `0.15.0` |\n| [tach](https://github.com/gauge-sh/tach) | `0.20.0` | `0.33.2` |\n| [types-boto3[essential]](https://github.com/youtype/mypy_boto3_builder) | `1.37.6` | `1.42.44` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.3.9` | `3.10.0.20251106` |\n| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.1` | `6.0.12.20250915` |\n\n\nUpdates `aiokafka` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/releases\"\u003eaiokafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003cp\u003eBreaking changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eResolve API versions at connection with brokers\n\u003ccode\u003eapi_version\u003c/code\u003e parameter has been removed from the different clients (admin/consumer/producer)\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1136\"\u003e#1136\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incomplete documentation for \u003ccode\u003eAIOKafkaConsumer.offset_for_times\u003c/code\u003e\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1068\"\u003e#1068\u003c/a\u003e by \u003ca href=\"https://github.com/jzvandenoever\"\u003e\u003ccode\u003e@​jzvandenoever\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Java Client API reference (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1069\"\u003e#1069\u003c/a\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake KafkaStorageError retriable after metadata refresh like in other\nimplementations (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1115\"\u003e#1115\u003c/a\u003e by \u003ca href=\"https://github.com/omerhadari\"\u003e\u003ccode\u003e@​omerhadari\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure the transaction coordinator is refreshed after broker fail‑over,\nso transactional producers resume once a new coordinator is elected.\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1135\"\u003e#1135\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename the RequestHeader version classes to match official version\nschemas (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1141\"\u003e#1141\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse SPDX license expression for project metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/blob/master/CHANGES.rst\"\u003eaiokafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.13.0 (2026-01-02)\u003c/h1\u003e\n\u003cp\u003eBreaking changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eResolve API versions at connection with brokers\n\u003ccode\u003eapi_version\u003c/code\u003e parameter has been removed from the different clients (admin/consumer/producer)\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1136\"\u003e#1136\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incomplete documentation for \u003ccode\u003eAIOKafkaConsumer.offset_for_times\u003c/code\u003e\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1068\"\u003e#1068\u003c/a\u003e by \u003ca href=\"https://github.com/jzvandenoever\"\u003e\u003ccode\u003e@​jzvandenoever\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Java Client API reference (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1069\"\u003e#1069\u003c/a\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake KafkaStorageError retriable after metadata refresh like in other\nimplementations (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1115\"\u003e#1115\u003c/a\u003e by \u003ca href=\"https://github.com/omerhadari\"\u003e\u003ccode\u003e@​omerhadari\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure the transaction coordinator is refreshed after broker fail‑over,\nso transactional producers resume once a new coordinator is elected.\n(pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1135\"\u003e#1135\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename the RequestHeader version classes to match official version\nschemas (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1141\"\u003e#1141\u003c/a\u003e by \u003ca href=\"https://github.com/vmaurin\"\u003e\u003ccode\u003e@​vmaurin\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse SPDX license expression for project metadata.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/3b7ccd0fff5c92a9cf12c12e361370082ad12b0c\"\u003e\u003ccode\u003e3b7ccd0\u003c/code\u003e\u003c/a\u003e Prepare 0.13.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/741aa2c55fa12fa849967028a35e88115995bc56\"\u003e\u003ccode\u003e741aa2c\u003c/code\u003e\u003c/a\u003e Rename RequestHeader_vX classes (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1141\"\u003e#1141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/7b7c4ff08298027037384878db1108fc44befa79\"\u003e\u003ccode\u003e7b7c4ff\u003c/code\u003e\u003c/a\u003e Build wheels for Python 3.14 (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1140\"\u003e#1140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/9f9161eb78785683edc7a8821983491221ccd9c6\"\u003e\u003ccode\u003e9f9161e\u003c/code\u003e\u003c/a\u003e Handle node failure properly in sender (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1135\"\u003e#1135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/7d0bd255f40d156f7016f70d744738321ba65ebe\"\u003e\u003ccode\u003e7d0bd25\u003c/code\u003e\u003c/a\u003e Resolve API versions on connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1136\"\u003e#1136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/5ec91e769147699322591e641e31107dfea65d29\"\u003e\u003ccode\u003e5ec91e7\u003c/code\u003e\u003c/a\u003e Fix type annotations for compression (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/c496692a099fa0be35ee6b02a179d1f7e3da9f7c\"\u003e\u003ccode\u003ec496692\u003c/code\u003e\u003c/a\u003e Remove dead code vendored from python-kafka (metrics) (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/5e98938c6c3ffe234fef2e85934fe8d6bacf1991\"\u003e\u003ccode\u003e5e98938\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9 (end of life) (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1116\"\u003e#1116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/81a5f363d05e823242c476487690c0ca7f65862e\"\u003e\u003ccode\u003e81a5f36\u003c/code\u003e\u003c/a\u003e 1115.bugfix: Make KafkaStorageError retriable after metadata refresh (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1115\"\u003e#1115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/c4b604062192d005cdcefb79eb6dbc717764c700\"\u003e\u003ccode\u003ec4b6040\u003c/code\u003e\u003c/a\u003e Use SPDX license identifier (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1076\"\u003e#1076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiokafka/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antlr4-python3-runtime` from 4.13.1 to 4.13.2\n\nUpdates `beautifulsoup4` from 4.12.3 to 4.14.3\n\nUpdates `celery-redbeat` from 2.1.1 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sibson/redbeat/releases\"\u003ecelery-redbeat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.3\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etest(deps): add pytz which is used in test suites by \u003ca href=\"https://github.com/miketheman\"\u003e\u003ccode\u003e@​miketheman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/250\"\u003esibson/redbeat#250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Update the utcoffset func call by \u003ca href=\"https://github.com/ElijahL\"\u003e\u003ccode\u003e@​ElijahL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/256\"\u003esibson/redbeat#256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse is for correct type comparison by \u003ca href=\"https://github.com/sibson\"\u003e\u003ccode\u003e@​sibson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/257\"\u003esibson/redbeat#257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd RedisCluster support by \u003ca href=\"https://github.com/kkinder\"\u003e\u003ccode\u003e@​kkinder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/262\"\u003esibson/redbeat#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd ssl support for redis with sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/258\"\u003esibson/redbeat#258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ElijahL\"\u003e\u003ccode\u003e@​ElijahL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/256\"\u003esibson/redbeat#256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kkinder\"\u003e\u003ccode\u003e@​kkinder\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/262\"\u003esibson/redbeat#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/sibson/redbeat/pull/258\"\u003esibson/redbeat#258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/sibson/redbeat/compare/2.1.1...v2.2.0\"\u003ehttps://github.com/sibson/redbeat/compare/2.1.1...v2.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sibson/redbeat/blob/main/CHANGES.txt\"\u003ecelery-redbeat's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.3dev (unreleased)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 and add CI coverage through Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.3 (2025-07-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd Python 3.12 support, thanks \u003ca href=\"https://github.com/AnkiHubSoftware\"\u003e\u003ccode\u003e@​AnkiHubSoftware\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, update RedBeatSchedulerEntry definitions for improved type safety and correctness, thanks \u003ca href=\"https://github.com/sotosapp\"\u003e\u003ccode\u003e@​sotosapp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, Redbeat no longer updating tasks definitions on Redis \u003ca href=\"https://redirect.github.com/sibson/redbeat/issues/289\"\u003e#289\u003c/a\u003e, thanks \u003ca href=\"https://github.com/semoac\"\u003e\u003ccode\u003e@​semoac\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci, fix testpypi publish by checking out source before version update\u003c/li\u003e\n\u003cli\u003etest, pin fakeredis\u0026lt;2.27.0 for Python 3.8 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0 (2025-02-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebugfix, allow disabling of lock with redbeat_lock_key = None, thanks \u003ca href=\"https://github.com/jscaria\"\u003e\u003ccode\u003e@​jscaria\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/molog\"\u003e\u003ccode\u003e@​molog\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bertosantamaria\"\u003e\u003ccode\u003e@​bertosantamaria\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, track changes to primary in Sentinel, thanks \u003ca href=\"https://github.com/Niccolum\"\u003e\u003ccode\u003e@​Niccolum\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix, static entries honour last_run_at, thanks \u003ca href=\"https://github.com/kchamz\"\u003e\u003ccode\u003e@​kchamz\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc updates, thanks \u003ca href=\"https://github.com/miketheman\"\u003e\u003ccode\u003e@​miketheman\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cikay\"\u003e\u003ccode\u003e@​cikay\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.0 (2023-12-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd ssl support for redis with sentinel, thanks \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd RedisCluster Support, thanks \u003ca href=\"https://github.com/kkinder\"\u003e\u003ccode\u003e@​kkinder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/2b85c88951fdd2964610819c1a59e4914e4c205b\"\u003e\u003ccode\u003e2b85c88\u003c/code\u003e\u003c/a\u003e prepare for release of 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/3d107dd7cf5c310bcd05fd8ba76da622a0f84b13\"\u003e\u003ccode\u003e3d107dd\u003c/code\u003e\u003c/a\u003e update for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/30e812dd1a178dca02390c4f4a3e8fe79c43ca39\"\u003e\u003ccode\u003e30e812d\u003c/code\u003e\u003c/a\u003e makefile: add version target using grep for warning-free version check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/1242fde248ed7aeebe7cd148f873977f0face2e8\"\u003e\u003ccode\u003e1242fde\u003c/code\u003e\u003c/a\u003e update changelog for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/f35e31cfb0f9c0cf6662821cc4d4d7ec1d45d144\"\u003e\u003ccode\u003ef35e31c\u003c/code\u003e\u003c/a\u003e ci: fetch full git history for pbr versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/acf82610cb0fab5caa3418c42efcfb4715686d2e\"\u003e\u003ccode\u003eacf8261\u003c/code\u003e\u003c/a\u003e build: switch to pbr for dynamic versioning and simplify workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/a317b5ff3a4f7b6508c8d91ae55f3ac736d646be\"\u003e\u003ccode\u003ea317b5f\u003c/code\u003e\u003c/a\u003e bump version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/5e185f63ba10458545ec4c8a91747006da65de63\"\u003e\u003ccode\u003e5e185f6\u003c/code\u003e\u003c/a\u003e ci: use .dev0.\u0026lt;githash\u0026gt; for testpypi version (PEP 440/PyPI compliant)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/f384d757f8f58ca2cd26d36c13dfb8971461d3de\"\u003e\u003ccode\u003ef384d75\u003c/code\u003e\u003c/a\u003e ci: ensure PEP 440 compliant version for testpypi with git hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sibson/redbeat/commit/bfc520b778a0234815917e3aba472a27ffabc6f6\"\u003e\u003ccode\u003ebfc520b\u003c/code\u003e\u003c/a\u003e test: pin fakeredis\u0026lt;2.27.0 for Python 3.8 support (see comment)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sibson/redbeat/compare/2.1.1...v2.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `conditional-cache` from 1.2 to 1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Eric-Canas/ConditionalCache/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.6.1 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.10.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\u003c/p\u003e\n\u003ch2\u003ednspython 2.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.9.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release.  Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns/btreezone.py provides another zone versioned implementation built on top of a\nB-tree.  It maintains DNSSEC sort order, labels nodes as delegation points or glue,\nand can find the \u0026quot;bounds\u0026quot; of a name (useful for DNSSEC responses).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/query.py now provides make_socket(), make_ssl_socket(), and make_ssl_context()\nto make using persistent connections with the query code easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/win32util.py now supports explicitly setting the configuration method used to get\nsystem dns info, using the set_config_method() function.   There is a new configuration\nmethod that uses the Win32 API, which can be set using\nset_config_method(ConfigMethod.Win32).  We are considering making the Win32 API\nthe default in the future as we believe it to be the most accurate.  Any feedback on\nit compared to the other methods is welcome.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSYNC record is now supported.  This type is still in draft stage at the IETF\nand is subject to change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns.query.https() and dns.asyncquery.https() now support HTTP/3 and the http_version\nparameter may be used to specify which version to use.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf the cryptography module is installed, then dnspython will now create deterministic\nECDSA signatures by default.  Cryptography, if installed, must be at least version 43.\nThanks to Jakob Schlyter for adding the feature.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe RESINFO and WALLET RdataTypes are now supported.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe COOKIE and Report-Channel EDNS0 options are now supported.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAll supported RdataTypes can now be imported at a single time rather than lazily on\nfirst use by calling dns.rdata.load_all_types().\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe SVCB and HTTPS records now support the ohttp parameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exfr() and inbound_xfr() now share a common implementation.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTokens are now supported for QUIC and HTTP/3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns.message.from_wire() now saves the input wire format in the Message's \u0026quot;wire\u0026quot;\nattribute.  Likewise, dns.message.Message.to_wire() now records the generated\nwire format in that attribute.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe dns.message.Message object now has a get_options() helper to retrieve EDNS0\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/77fd94cd9716faf23e0a6e333f6568fc24284402\"\u003e\u003ccode\u003e77fd94c\u003c/code\u003e\u003c/a\u003e 2.8.0 versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/884f38345a8152342fe8ab5da8db9aab654051ba\"\u003e\u003ccode\u003e884f383\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/1938fe331f97376bf91c028fbfb8c7588c1b84f4\"\u003e\u003ccode\u003e1938fe3\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a35d6925efe20744e8cf7545d19d03ba06e7ab6f\"\u003e\u003ccode\u003ea35d692\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c862baaf0d0aa36d2e7003dfe226cd6ad4d827c4\"\u003e\u003ccode\u003ec862baa\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/0945d5923d58048c17325975f70f0738c87570b4\"\u003e\u003ccode\u003e0945d59\u003c/code\u003e\u003c/a\u003e more lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/8fa6766d2f7a2431372fc912fb334e752290ebf2\"\u003e\u003ccode\u003e8fa6766\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/641633503ee6b07bf382594ac04707072b90de18\"\u003e\u003ccode\u003e6416335\u003c/code\u003e\u003c/a\u003e Type syntax (\u003ca href=\"https://redirect.github.com/rthalley/dnspython/issues/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a4591447b7d6e38479bcddb14de3b69f314e7009\"\u003e\u003ccode\u003ea459144\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a0d5f172e89f30709b47b59fb0919d8cf137f611\"\u003e\u003ccode\u003ea0d5f17\u003c/code\u003e\u003c/a\u003e fix the all entries\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.6.1...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `emoji` from 2.14.1 to 2.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/carpedm20/emoji/releases\"\u003eemoji's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/carpedm20/emoji/blob/master/CHANGES.md\"\u003eemoji's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.15.0 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/d26c675190a6b6c0edee959d7b896721a9c3641d\"\u003e\u003ccode\u003ed26c675\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/carpedm20/emoji/issues/322\"\u003e#322\u003c/a\u003e from cvzi/unicode17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/c52491ca37bcae81871f2678255ccbea9ee1b4f5\"\u003e\u003ccode\u003ec52491c\u003c/code\u003e\u003c/a\u003e Version bump 2.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/10b13c0956d726d9c6679406b6b408e6015c3b2d\"\u003e\u003ccode\u003e10b13c0\u003c/code\u003e\u003c/a\u003e Update translations to CLDR release-48-alpha3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/9dd9a63458e8ff543cf7ae82ef4a674bc4a94186\"\u003e\u003ccode\u003e9dd9a63\u003c/code\u003e\u003c/a\u003e Update to Unicode 17.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/d54b2f0efafa74800b49d73d08b6481d274a4534\"\u003e\u003ccode\u003ed54b2f0\u003c/code\u003e\u003c/a\u003e Remove Python 3.7, Add Python 3.13 and 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/5c4b9153162f4a11fc339f69cf5c9b8a5182c9c5\"\u003e\u003ccode\u003e5c4b915\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/carpedm20/emoji/issues/318\"\u003e#318\u003c/a\u003e from allrob23/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/45e5785b90368bd58f8742b1c8b667446ee57a7f\"\u003e\u003ccode\u003e45e5785\u003c/code\u003e\u003c/a\u003e fix: lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carpedm20/emoji/commit/69c73d5ff5deb6f5c68ad4a109d38f1001a1bed1\"\u003e\u003ccode\u003e69c73d5\u003c/code\u003e\u003c/a\u003e refactor: change _loaded_keys to use set\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/carpedm20/emoji/compare/v2.14.1...v2.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grimp` from 3.13 to 3.14\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-grimp/grimp/blob/main/CHANGELOG.rst\"\u003egrimp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.14 (2025-12-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport building graph from namespace packages, not just their portions.\u003c/li\u003e\n\u003cli\u003eBugfix: support Python 3.14 syntax such as t-strings as syntax errors.\n(\u003ca href=\"https://redirect.github.com/python-grimp/grimp/issues/268\"\u003epython-grimp/grimp#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/d4c235024704243d33a14cb2c393a91cc48591c9\"\u003e\u003ccode\u003ed4c2350\u003c/code\u003e\u003c/a\u003e Update macos runners in release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/d76ea0d5b3d2e4806510d8ea03427c9e9999ac22\"\u003e\u003ccode\u003ed76ea0d\u003c/code\u003e\u003c/a\u003e Release v3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/f42891225bc9eba71314b038434c8a3242e811f4\"\u003e\u003ccode\u003ef428912\u003c/code\u003e\u003c/a\u003e Add docs for better namespace support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/afd784bbe6ab532dd8b3b92c637e3c312a2db977\"\u003e\u003ccode\u003eafd784b\u003c/code\u003e\u003c/a\u003e Include imports of namespace packages\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/fb5bf953c8b1ea67b049e97a8050a6ee009899cf\"\u003e\u003ccode\u003efb5bf95\u003c/code\u003e\u003c/a\u003e Don't drill down into invalid identifier directories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/d35653edb5fd006aae28f0c024bebf7604265bbb\"\u003e\u003ccode\u003ed35653e\u003c/code\u003e\u003c/a\u003e Expand test to include building graph from root namespace\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/bf4236ff0991f85b717b64091f8c1f3160983b11\"\u003e\u003ccode\u003ebf4236f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/04c86eb89a4c7c9502b26f75e3083bc9f5701837\"\u003e\u003ccode\u003e04c86eb\u003c/code\u003e\u003c/a\u003e Include namespaces in graph\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/47404cbbee1cc06d5c38f42570ea283a9bffacc6\"\u003e\u003ccode\u003e47404cb\u003c/code\u003e\u003c/a\u003e Don't include directories that have no Python files within them\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-grimp/grimp/commit/9de6b1efa94af207f4772f3a3d27f95fa79e9bd5\"\u003e\u003ccode\u003e9de6b1e\u003c/code\u003e\u003c/a\u003e Allow passing in namespace packages to build_graph\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-grimp/grimp/compare/v3.13...v3.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kombu` from 5.3.7 to 5.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/kombu/releases\"\u003ekombu's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify requirements given Py3.9+ baseline by \u003ca href=\"https://github.com/jayaddison\"\u003e\u003ccode\u003e@​jayaddison\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2414\"\u003ecelery/kombu#2414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: credential_provider compatibility issue with redis \u0026lt; 5.3.0 by \u003ca href=\"https://github.com/alaminopu\"\u003e\u003ccode\u003e@​alaminopu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2423\"\u003ecelery/kombu#2423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix SentinelChannel to pass ACL credentials to master_for() by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2426\"\u003ecelery/kombu#2426\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the error handling in ack deadline extension by \u003ca href=\"https://github.com/tungntpham\"\u003e\u003ccode\u003e@​tungntpham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2430\"\u003ecelery/kombu#2430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2434\"\u003ecelery/kombu#2434\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jayaddison\"\u003e\u003ccode\u003e@​jayaddison\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2414\"\u003ecelery/kombu#2414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2426\"\u003ecelery/kombu#2426\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tungntpham\"\u003e\u003ccode\u003e@​tungntpham\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2430\"\u003ecelery/kombu#2430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/kombu/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/kombu/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure hub close does also remove global event loop reference by \u003ca href=\"https://github.com/oliverhaas\"\u003e\u003ccode\u003e@​oliverhaas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2404\"\u003ecelery/kombu#2404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: default value for SQS's receive message by \u003ca href=\"https://github.com/cuducos\"\u003e\u003ccode\u003e@​cuducos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2405\"\u003ecelery/kombu#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFeat: add support for credential_provider to redis broker by \u003ca href=\"https://github.com/alaminopu\"\u003e\u003ccode\u003e@​alaminopu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2408\"\u003ecelery/kombu#2408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2416\"\u003ecelery/kombu#2416\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oliverhaas\"\u003e\u003ccode\u003e@​oliverhaas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2404\"\u003ecelery/kombu#2404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cuducos\"\u003e\u003ccode\u003e@​cuducos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2405\"\u003ecelery/kombu#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alaminopu\"\u003e\u003ccode\u003e@​alaminopu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2408\"\u003ecelery/kombu#2408\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/kombu/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/kombu/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003ch3\u003eQoS Max Prefetch Limit \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2348\"\u003ecelery/kombu#2348\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ePrevent Out Of Memory crashes when queues flood with ETA/countdown tasks. The new optional \u003ccode\u003emax_prefetch\u003c/code\u003e parameter caps how many messages workers hold in memory. Defaults to unlimited (\u003ccode\u003eNone\u003c/code\u003e) to preserve existing behavior.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom kombu.common import QoS\n\u003ch1\u003eLimit prefetch to maximum 100 messages\u003c/h1\u003e\n\u003cp\u003eqos = QoS(callback=consumer.qos, initial_value=10, max_prefetch=100)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eRedis Polling Interval Support \u003ca href=\"https://redirect.github.com/celery/kombu/pull/2346\"\u003ecelery/kombu#2346\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eFix Redis transport to properly propagate \u003ccode\u003epolling_interval\u003c/code\u003e and \u003ccode\u003ebrpop_timeout\u003c/code\u003e from \u003ccode\u003etransport_options\u003c/code\u003e to the Channel's \u003ccode\u003e_brpop_start\u003c/code\u003e timeout.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eapp.conf.broker_transport_options = {\u0026quot;polling_interval\u0026quot;: 10}\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/kombu/blob/main/Changelog.rst\"\u003ekombu's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 29 December, 2025\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Improve error handling in GCP Pub/Sub ack deadline extension ([#2430](https://github.com/celery/kombu/issues/2430))\n- Fix SentinelChannel to pass ACL credentials to master_for() ([#2426](https://github.com/celery/kombu/issues/2426))\n- Fix credential_provider compatibility with redis-py \u0026lt; 5.3.0 ([#2423](https://github.com/celery/kombu/issues/2423))\n- Simplify requirements given Py3.9+ baseline ([#2414](https://github.com/celery/kombu/issues/2414))\n- Prepare for release: v5.6.2 ([#2434](https://github.com/celery/kombu/issues/2434))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 25 November, 2025\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure hub close does also remove global event loop reference (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2404\"\u003e#2404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: default value for SQS's receive message (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2405\"\u003e#2405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFeat: add support for credential_provider to redis broker (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2408\"\u003e#2408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2416\"\u003e#2416\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 1 November, 2025\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nQoS Max Prefetch Limit\n----------------------\n\u003cp\u003e\u003ccode\u003ePR [#2348](https://github.com/celery/kombu/issues/2348) \u0026amp;lt;https://github.com/celery/kombu/pull/2348\u0026amp;gt;\u003c/code\u003e_\u003c/p\u003e\n\u003cp\u003ePrevent Out Of Memory crashes when queues flood with ETA/countdown tasks. The new optional \u003ccode\u003emax_prefetch\u003c/code\u003e parameter caps how many messages workers hold in memory. Defaults to unlimited (\u003ccode\u003eNone\u003c/code\u003e) to preserve existing behavior.\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003efrom kombu.common import QoS\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/279b81f3042f23524111d3afcc773e8bb5530672\"\u003e\u003ccode\u003e279b81f\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2434\"\u003e#2434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/a12f3a924a21a5ee1f3b5ee9f60dd93e11102c42\"\u003e\u003ccode\u003ea12f3a9\u003c/code\u003e\u003c/a\u003e Improve the error handling in ack deadline extension (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2430\"\u003e#2430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/4055fa764b419f2c620f44c7c63afc7248d189b0\"\u003e\u003ccode\u003e4055fa7\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2432\"\u003e#2432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/8756f49760ea68a8fe81fb5a6fbd524363c8bccb\"\u003e\u003ccode\u003e8756f49\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2429\"\u003e#2429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/0a5a0bc26fd5ef775d2d3c3087820f7baea474a2\"\u003e\u003ccode\u003e0a5a0bc\u003c/code\u003e\u003c/a\u003e Fix SentinelChannel to pass ACL credentials to master_for() (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2426\"\u003e#2426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/f204769417e3b46b74f75b9e66e23d1e3033573c\"\u003e\u003ccode\u003ef204769\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2424\"\u003e#2424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/9a7285908f0d4a4c548bdd011a8b2d54371b6077\"\u003e\u003ccode\u003e9a72859\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/260d51750e6f04bf716d240912dc4bdcae269ba5\"\u003e\u003ccode\u003e260d517\u003c/code\u003e\u003c/a\u003e fix: credential_provider compatibility issue with redis \u0026lt; 5.3.0 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2423\"\u003e#2423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/161a61b934fcfd9197f4d3e1458479e82cd717dc\"\u003e\u003ccode\u003e161a61b\u003c/code\u003e\u003c/a\u003e Simplify requirements given Py3.9+ baseline (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2414\"\u003e#2414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/kombu/commit/5208431c95bda47c7f422638dd273e086ab34be9\"\u003e\u003ccode\u003e5208431\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/kombu/issues/2416\"\u003e#2416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/kombu/compare/v5.3.7...v5.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nh3` from 0.2.14 to 0.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/messense/nh3/releases\"\u003enh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade GitHub Actions by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Stop reinstalling Rust on windows-11-arm by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/95\"\u003emessense/nh3#95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd README reference in pyproject.toml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/97\"\u003emessense/nh3#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/96\"\u003emessense/nh3#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild wheels for Python 3.14 free-threaded by \u003ca href=\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/100\"\u003emessense/nh3#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.1...v0.3.2\"\u003ehttps://github.com/messense/nh3/compare/v0.3.1...v0.3.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump ammonia from 4.1.1 to 4.1.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/93\"\u003emessense/nh3#93\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.25.1 to 0.26.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/92\"\u003emessense/nh3#92\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.0...v0.3.1\"\u003ehttps://github.com/messense/nh3/compare/v0.3.0...v0.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: add reusable \u003ccode\u003eCleaner\u003c/code\u003e API by \u003ca href=\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/90\"\u003emessense/nh3#90\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.2.22...v0.3.0\"\u003ehttps://github.com/messense/nh3/compare/v0.2.22...v0.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.2.22\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuild Windows arm64 wheels by \u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/85\"\u003emessense/nh3#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.25.0 to 0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/86\"\u003emessense/nh3#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ammonia from 4.1.0 to 4.1.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/89\"\u003emessense/nh3#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose CSS filtering options by \u003ca href=\"https://github.com/exyi\"\u003e\u003ccode\u003e@​exyi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/87\"\u003emessense/nh3#87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/85\"\u003emessense/nh3#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/exyi\"\u003e\u003ccode\u003e@​exyi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/87\"\u003emessense/nh3#87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.2.21...v0.2.22\"\u003ehttps://github.com/messense/nh3/compare/v0.2.21...v0.2.22\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.2.21\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd two additional examples for the documentation by \u003ca href=\"https://github.com/HelgeKrueger\"\u003e\u003ccode\u003e@​HelgeKrueger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/72\"\u003emessense/nh3#72\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyo3 from 0.23.3 to 0.23.4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/75\"\u003emessense/nh3#75\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HelgeKrueger\"\u003e\u003ccode\u003e@​HelgeKrueger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/72\"\u003emessense/nh3#72\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/182f83b92cbb5dd64d603648f15f7471cc54c742\"\u003e\u003ccode\u003e182f83b\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/96eb6e4c05ad6575896c83a961bc4e442d7938e4\"\u003e\u003ccode\u003e96eb6e4\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/0f1f459deaec6f1bd2fc5297bf78eb3db3f224b4\"\u003e\u003ccode\u003e0f1f459\u003c/code\u003e\u003c/a\u003e Update to Rust 2024 edition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/6b6fca5de3955c8cb8e65186ffea5e5b4f23a82b\"\u003e\u003ccode\u003e6b6fca5\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/f9969354d3bd857944090b3da04fcaea1c755192\"\u003e\u003ccode\u003ef996935\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/8f7bf64a4c8d876123f4be4e3c6e7863fced0062\"\u003e\u003ccode\u003e8f7bf64\u003c/code\u003e\u003c/a\u003e Bump pyo3 from 0.27.0 to 0.27.1 (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/9f12749e8e00e1535d5903f8756ef55001c43162\"\u003e\u003ccode\u003e9f12749\u003c/code\u003e\u003c/a\u003e Bump pyo3 from 0.26.0 to 0.27.0 (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/5ba30e21cf43876a592c1bc3fda4b0ec1b52195f\"\u003e\u003ccode\u003e5ba30e2\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eurls\u003c/code\u003e to dynamic metadata in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/f1f2912a824048dd40f91d52a4c2c0beb5731b6d\"\u003e\u003ccode\u003ef1f2912\u003c/code\u003e\u003c/a\u003e Build wheels for Python 3.14 free-threaded (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/messense/nh3/commit/27ab1313750dc9f7277c14a09e4df0a384c03b34\"\u003e\u003ccode\u003e27ab131\u003c/code\u003e\u003c/a\u003e Keep GitHub Actions up to date with GitHub's Dependabot (\u003ca href=\"https://redirect.github.com/messense/nh3/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/messense/nh3/compare/v0.2.14...v0.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.1.3 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2 (Feb 1, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.2 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.2 is a patch release that fixes bugs discovered after the\n2.4.1 release. Highlights are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixes memory leaks\u003c/li\u003e\n\u003cli\u003eUpdates OpenBLAS to fix hangs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eDaniel Tang +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKumar Aditya\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eVikram Kumar +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 12 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30629\"\u003e#30629\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30636\"\u003e#30636\u003c/a\u003e: TYP: \u003ccode\u003earange\u003c/code\u003e: accept datetime strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30657\"\u003e#30657\u003c/a\u003e: MAINT: avoid possible race condition by not touching \u003ccode\u003eos.environ\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30700\"\u003e#30700\u003c/a\u003e: BUG: validate contraction axes in tensordot (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30521\"\u003e#30521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30701\"\u003e#30701\u003c/a\u003e: DOC: __array_namespace__info__: set_module not __module__ (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30679\"\u003e#30679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30702\"\u003e#30702\u003c/a\u003e: BUG: fix free-threaded PyObject layout in replace_scalar_type_names...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30703\"\u003e#30703\u003c/a\u003e: TST: fix limited API example in tests for latest Cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30709\"\u003e#30709\u003c/a\u003e: BUG: Fix some bugs found via valgrind (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30680\"\u003e#30680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30712\"\u003e#30712\u003c/a\u003e: MAINT: replace ob_type access with Py_TYPE in PyArray_CheckExact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30713\"\u003e#30713\u003c/a\u003e: BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30736\"\u003e#30736\u003c/a\u003e: BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30737\"\u003e#30737\u003c/a\u003e: backport scipy-openblas version change\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe commands can be copied into the command line, but be sure to replace 2.4.0\nwith the correct version. This should be read together with the\n:ref:\u003ccode\u003egeneral release guide \u0026lt;prepare_release\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eFacility preparation\u003c/h1\u003e\n\u003cp\u003eBefore beginning to make a release, use the \u003ccode\u003erequirements/*_requirements.txt\u003c/code\u003e files to\nensure that you have the needed software. Most software can be installed with\npip, but some will require apt-get, dnf, or whatever your system uses for\nsoftware. You will also need a GitHub personal access token (PAT) to push the\ndocumentation. There are a few ways to streamline things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGit can be set up to use a keyring to store your GitHub personal access token.\nSearch online for the details.\u003c/li\u003e\n\u003cli\u003eYou can use the \u003ccode\u003ekeyring\u003c/code\u003e app to store the PyPI password for twine. See the\nonline twine documentation for details.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePrior to release\u003c/h1\u003e\n\u003ch2\u003eAdd/drop Python versions\u003c/h2\u003e\n\u003cp\u003eWhen adding or dropping Python versions, multiple config and CI files need to\nbe edited in addition to changing the minimum version in \u003ccode\u003epyproject.toml\u003c/code\u003e.\nMake these changes in an ordinary PR against main and backport if necessary.\nWe currently release wheels for new Python versions after the first Python RC\nonce manylinux and cibuildwheel support that new Python version.\u003c/p\u003e\n\u003ch2\u003eBackport pull requests\u003c/h2\u003e\n\u003cp\u003eChanges that have been marked for this release must be backported to the\nmaintenance/2.4.x branch.\u003c/p\u003e\n\u003ch2\u003eUpdate 2.4.0 milestones\u003c/h2\u003e\n\u003cp\u003eLook at the issues/prs with 2.4.0 milestones and either push them off to a\nlater version, or maybe remove the milestone. You may need to add a milestone.\u003c/p\u003e\n\u003cp\u003eCheck the numpy-release repo\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/c81c49f77451340651a751e76bca607d85e4fd55\"\u003e\u003ccode\u003ec81c49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30757\"\u003e#30757\u003c/a\u003e from charris/prepare-2.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b3ae9c59de627110458653836f1be81280222f85\"\u003e\u003ccode\u003eb3ae9c5\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9de89843c3918fa133f1aab9fb4435c38a3b0ba6\"\u003e\u003ccode\u003e9de8984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30737\"\u003e#30737\u003c/a\u003e from mattip/scipy-openblas-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b7be329895e32de44578742b2745fb307cdf8625\"\u003e\u003ccode\u003eb7be329\u003c/code\u003e\u003c/a\u003e backport scipy-openblas version change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7ff98637f80dc1ff7a18fce8025ffabdded76094\"\u003e\u003ccode\u003e7ff9863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30736\"\u003e#30736\u003c/a\u003e from charris/backport-30667\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/431fffbe91d86c04738f039e0048441f8f9b5fff\"\u003e\u003ccode\u003e431fffb\u003c/code\u003e\u003c/a\u003e MAINT: Skip tests that require \u003cstrong\u003ebuffer\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/127235fcd9b2e80764da8f6c64f942a6bddb093a\"\u003e\u003ccode\u003e127235f\u003c/code\u003e\u003c/a\u003e BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/18bdb2e675b68daa5afc3250c41982ff77b3867f\"\u003e\u003ccode\u003e18bdb2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30713\"\u003e#30713\u003c/a\u003e from charris/backport-30710\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/41dd7512de6dc3dd665b71d4e3a321aa1150dc48\"\u003e\u003ccode\u003e41dd751\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30712\"\u003e#30712\u003c/a\u003e from charris/backport-30705\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/7a278da99943376313b8f631905c3baaa7a82a30\"\u003e\u003ccode\u003e7a278da\u003c/code\u003e\u003c/a\u003e BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.1.3...v2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openpyxl` from 3.1.2 to 3.1.5\n\nUpdates `orjson` from 3.11.5 to 3.11.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6 - 2026-01-29\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec2b066cae79ae4a90ed126ac5723335dd99e408\"\u003e\u003ccode\u003eec2b066\u003c/code\u003e\u003c/a\u003e 3.11.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1ca01f78cf4198ec37407d83713afa6e5c53dbf9\"\u003e\u003ccode\u003e1ca01f7\u003c/code\u003e\u003c/a\u003e zmij\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1716a226bd1f38db01503f30cd37b0efec48d88e\"\u003e\u003ccode\u003e1716a22\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec02024c3837255064f248c0d2d331319b75e9ad\"\u003e\u003ccode\u003eec02024\u003c/code\u003e\u003c/a\u003e 3.11.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d58168733189f82b3fd0c058dff73e05d09202e6\"\u003e\u003ccode\u003ed581687\u003c/code\u003e\u003c/a\u003e build, clippy misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4105b29b2275f200f6fae01349bef02ccf1bc2e2\"\u003e\u003ccode\u003e4105b29\u003c/code\u003e\u003c/a\u003e writer::num\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/62bb185b70785ded49c79c26f8c9781f1e6fe370\"\u003e\u003ccode\u003e62bb185\u003c/code\u003e\u003c/a\u003e Fix sporadic crash on serializing object close\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d860078a973f44401265c5c4ad12a7dbe4f839ad\"\u003e\u003ccode\u003ed860078\u003c/code\u003e\u003c/a\u003e PyRef idiom refactors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/343ae2f148197918aba9f8562db42c364620e4b8\"\u003e\u003ccode\u003e343ae2f\u003c/code\u003e\u003c/a\u003e Deserializer, Utf8Buffer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/7835f58d1c56947d1cf7a18acdfc07a2bca9b0f2\"\u003e\u003ccode\u003e7835f58\u003c/code\u003e\u003c/a\u003e PyBytesRef and other input refactor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.5...3.11.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `posthoganalytics` from 7.4.3 to 7.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/posthog/posthog-python/releases\"\u003eposthoganalytics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.8.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix feature flag 401 errors causing HTTP request storm by \u003ca href=\"https://github.com/GabiGrin\"\u003e\u003ccode\u003e@​GabiGrin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/422\"\u003ePostHog/posthog-python#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAI input image sanitization by \u003ca href=\"https://github.com/vikas5914\"\u003e\u003ccode\u003e@​vikas5914\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/384\"\u003ePostHog/posthog-python#384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: openai image sanitization by \u003ca href=\"https://github.com/ablaszkiewicz\"\u003e\u003ccode\u003e@​ablaszkiewicz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/425\"\u003ePostHog/posthog-python#425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GabiGrin\"\u003e\u003ccode\u003e@​GabiGrin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/422\"\u003ePostHog/posthog-python#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vikas5914\"\u003e\u003ccode\u003e@​vikas5914\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/384\"\u003ePostHog/posthog-python#384\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.8.2...v7.8.3\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.8.2...v7.8.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.8.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(llma): default prompts url by \u003ca href=\"https://github.com/Radu-Raicea\"\u003e\u003ccode\u003e@​Radu-Raicea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/423\"\u003ePostHog/posthog-python#423\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.8.1...v7.8.2\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.8.1...v7.8.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.8.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: SDK Compliance by \u003ca href=\"https://github.com/jose-sequeira\"\u003e\u003ccode\u003e@​jose-sequeira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/397\"\u003ePostHog/posthog-python#397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(llma): small fixes for prompt management by \u003ca href=\"https://github.com/Radu-Raicea\"\u003e\u003ccode\u003e@​Radu-Raicea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/420\"\u003ePostHog/posthog-python#420\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jose-sequeira\"\u003e\u003ccode\u003e@​jose-sequeira\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/397\"\u003ePostHog/posthog-python#397\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.8.0...v7.8.1\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.8.0...v7.8.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(llma): pass raw provider usage metadata for backend cost calculations by \u003ca href=\"https://github.com/richardsolomou\"\u003e\u003ccode\u003e@​richardsolomou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/411\"\u003ePostHog/posthog-python#411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(llma): add prompt management by \u003ca href=\"https://github.com/Radu-Raicea\"\u003e\u003ccode\u003e@​Radu-Raicea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/417\"\u003ePostHog/posthog-python#417\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/richardsolomou\"\u003e\u003ccode\u003e@​richardsolomou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/411\"\u003ePostHog/posthog-python#411\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.7.0...v7.8.0\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.7.0...v7.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.7.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(ai): add OpenAI Agents SDK integration by \u003ca href=\"https://github.com/andrewm4894\"\u003e\u003ccode\u003e@​andrewm4894\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/408\"\u003ePostHog/posthog-python#408\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PostHog/posthog-python/compare/v7.6.0...v7.7.0\"\u003ehttps://github.com/PostHog/posthog-python/compare/v7.6.0...v7.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: check for syntax warnings by \u003ca href=\"https://github.com/pauldambra\"\u003e\u003ccode\u003e@​pauldambra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/404\"\u003ePostHog/posthog-python#404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix link formatting in CHANGELOG.md by \u003ca href=\"https://github.com/pauldambra\"\u003e\u003ccode\u003e@​pauldambra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PostHog/posthog-python/pull/406\"\u003ePostHog/posthog-python#406\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PostHog/posthog-python/blob/master/CHANGELOG.md\"\u003eposthoganalytics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.8.3 - 2026-02-06\u003c/h1\u003e\n\u003cp\u003efix: openAI input image sanitization\u003c/p\u003e\n\u003ch1\u003e7.8.2 - 2026-02-04\u003c/h1\u003e\n\u003cp\u003efix(llma): fix prompts default url\u003c/p\u003e\n\u003ch1\u003e7.8.1 - 2026-02-03\u003c/h1\u003e\n\u003cp\u003efix(llma): small fixes for prompt management\u003c/p\u003e\n\u003ch1\u003e7.8.0 - 2026-01-28\u003c/h1\u003e\n\u003cp\u003efeat(llma): add prompt management\u003c/p\u003e\n\u003cp\u003eAdds the Prompt Management feature. At the time of release, this feature is in a closed alpha.\u003c/p\u003e\n\u003ch1\u003e7.7.0 - 2026-01-15\u003c/h1\u003e\n\u003cp\u003efeat(ai): Add OpenAI Agents SDK integration\u003c/p\u003e\n\u003cp\u003eAutomatic tracing for agent workflows, handoffs, tool calls, guardrails, and custom spans. Includes \u003ccode\u003e$ai_total_tokens\u003c/code\u003e, \u003ccode\u003e$ai_error_type\u003c/code\u003e categorization, and \u003ccode\u003e$ai_framework\u003c/code\u003e property.\u003c/p\u003e\n\u003ch1\u003e7.6.0 - 2026-01-12\u003c/h1\u003e\n\u003cp\u003efeat: add device_id to flags request payload\u003c/p\u003e\n\u003cp\u003eAdd device_id parameter to all feature flag methods, allowing the server to track device identifiers for flag evaluation. The device_id can be passed explicitly or set via context using \u003ccode\u003eset_context_device_id()\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003e7.5.1 - 2026-01-07\u003c/h1\u003e\n\u003cp\u003efix: avoid return from finally block to fix Python 3.14 SyntaxWarning (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/361\"\u003e#361\u003c/a\u003e) - thanks \u003ca href=\"https://github.com/jodal\"\u003e\u003ccode\u003e@​jodal\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch1\u003e7.5.0 - 2026-01-06\u003c/h1\u003e\n\u003cp\u003efeat: Capture Langchain, OpenAI and Anthropic errors as exceptions (if exception autocapture is enabled)\nfeat: Add reference to exception in LLMA trace and span events\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/fe3a9bbf75d83cbaf8643f099d7ec802ea3a4d87\"\u003e\u003ccode\u003efe3a9bb\u003c/code\u003e\u003c/a\u003e fix: openai image sanitization (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/b6e66330e59536a6a12b79f3ff39f9e39b2f0fd6\"\u003e\u003ccode\u003eb6e6633\u003c/code\u003e\u003c/a\u003e fix: openAI input image sanitization (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/4f32fa41008d21038428fa4987fb7dfc45919982\"\u003e\u003ccode\u003e4f32fa4\u003c/code\u003e\u003c/a\u003e Fix feature flag 401 errors causing HTTP request storm (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/422\"\u003e#422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/f5719f39da5f0e2d1a19805dee1846d27330fef5\"\u003e\u003ccode\u003ef5719f3\u003c/code\u003e\u003c/a\u003e fix(llma): default prompts url (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/423\"\u003e#423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/d4f2d6dfb083d023c2b4e9978bf3133c8b51fa64\"\u003e\u003ccode\u003ed4f2d6d\u003c/code\u003e\u003c/a\u003e fix(llma): small fixes for prompt management (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/72f448816c82b466c98ba2efc80e36c973b8d4e4\"\u003e\u003ccode\u003e72f4488\u003c/code\u003e\u003c/a\u003e feat: SDK Compliance (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/4350389f931fa2bfca08c2df8c5998d15525409e\"\u003e\u003ccode\u003e4350389\u003c/code\u003e\u003c/a\u003e feat(llma): add prompt management (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/c32c78312f47f90537337870620972c015d5c779\"\u003e\u003ccode\u003ec32c783\u003c/code\u003e\u003c/a\u003e feat(llma): pass raw provider usage metadata for backend cost calculations (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PostHog/posthog-python/commit/1875b712d23e9a81bc83e0e8be36a751b3096631\"\u003e\u003ccode\u003e1875b71\u003c/code\u003e\u003c/a\u003e feat(ai): add OpenAI Agents SDK integration (\u003ca href=\"https://redirect.github.com/posthog/posthog-python/issues/408\"\u003e#408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://...\n\n_Description has been truncated_","html_url":"https://github.com/PostHog/posthog/pull/48002","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PostHog%2Fposthog/issues/48002","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/48002/packages"}},{"old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","update_type":"patch","path":null,"pr_created_at":"2026-02-13T20:27:55.000Z","version_change":"3.10.0.20251106 → 3.10.2.20260211","issue":{"uuid":"3939047565","node_id":"PR_kwDOG1Zs187Dp5X9","number":12085,"state":"open","title":"Chore(deps): Bump the utilities-patch group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-13T20:27:55.000Z","updated_at":"2026-02-13T20:29:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-patch","update_count":6,"packages":[{"name":"llama-index-core","old_version":"0.14.13","new_version":"0.14.14","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.2","new_version":"0.5.3"},{"name":"mysqlclient","old_version":"2.2.7","new_version":"2.2.8","repository_url":"https://github.com/PyMySQL/mysqlclient"},{"name":"zensical","old_version":"0.0.21","new_version":"0.0.23","repository_url":"https://github.com/zensical/zensical"},{"name":"ruff","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-markdown","old_version":"3.10.0.20251106","new_version":"3.10.2.20260211","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-patch group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.13` | `0.14.14` |\n| llama-index-vector-stores-faiss | `0.5.2` | `0.5.3` |\n| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.7` | `2.2.8` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.21` | `0.0.23` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.15.1` |\n| [types-markdown](https://github.com/typeshed-internal/stub_uploader) | `3.10.0.20251106` | `3.10.2.20260211` |\n\n\nUpdates `llama-index-core` from 0.14.13 to 0.14.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.14\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-02-10]\u003c/h2\u003e\n\u003ch3\u003ellama-index-callbacks-wandb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.14]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: catch pydantic ValidationError in VectorStoreQueryOutputParser (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20450\"\u003e#20450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: distinguish empty string from None in MediaResource.hash (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20451\"\u003e#20451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLangchain1.x support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20472\"\u003e#20472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): fallback to bundled nltk cache if env var missing (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20528\"\u003e#20528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(callbacks): add TokenBudgetHandler for cost governance (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20546\"\u003e#20546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):handled a edge case in truncate_text function (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20551\"\u003e#20551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core):fix in types Thread passing None when target is None instead of copy_context().run (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20553\"\u003e#20553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: bump llama-index lockfile, and minor test tweaks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20556\"\u003e#20556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility for workflows context changes (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20557\"\u003e#20557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(core): fix cache dir path test for Windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20566\"\u003e#20566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(tests): enforce utf-8 encoding in json reader tests for windows compatibility (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20576\"\u003e#20576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix BM25Retriever mapping in upgrade tool / 修复升级工具中的 BM25Retriever 映射 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20582\"\u003e#20582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(agent): handle empty LLM responses with retry logic and add test cases (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20596\"\u003e#20596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add show_progress parameter to run_transformations to prevent unexpected keyword argument error (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20608\"\u003e#20608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core 3.14 tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20619\"\u003e#20619\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-cohere [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(embeddings-cohere): add retry logic with tenacity (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20592\"\u003e#20592\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-google-genai [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd client headers to Gemini API requests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20519\"\u003e#20519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-siliconflow [0.3.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20517\"\u003e#20517\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 4 directories with 4 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20531\"\u003e#20531\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-graph-stores-falkordb [0.4.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-anthropic [0.10.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update cacheable Anthropic models (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20581\"\u003e#20581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: add support for opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20635\"\u003e#20635\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.12.8]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix bedrock converse empty tool config issue (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20571\"\u003e#20571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(llms-bedrock-converse): improve bedrock converse retry handling (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20590\"\u003e#20590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(bedrock-converse): Add support for Claude Opus 4.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20637\"\u003e#20637\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/b4b5f403acef36c17952aa9b64d5472775037459\"\u003e\u003ccode\u003eb4b5f40\u003c/code\u003e\u003c/a\u003e Release 0.14.14 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20670\"\u003e#20670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/500eca1748117e20d75922023fb2502c4950eb4e\"\u003e\u003ccode\u003e500eca1\u003c/code\u003e\u003c/a\u003e docs: Clarify async streaming usage for LLM and ChatEngine (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20653\"\u003e#20653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/d875559bda34622b16e230a711c1f885633ae171\"\u003e\u003ccode\u003ed875559\u003c/code\u003e\u003c/a\u003e fix(falkordb): Fix MENTIONS relationship creation with triplet_source_id (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20\"\u003e#20\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/a141cd674492bcdb14afcb6af9db8ecc6de1754d\"\u003e\u003ccode\u003ea141cd6\u003c/code\u003e\u003c/a\u003e Add support for adaptive thinking in Bedrock (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20659\"\u003e#20659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/e0fc5f79963223681d6934e07dc4b46100d6544d\"\u003e\u003ccode\u003ee0fc5f7\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 2 directories with 7 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20662\"\u003e#20662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c915902f2e6a16b484ee9f968ad7e57713a51d05\"\u003e\u003ccode\u003ec915902\u003c/code\u003e\u003c/a\u003e docs: Couchbase example documentation fix (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20658\"\u003e#20658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/35e0406472518181f52d4d5b4e743dea88d4e751\"\u003e\u003ccode\u003e35e0406\u003c/code\u003e\u003c/a\u003e update readme (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20656\"\u003e#20656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c7ad9616f51d048d09138a645c088e203b3182be\"\u003e\u003ccode\u003ec7ad961\u003c/code\u003e\u003c/a\u003e fix: avoid ValueError in ag-ui message conversion for multi-block ChatMessage...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/9400c9019d23cd5f12f74d4b60b10f19292d979b\"\u003e\u003ccode\u003e9400c90\u003c/code\u003e\u003c/a\u003e feat: add chonkie integration (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20622\"\u003e#20622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/1ca1369a6eaaee1e575a7823502e021721ee5964\"\u003e\u003ccode\u003e1ca1369\u003c/code\u003e\u003c/a\u003e Fix potential crashes and improve security defaults in core components (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20610\"\u003e#20610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.13...v0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.2 to 0.5.3\n\nUpdates `mysqlclient` from 2.2.7 to 2.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/releases\"\u003emysqlclient's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport local_infile_dir option by \u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate readthedocs conf by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/759\"\u003ePyMySQL/mysqlclient#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate mariadb-connector to 3.4.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/773\"\u003ePyMySQL/mysqlclient#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 and drop Python 3.9 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/774\"\u003ePyMySQL/mysqlclient#774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate pyproject.toml to support Python 3.14 by \u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efree threading: do not enable GIL by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/775\"\u003ePyMySQL/mysqlclient#775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v2.2.8 by \u003ca href=\"https://github.com/methane\"\u003e\u003ccode\u003e@​methane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/776\"\u003ePyMySQL/mysqlclient#776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusKard\"\u003e\u003ccode\u003e@​RasmusKard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/755\"\u003ePyMySQL/mysqlclient#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MysticEntity-dev\"\u003e\u003ccode\u003e@​MysticEntity-dev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/pull/772\"\u003ePyMySQL/mysqlclient#772\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ehttps://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyMySQL/mysqlclient/blob/main/HISTORY.rst\"\u003emysqlclient's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's new in 2.2.8\u003c/h1\u003e\n\u003cp\u003eRelease: 2026-02-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elocal_infile_dir\u003c/code\u003e option to restrict LOAD DATA LOCAL INFILE file path. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewindows wheel: Update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 and drop Python 3.8, 3.9 support. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperimental support for free threaded Python. Importing \u003ccode\u003eMySQLdb\u003c/code\u003e doesn't\nenable the GIL anymore. This doesn't mean mysqlclient is thread safe.\nYou must not use same connection object from multiple threads concurrently. (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e======================\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/33f39481493cd1cadfd2a63252382b7d839591b2\"\u003e\u003ccode\u003e33f3948\u003c/code\u003e\u003c/a\u003e release v2.2.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/776\"\u003e#776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/aeff560b7321dd07fcc4ae71118c9e15ed51feeb\"\u003e\u003ccode\u003eaeff560\u003c/code\u003e\u003c/a\u003e free threading: do not enable GIL (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/775\"\u003e#775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/d0371b2044588c7214579e5be5c076410baba1fc\"\u003e\u003ccode\u003ed0371b2\u003c/code\u003e\u003c/a\u003e update pyproject.toml to support Python 3.14 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/772\"\u003e#772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/21b99a031c5c9776a0893927c09bb764da06f261\"\u003e\u003ccode\u003e21b99a0\u003c/code\u003e\u003c/a\u003e add Python 3.14 and drop Python 3.9 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/af50276ca68d17859e01d999e0618b86283a43ea\"\u003e\u003ccode\u003eaf50276\u003c/code\u003e\u003c/a\u003e update mariadb-connector to 3.4.8 (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/e54e8612957e0d74dafe5d186ba1247a612c81bd\"\u003e\u003ccode\u003ee54e861\u003c/code\u003e\u003c/a\u003e update readthedocs conf (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/759\"\u003e#759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyMySQL/mysqlclient/commit/5b358664e5581571b7a21ee85829ca51869b23e0\"\u003e\u003ccode\u003e5b35866\u003c/code\u003e\u003c/a\u003e support local_infile_dir option (\u003ca href=\"https://redirect.github.com/PyMySQL/mysqlclient/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyMySQL/mysqlclient/compare/v2.2.7...v2.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zensical` from 0.0.21 to 0.0.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003ch1\u003eSummary\u003c/h1\u003e\n\u003cp\u003eThis version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e10b5162 \u003cstrong\u003ecompat\u003c/strong\u003e – lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.22\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version adds support for the \u003ca href=\"https://github.com/mkdocstrings/autorefs\"\u003eautorefs\u003c/a\u003e plugin, and further improves performance for large mkdocstrings projects. The \u003ca href=\"https://github.com/zensical/ui\"\u003euser interface\u003c/a\u003e is updated to \u003ca href=\"https://github.com/zensical/ui/releases/tag/v0.0.7\"\u003ev0.0.7\u003c/a\u003e, which fixes some isses with the mobile browsering experience.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ee32ab15 \u003cstrong\u003ezensical\u003c/strong\u003e, \u003cstrong\u003ecompat\u003c/strong\u003e – support autorefs plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1b1fd84 \u003cstrong\u003ezensical\u003c/strong\u003e – reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003ee33c972 \u003cstrong\u003ecompat\u003c/strong\u003e – don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003eb3c699b \u003cstrong\u003eui\u003c/strong\u003e – update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003ee233f9f \u003cstrong\u003ecompat\u003c/strong\u003e – fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee3fc49f \u003cstrong\u003ezensical\u003c/strong\u003e – relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/d9462afc011bdfce4b948e0c1aa71af56144cf9f\"\u003e\u003ccode\u003ed9462af\u003c/code\u003e\u003c/a\u003e chore: release v0.0.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/10b5162aa6782983ebdbdd6445030d9a309579a8\"\u003e\u003ccode\u003e10b5162\u003c/code\u003e\u003c/a\u003e fix: lazy import mkdocstrings (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7b845d9212787f972ab7d9e4b7c363121e3c50fa\"\u003e\u003ccode\u003e7b845d9\u003c/code\u003e\u003c/a\u003e chore: release v0.0.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1b1fd8458d4a372d85c8a255618f6eb7354204b3\"\u003e\u003ccode\u003e1b1fd84\u003c/code\u003e\u003c/a\u003e fix: reset global data in compatibility modules between each rebuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e33c972e03fe69e69ab6774bbda8ce5652fdc848\"\u003e\u003ccode\u003ee33c972\u003c/code\u003e\u003c/a\u003e fix: don't watch mkdocstrings-configured path if it's the root directory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/b3c699ba45b0db862f8230832b21b2463690c99f\"\u003e\u003ccode\u003eb3c699b\u003c/code\u003e\u003c/a\u003e fix: update ui to v0.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/8352b1a14f2f7ffc82e10eefee959f5e6f6d2fde\"\u003e\u003ccode\u003e8352b1a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003ezrx\u003c/code\u003e to v0.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e32ab15b1fe6bd81f1a66780e6084f563165e1c1\"\u003e\u003ccode\u003ee32ab15\u003c/code\u003e\u003c/a\u003e feature: support autorefs plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e233f9f7d4520e8a6a382c05b9250149e63ce58b\"\u003e\u003ccode\u003ee233f9f\u003c/code\u003e\u003c/a\u003e fix: fail early if mkdocstrings is enabled but not installed (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/e3fc49f72fb299f467557edabda6a004c84597fd\"\u003e\u003ccode\u003ee3fc49f\u003c/code\u003e\u003c/a\u003e fix: relative URLs with \u003ccode\u003e:\u003c/code\u003e need to start with \u003ccode\u003e./\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/345\"\u003e#345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.21...v0.0.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.0 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (\u003ccode\u003eAIR321\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22376\"\u003e#22376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Third positional parameter not named \u003ccode\u003eti_key\u003c/code\u003e should be flagged for \u003ccode\u003eBaseOperatorLink.get_link\u003c/code\u003e (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22828\"\u003e#22828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-gettext\u003c/code\u003e] Fix false negatives for plural argument of \u003ccode\u003engettext\u003c/code\u003e (\u003ccode\u003eINT001\u003c/code\u003e, \u003ccode\u003eINT002\u003c/code\u003e, \u003ccode\u003eINT003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Fix infinite loop in preview fix for \u003ccode\u003eunused-import\u003c/code\u003e (\u003ccode\u003eF401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23038\"\u003e#23038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epygrep-hooks\u003c/code\u003e] Detect non-existent mock methods in standalone expressions (\u003ccode\u003ePGH005\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22830\"\u003e#22830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow dunder submodules and improve diagnostic range (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22804\"\u003e#22804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Improve diagnostic range for tuples (\u003ccode\u003eUP024\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23013\"\u003e#23013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Check subscripts in tuple do not use lambda parameters in \u003ccode\u003ereimplemented-operator\u003c/code\u003e (\u003ccode\u003eFURB118\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23079\"\u003e#23079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect mutable defaults in \u003ccode\u003efield\u003c/code\u003e calls (\u003ccode\u003eRUF008\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23046\"\u003e#23046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore std \u003ccode\u003ecmath.inf\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23120\"\u003e#23120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003efloat-equality-comparison\u003c/code\u003e (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20585\"\u003e#20585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't format unlabeled Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23106\"\u003e#23106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown formatting support in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23063\"\u003e#23063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Quarto Markdown language markers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22947\"\u003e#22947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport formatting \u003ccode\u003epycon\u003c/code\u003e Markdown code blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23112\"\u003e#23112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse extension mapping to select Markdown code block language (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22934\"\u003e#22934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid false positive for undefined variables in \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23224\"\u003e#23224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid introducing syntax errors for \u003ccode\u003eFAST003\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23227\"\u003e#23227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid suggesting \u003ccode\u003eInitVar\u003c/code\u003e for \u003ccode\u003e__post_init__\u003c/code\u003e that references PEP 695 type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23226\"\u003e#23226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeduplicate type variables in generic functions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23225\"\u003e#23225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix exception handler parenthesis removal for Python 3.14+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23126\"\u003e#23126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix f-string middle panic when parsing t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23232\"\u003e#23232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eRUF020\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23210\"\u003e#23210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap \u003ccode\u003eUP007\u003c/code\u003e target for multiline fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23208\"\u003e#23208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing diagnostics for last range suppression in file (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix syntax error on string with newline escape and comment (\u003ccode\u003eUP037\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22968\"\u003e#22968\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eRuff\u003c/code\u003e as the program name in GitHub output format (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23240\"\u003e#23240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003ePT006\u003c/code\u003e] Fix syntax error when unpacking nested tuples in \u003ccode\u003eparametrize\u003c/code\u003e fixes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22441\"\u003e#22441\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22464\"\u003e#22464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Catch deprecated attribute access from context key for Airflow 3.0 (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22850\"\u003e#22850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Capture deprecated arguments and a decorator (\u003ccode\u003eAIR301\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23170\"\u003e#23170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-boolean-trap\u003c/code\u003e] Add \u003ccode\u003emultiprocessing.Value\u003c/code\u003e to excluded functions for \u003ccode\u003eFBT003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23010\"\u003e#23010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Add a secondary annotation showing the previous occurrence (\u003ccode\u003eB033\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22634\"\u003e#22634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Add sub-diagnostic showing the runtime use of an annotation (\u003ccode\u003eTC004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23091\"\u003e#23091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Support configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Improve the diagnostic for \u003ccode\u003eRUF012\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23202\"\u003e#23202\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d\"\u003e\u003ccode\u003ea2f11d2\u003c/code\u003e\u003c/a\u003e Prepare for 0.15.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23253\"\u003e#23253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff\"\u003e\u003ccode\u003ed29628e\u003c/code\u003e\u003c/a\u003e Remove docker-run-action (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23254\"\u003e#23254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0\"\u003e\u003ccode\u003e8a04266\u003c/code\u003e\u003c/a\u003e [ty] Allow discovering dependencies in system Python environments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22994\"\u003e#22994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163\"\u003e\u003ccode\u003e55d06c8\u003c/code\u003e\u003c/a\u003e Ensure pending suppression diagnostics are reported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23242\"\u003e#23242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea\"\u003e\u003ccode\u003ed056a9f\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] support for configurable import section heading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23151\"\u003e#23151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a\"\u003e\u003ccode\u003ee22fa4f\u003c/code\u003e\u003c/a\u003e [ty] Fix method calls on subclasses of \u003ccode\u003eAny\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23248\"\u003e#23248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c\"\u003e\u003ccode\u003efa56c15\u003c/code\u003e\u003c/a\u003e [ty] Fix bound method access on \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23246\"\u003e#23246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2\"\u003e\u003ccode\u003e4fd07d0\u003c/code\u003e\u003c/a\u003e Make range suppression test snapshot actually useful (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23251\"\u003e#23251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f\"\u003e\u003ccode\u003e8c63bce\u003c/code\u003e\u003c/a\u003e [ty] Include conditional symbols (like \u003ccode\u003edatetime.UTC\u003c/code\u003e) in auto-import in more...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d\"\u003e\u003ccode\u003e46be943\u003c/code\u003e\u003c/a\u003e Exclude WASM artifacts from GitHub releases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23221\"\u003e#23221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.0...0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.0.20251106 to 3.10.2.20260211\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typeshed-internal/stub_uploader/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot 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`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12085","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12085","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12085/packages"}}]}