{"id":17347,"name":"types-python-dateutil","ecosystem":"pip","repository_url":"https://github.com/typeshed-internal/stub_uploader","issues_count":614,"created_at":"2025-06-07T00:47:10.074Z","updated_at":"2025-06-07T00:47:10.074Z","purl":"pkg:pypi/types-python-dateutil","metadata":{"id":2957652,"name":"types-python-dateutil","ecosystem":"pypi","description":"Typing stubs for python-dateutil","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":50,"first_release_published_at":"2021-02-02T20:53:12.000Z","latest_release_published_at":"2022-07-19T09:30:20.000Z","latest_release_number":"2.8.19","last_synced_at":"2025-06-07T00:07:42.976Z","created_at":"2022-04-10T12:56:19.705Z","updated_at":"2025-06-07T00:07:42.977Z","registry_url":"https://pypi.org/project/types-python-dateutil/","install_command":"pip install types-python-dateutil --index-url https://pypi.org/simple","documentation_url":"https://types-python-dateutil.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Programming Language :: Python :: 3","Typing :: Stubs Only"],"normalized_name":"types-python-dateutil"},"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":219863993,"owners_count":16554028,"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-28T03:27:30.685Z","dependent_packages_count":343,"downloads":61099730,"downloads_period":"last-month","dependent_repos_count":4228,"rankings":{"downloads":0.04548731032433553,"dependent_repos_count":0.14820059170186736,"dependent_packages_count":0.08033645936314097,"stargazers_count":16.26208027409773,"forks_count":11.217941075591472,"docker_downloads_count":0.05062297439321212,"average":4.6341114475786265},"purl":"pkg:pypi/types-python-dateutil","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/types-python-dateutil","docker_dependents_count":316,"docker_downloads_count":1217961259,"usage_url":"https://repos.ecosyste.ms/usage/pypi/types-python-dateutil","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/types-python-dateutil/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-python-dateutil/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-python-dateutil/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-python-dateutil/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/types-python-dateutil/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-12T16:27:11.845Z","updated_at":"2022-12-12T16:27:11.845Z","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":690419,"maintainers_count":292811,"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":214,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4781310444","node_id":"PR_kwDOC1dAhs7sdJbv","number":4318,"state":"open","title":"Bump the python-deps group across 3 directories with 12 updates","user":"dependabot[bot]","labels":["deployment","python","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T00:19:00.000Z","updated_at":"2026-07-01T00:21:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-deps","update_count":12,"packages":[{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"kubernetes","old_version":"35.0.0","new_version":"36.0.2","repository_url":"https://github.com/kubernetes-client/python"},{"name":"mypy","old_version":"1.20.0","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pymongo","old_version":"4.16.0","new_version":"4.17.0","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.3.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"regex","old_version":"2026.4.4","new_version":"2026.6.28","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"tox","old_version":"4.52.1","new_version":"4.56.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.33.0.20260408","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"ansible","old_version":"13.5.0","new_version":"14.1.0","repository_url":"https://github.com/ansible-community/ansible-build-data"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `35.0.0` | `36.0.2` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `2.1.0` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.16.0` | `4.17.0` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.3.0` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.4.4` | `2026.6.28` |\n| [tox](https://github.com/tox-dev/tox) | `4.52.1` | `4.56.1` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260518` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260408` | `2.33.0.20260518` |\n| [ansible](https://github.com/ansible-community/ansible-build-data) | `13.5.0` | `14.1.0` |\n\nBumps the python-deps group with 3 updates in the /deploy directory: [kubernetes](https://github.com/kubernetes-client/python), [pyopenssl](https://github.com/pyca/pyopenssl) and [ansible](https://github.com/ansible-community/ansible-build-data).\nBumps the python-deps group with 3 updates in the /maintenance directory: [kubernetes](https://github.com/kubernetes-client/python), [pymongo](https://github.com/mongodb/mongo-python-driver) and [pyopenssl](https://github.com/pyca/pyopenssl).\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\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/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kubernetes` from 35.0.0 to 36.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kubernetes-client/python/releases\"\u003ekubernetes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKubernetes Python Client v36.0.2 Stable Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v36.0.2.zip\r\ncd client-python-v36.0.2\r\npython setup-release.py install\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-36.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-36.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v36.0.1 Stable Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v36.0.1.zip\r\ncd client-python-v36.0.1\r\npython setup-release.py install\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-36.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-36.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v36.0.0 Beta 1 Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v36.0.0b1.zip\r\ncd client-python-v36.0.0b1\r\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/kubernetes-client/python/blob/v36.0.2/CHANGELOG.md\"\u003ekubernetes's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev36.0.2\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch3\u003eUncategorized\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestored backward compatibility for \u003ccode\u003eConfiguration.auth_settings()\u003c/code\u003e:\nthe legacy \u003ccode\u003eapi_key['authorization']\u003c/code\u003e lookup is honored as a fallback\nwhen \u003ccode\u003eapi_key['BearerToken']\u003c/code\u003e is not set, fixing 401 Unauthorized\nregressions seen after upgrading to v36.0.0 (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2595\"\u003e#2595\u003c/a\u003e). (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2604\"\u003e#2604\u003c/a\u003e, \u003ca href=\"https://github.com/GK-07\"\u003e\u003ccode\u003e@​GK-07\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev36.0.1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch3\u003eBug or Regression\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eload_incluster_config()\u003c/code\u003e and \u003ccode\u003eload_kube_config()\u003c/code\u003e (sync and async, with a static token) so requests carry an \u003ccode\u003eAuthorization\u003c/code\u003e header on \u003ccode\u003ekubernetes-client/python\u003c/code\u003e v36+. Without this fix, in-cluster pods upgrading to v36 silently send unauthenticated requests and the apiserver rejects them as \u003ccode\u003esystem:anonymous\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2585\"\u003e#2585\u003c/a\u003e, \u003ca href=\"https://github.com/Jmacek\"\u003e\u003ccode\u003e@​Jmacek\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport new exec v5 websocket subprotocol (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2486\"\u003e#2486\u003c/a\u003e, \u003ca href=\"https://github.com/aojea\"\u003e\u003ccode\u003e@​aojea\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev36.0.0\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch1\u003ev36.0.0b1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch3\u003eDeprecation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport new exec v5 websocket subprotocol (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2486\"\u003e#2486\u003c/a\u003e, \u003ca href=\"https://github.com/aojea\"\u003e\u003ccode\u003e@​aojea\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev36.0.0a3\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.0\u003c/p\u003e\n\u003ch1\u003ev36.0.0a2\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.0\u003c/p\u003e\n\u003ch1\u003ev36.0.0a1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.0\u003c/p\u003e\n\u003ch3\u003eAPI Change\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eACTION REQUIRED: DRA (Dynamic Resource Allocation) drivers and controllers now require granular RBAC permissions to update ResourceClaim statuses when the \u003ccode\u003eDRAResourceClaimGranularStatusAuthorization\u003c/code\u003e feature gate is enabled (beta in \u003ccode\u003ev1.36\u003c/code\u003e). Schedulers and controllers must be granted \u003ccode\u003eupdate\u003c/code\u003e/\u003ccode\u003epatch\u003c/code\u003e on \u003ccode\u003eresourceclaims/binding\u003c/code\u003e. DRA drivers must be granted \u003ccode\u003eassociated-node:update\u003c/code\u003e or \u003ccode\u003earbitrary-node:update\u003c/code\u003e (or patch equivalents) on \u003ccode\u003eresourceclaims/driver\u003c/code\u003e, restricted by their specific \u003ccode\u003eresourceNames\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/134947\"\u003ekubernetes/kubernetes#134947\u003c/a\u003e, \u003ca href=\"https://github.com/aojea\"\u003e\u003ccode\u003e@​aojea\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Instrumentation, Node, Scheduling and Testing]\u003c/li\u003e\n\u003cli\u003eACTION REQUIRED: Removed the integrated support for flex-volumes in kubeadm. Users were advised to migrate away from flex-volumes as recommended by SIG Storage since \u003ccode\u003ev1.22\u003c/code\u003e. If \u003ccode\u003ekubeadm\u003c/code\u003e users wish to continue using the feature, they need a custom image for the KCM that is not based on distroless, pass the KCM flag \u003ccode\u003e--flex-volume-plugin-dir\u003c/code\u003e, and mount the directory \u003ccode\u003e/usr/libexec/kubernetes/kubelet-plugins/volume/exec\u003c/code\u003e in the KCM static pod using \u003ccode\u003ekubeadm\u003c/code\u003e's \u003ccode\u003eextraVolumes\u003c/code\u003e mechanism before upgrading to \u003ccode\u003ev1.36\u003c/code\u003e. Previously, \u003ccode\u003ekubeadm\u003c/code\u003e automatically did the mounting if the user passed the flag. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/136423\"\u003ekubernetes/kubernetes#136423\u003c/a\u003e, \u003ca href=\"https://github.com/neolit123\"\u003e\u003ccode\u003e@​neolit123\u003c/code\u003e\u003c/a\u003e) [SIG Cluster Lifecycle]\u003c/li\u003e\n\u003cli\u003eACTION REQUIRED: Renamed metric \u003ccode\u003eetcd_bookmark_counts\u003c/code\u003e to \u003ccode\u003eetcd_bookmark_total\u003c/code\u003e. If you are using custom monitoring dashboards or alerting rules based on the \u003ccode\u003eetcd_bookmark_counts\u003c/code\u003e metric, update them to use the new \u003ccode\u003eetcd_bookmark_total\u003c/code\u003e metric. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/136483\"\u003ekubernetes/kubernetes#136483\u003c/a\u003e, \u003ca href=\"https://github.com/petern48\"\u003e\u003ccode\u003e@​petern48\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Etcd, Instrumentation and Testing]\u003c/li\u003e\n\u003cli\u003eAdded SchedulingConstraints to express topology-aware scheduling (TAS) constraints for PodGroup scheduling behind the \u003ccode\u003eTopologyAwareWorkloadScheduling\u003c/code\u003e feature gate. Added the TopologyPlacement plugin implementing the PlacementGenerate extension point to take constraints into consideration during PodGroup scheduling. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/137271\"\u003ekubernetes/kubernetes#137271\u003c/a\u003e, \u003ca href=\"https://github.com/brejman\"\u003e\u003ccode\u003e@​brejman\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling and Testing]\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/kubernetes-client/python/commit/1f2df0359a6f48c20581ccc5f120105b3e99f07f\"\u003e\u003ccode\u003e1f2df03\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2607\"\u003e#2607\u003c/a\u003e from yliaog/automated-release-of-36.0.2-upstream-rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/348f67384d7fba0eb57522cf57b67d7f6e9f9e31\"\u003e\u003ccode\u003e348f673\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2605\"\u003e#2605\u003c/a\u003e from yliaog/release-36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/70e680e93bb72bf2b67a42033af9b2180b56c4fd\"\u003e\u003ccode\u003e70e680e\u003c/code\u003e\u003c/a\u003e Apply hotfix for commit: 5621a4c2cf5cc278e8f45ce759ce44c057f1dbe2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/9683d0601ac2f0b43c9ad6c105d3389397cc9bb8\"\u003e\u003ccode\u003e9683d06\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/d2cb00054278fdaf6f74889f915ac9f58838d1b0\"\u003e\u003ccode\u003ed2cb000\u003c/code\u003e\u003c/a\u003e update version constants for 36.0.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/17cf4e16ce73a6b03cfcb0ab9aad07feaecaabc0\"\u003e\u003ccode\u003e17cf4e1\u003c/code\u003e\u003c/a\u003e update changelog with release notes from master branch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/8be4ce3e1becc0691cd9ac9bbb3ebf89a7d1d955\"\u003e\u003ccode\u003e8be4ce3\u003c/code\u003e\u003c/a\u003e added breaking change on V1ServiceSpec fields cluster_i_ps and external_i_ps ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/a05fe9e81363ca5ecea656eb6898f059f7a9a60a\"\u003e\u003ccode\u003ea05fe9e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2599\"\u003e#2599\u003c/a\u003e from yliaog/automated-release-of-36.0.1-upstream-rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/33827fa403726b8a7311a149978d00ebddcac813\"\u003e\u003ccode\u003e33827fa\u003c/code\u003e\u003c/a\u003e updated compatibility matrix and maintenance status\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/8836c4c3bf358c7fb6ed9cc6709b5baf8bb7aedc\"\u003e\u003ccode\u003e8836c4c\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kubernetes-client/python/compare/v35.0.0...v36.0.2\"\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 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\u003eEnable incremental self-compilation (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21369\"\u003e21369\u003c/a\u003e)\u003c/li\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\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.0...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymongo` from 4.16.0 to 4.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mongodb/mongo-python-driver/releases\"\u003epymongo's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMongo 4.17.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://www.mongodb.com/community/forums/t/pymongo-4-17-released/338426\"\u003eCommunity notes\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(ci): replace shell=True and awk pipes with native Python by \u003ca href=\"https://github.com/RinZ27\"\u003e\u003ccode\u003e@​RinZ27\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2671\"\u003emongodb/mongo-python-driver#2671\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5697 - Migrate 8.0+ tests to Windows 2022 by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2681\"\u003emongodb/mongo-python-driver#2681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 01-19-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2680\"\u003emongodb/mongo-python-driver#2680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyright from 1.1.407 to 1.1.408 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/mongodb/mongo-python-driver/pull/2675\"\u003emongodb/mongo-python-driver#2675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5692 - [Infrastructure] Improve dependabot version updates by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2682\"\u003emongodb/mongo-python-driver#2682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5605 - Drop usage of Ubuntu 20 by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2683\"\u003emongodb/mongo-python-driver#2683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5699 \u0026amp; PYTHON-5698 [Spec Resync] 01-26-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2685\"\u003emongodb/mongo-python-driver#2685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5703 Use Ubuntu24 for AWS Auth tests by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2686\"\u003emongodb/mongo-python-driver#2686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5704 Skip free-threading for enterprise auth builds by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2687\"\u003emongodb/mongo-python-driver#2687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.6 to 7.2.0 in the actions group across 1 directory 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/mongodb/mongo-python-driver/pull/2684\"\u003emongodb/mongo-python-driver#2684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 8.0.0 to 8.1.0 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/mongodb/mongo-python-driver/pull/2692\"\u003emongodb/mongo-python-driver#2692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-1357 - Refactor Cursor and CommandCursor by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2691\"\u003emongodb/mongo-python-driver#2691\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 02-02-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2694\"\u003emongodb/mongo-python-driver#2694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5467 Add codecov integration by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2690\"\u003emongodb/mongo-python-driver#2690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.2.0 to 7.2.1 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/mongodb/mongo-python-driver/pull/2700\"\u003emongodb/mongo-python-driver#2700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-XXXX Fixed typo in Running Tests Locally section. by \u003ca href=\"https://github.com/caseyclements\"\u003e\u003ccode\u003e@​caseyclements\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2698\"\u003emongodb/mongo-python-driver#2698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5467 Fix codecov upload by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2701\"\u003emongodb/mongo-python-driver#2701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5467 Fix codecov upload on Evergreen by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2702\"\u003emongodb/mongo-python-driver#2702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5715 Add appName to OIDC test failpoints by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2697\"\u003emongodb/mongo-python-driver#2697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5705 Improve fallback for PyOpenSSL windows system certs loading by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2688\"\u003emongodb/mongo-python-driver#2688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-3898 Add coverage to all variants by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2705\"\u003emongodb/mongo-python-driver#2705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5729 Pin setuptools when using older gevent by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2708\"\u003emongodb/mongo-python-driver#2708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the actions 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/mongodb/mongo-python-driver/pull/2711\"\u003emongodb/mongo-python-driver#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5708 Temporarily skip some BSON encryption tests by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2709\"\u003emongodb/mongo-python-driver#2709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5732 Use mongodb-runner in Evergreen Tests by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2703\"\u003emongodb/mongo-python-driver#2703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5731 - Server selection deprioritization only for overload errors on replica sets by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2710\"\u003emongodb/mongo-python-driver#2710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5737 - BSON encoding/decoding performance improvements by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2715\"\u003emongodb/mongo-python-driver#2715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 03-02-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2716\"\u003emongodb/mongo-python-driver#2716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePython 4542 - Improved sessions API by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2712\"\u003emongodb/mongo-python-driver#2712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5742 - Add Copilot instructions by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2717\"\u003emongodb/mongo-python-driver#2717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5747 Add jira link to spec resync PR by \u003ca href=\"https://github.com/sleepyStick\"\u003e\u003ccode\u003e@​sleepyStick\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2723\"\u003emongodb/mongo-python-driver#2723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5114 Test suite reduce killAllSessions calls by \u003ca href=\"https://github.com/ShaneHarvey\"\u003e\u003ccode\u003e@​ShaneHarvey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2721\"\u003emongodb/mongo-python-driver#2721\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5748 Remove unused SpecRunner class by \u003ca href=\"https://github.com/ShaneHarvey\"\u003e\u003ccode\u003e@​ShaneHarvey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2725\"\u003emongodb/mongo-python-driver#2725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5754 Fix USE_ACTIVE_VENV support by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2728\"\u003emongodb/mongo-python-driver#2728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5753 Add just recipes for running coverage tests locally by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2727\"\u003emongodb/mongo-python-driver#2727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5758 Remove unused validation functions by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2733\"\u003emongodb/mongo-python-driver#2733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5757 Deprecate Python 2 methods in SON by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2732\"\u003emongodb/mongo-python-driver#2732\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5766 Add codecov badge to readme by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2737\"\u003emongodb/mongo-python-driver#2737\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the actions group across 1 directory with 4 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/mongodb/mongo-python-driver/pull/2736\"\u003emongodb/mongo-python-driver#2736\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 03-30-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2741\"\u003emongodb/mongo-python-driver#2741\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.3.0 to 7.6.0 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/mongodb/mongo-python-driver/pull/2740\"\u003emongodb/mongo-python-driver#2740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5401: Add AI Generated Contributions Policy by \u003ca href=\"https://github.com/Jibola\"\u003e\u003ccode\u003e@​Jibola\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2696\"\u003emongodb/mongo-python-driver#2696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5768 Add AGENTS.md w/copilot instructions by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2744\"\u003emongodb/mongo-python-driver#2744\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5791 - test_list_database_names should not check ordering by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2751\"\u003emongodb/mongo-python-driver#2751\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5668 - Merge backpressure branch into mainline by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2729\"\u003emongodb/mongo-python-driver#2729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5795 Fix absolute link to CONTRIBUTING.md in README.md by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2756\"\u003emongodb/mongo-python-driver#2756\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/mongodb/mongo-python-driver/blob/master/doc/changelog.rst\"\u003epymongo's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChanges in Version 4.17.0 (2026/04/20)\u003c/h2\u003e\n\u003cp\u003ePyMongo 4.17 brings a number of changes including:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ehas_key\u003c/code\u003e, \u003ccode\u003eiterkeys\u003c/code\u003e and \u003ccode\u003eitervalues\u003c/code\u003e in :class:\u003ccode\u003ebson.son.SON\u003c/code\u003e have\nbeen deprecated and will be removed in PyMongo 5.0. These methods were\ndeprecated in favor of the standard dictionary containment operator \u003ccode\u003ein\u003c/code\u003e\nand the \u003ccode\u003ekeys()\u003c/code\u003e and \u003ccode\u003evalues()\u003c/code\u003e methods, respectively.\u003c/li\u003e\n\u003cli\u003eAdded the :meth:\u003ccode\u003e~pymongo.asynchronous.client_session.AsyncClientSession.bind\u003c/code\u003e and :meth:\u003ccode\u003e~pymongo.client_session.ClientSession.bind\u003c/code\u003e methods\nthat allow users to bind a session to all database operations within the scope of a context manager instead of having to explicitly pass the session to each individual operation.\nSee the \u003ccode\u003eTransactions docs \u0026lt;https://www.mongodb.com/docs/languages/python/pymongo-driver/current/crud/transactions/#methods\u0026gt;\u003c/code\u003e_ for examples and more information.\u003c/li\u003e\n\u003cli\u003eAdded support for MongoDB's Intelligent Workload Management (IWM) and ingress connection rate limiting features in MongoDB server version 9.0.\nThe driver will gracefully handle write-blocking scenarios and optimizes connection establishment during high-load conditions to maintain application availability.\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/mongodb/mongo-python-driver/commit/f2103a95870ab5c00b436f757cbaeb86a1047679\"\u003e\u003ccode\u003ef2103a9\u003c/code\u003e\u003c/a\u003e Prep branch v4.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/3491c08ef6505d42d07b9a17100b5190ed1294fc\"\u003e\u003ccode\u003e3491c08\u003c/code\u003e\u003c/a\u003e PYTHON-5801 - Update changelog for 4.17 release (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2762\"\u003e#2762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/912ef337f90852b58eaf6318e59f97206b281980\"\u003e\u003ccode\u003e912ef33\u003c/code\u003e\u003c/a\u003e PYTHON-5798 - Overload retargeting prose tests do not ensure that sec… (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2760\"\u003e#2760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/b4e2c03a927ca275e097342f847eb9705465e975\"\u003e\u003ccode\u003eb4e2c03\u003c/code\u003e\u003c/a\u003e PYTHON-5800 - Simple collation is included in index information (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2761\"\u003e#2761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/f31ba09713ff61086f5ebddb43a1e79b419b9802\"\u003e\u003ccode\u003ef31ba09\u003c/code\u003e\u003c/a\u003e PYTHON-5797 - Add IWM and Overload Error links to changelog (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2757\"\u003e#2757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/5da91837d4db9b2f1d3521f2e39cff9e0ff94334\"\u003e\u003ccode\u003e5da9183\u003c/code\u003e\u003c/a\u003e PYTHON-5794 - Add prose tests to verify correct retry behavior when a… (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2755\"\u003e#2755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/35e51a50f3ecf2020be10b6eae96e3ad0038174a\"\u003e\u003ccode\u003e35e51a5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;PYTHON-5768 Add AGENTS.md w/copilot instructions\u0026quot; (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2744\"\u003e#2744\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2754\"\u003e#2754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/f41dd5c08b352f2ca885e19e475e366383dd3ec8\"\u003e\u003ccode\u003ef41dd5c\u003c/code\u003e\u003c/a\u003e PYTHON-5772 Increase _gcp_helpers.py coverage (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2749\"\u003e#2749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/49e7a052e2fdf864ec3eb73e308d6cfd11b5f31d\"\u003e\u003ccode\u003e49e7a05\u003c/code\u003e\u003c/a\u003e PYTHON-5760 Increase _azure_helpers.py coverage (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/a2b0cd85e3a57cd63cbce9bc24500afb0fa062c6\"\u003e\u003ccode\u003ea2b0cd8\u003c/code\u003e\u003c/a\u003e PYTHON-5795 Fix absolute link to CONTRIBUTING.md in README.md (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2756\"\u003e#2756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mongodb/mongo-python-driver/compare/4.16.0...4.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyopenssl` from 26.0.0 to 26.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/pyopenssl/blob/main/CHANGELOG.rst\"\u003epyopenssl's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.0 (2026-06-12)\u003c/h2\u003e\n\u003cp\u003eBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8.\u003c/li\u003e\n\u003cli\u003eThe minimum \u003ccode\u003ecryptography\u003c/code\u003e version is now 49.0.0.\u003c/li\u003e\n\u003cli\u003eRemoved deprecated \u003ccode\u003eOpenSSL.crypto.X509Req\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.dump_certificate_request\u003c/code\u003e, and \u003ccode\u003eOpenSSL.crypto.load_certificate_request\u003c/code\u003e. \u003ccode\u003ecryptography.x509\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eOpenSSL.SSL.Connection.set_session\u003c/code\u003e now raises \u003ccode\u003eValueError\u003c/code\u003e if the \u003ccode\u003eSession\u003c/code\u003e was obtained from a \u003ccode\u003eConnection\u003c/code\u003e that was using a different \u003ccode\u003eContext\u003c/code\u003e than this one. OpenSSL requires (but does not verify) that sessions only be re-used with a compatible \u003ccode\u003eSSL_CTX\u003c/code\u003e, so this contract is now enforced.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations:\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.crypto.PKey.generate_key\u003c/code\u003e and \u003ccode\u003eOpenSSL.crypto.PKey.check\u003c/code\u003e. The key generation and loading APIs in \u003ccode\u003ecryptography\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.crypto.dump_privatekey\u003c/code\u003e. The serialization APIs on \u003ccode\u003ecryptography\u003c/code\u003e private key types should be used instead.\u003c/li\u003e\n\u003cli\u003eDeprecated all the mutable APIs on \u003ccode\u003eOpenSSL.crypto.X509\u003c/code\u003e: \u003ccode\u003eset_version\u003c/code\u003e, \u003ccode\u003eset_pubkey\u003c/code\u003e, \u003ccode\u003esign\u003c/code\u003e, \u003ccode\u003eset_serial_number\u003c/code\u003e, \u003ccode\u003egmtime_adj_notAfter\u003c/code\u003e, \u003ccode\u003egmtime_adj_notBefore\u003c/code\u003e, \u003ccode\u003eset_notBefore\u003c/code\u003e, \u003ccode\u003eset_notAfter\u003c/code\u003e, \u003ccode\u003eset_issuer\u003c/code\u003e, and \u003ccode\u003eset_subject\u003c/code\u003e. \u003ccode\u003ecryptography.x509.CertificateBuilder\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.SSL.Context.set_passwd_cb\u003c/code\u003e. Users should decrypt and load their private keys themselves, with \u003ccode\u003ecryptography\u003c/code\u003e's key loading APIs, and then call \u003ccode\u003eOpenSSL.SSL.Context.use_privatekey\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.crypto.X509Name\u003c/code\u003e, as well as the remaining APIs that consume or return it: \u003ccode\u003eOpenSSL.crypto.X509.get_issuer\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509.get_subject\u003c/code\u003e, and \u003ccode\u003eOpenSSL.SSL.Context.set_client_ca_list\u003c/code\u003e. The APIs in \u003ccode\u003ecryptography.x509\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges:\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eOpenSSL.SSL.Connection.get_client_ca_list\u003c/code\u003e now takes an \u003ccode\u003eas_cryptography\u003c/code\u003e keyword-argument. When \u003ccode\u003eTrue\u003c/code\u003e is passed then \u003ccode\u003ecryptography.x509.Name\u003c/code\u003e are returned, instead of \u003ccode\u003eOpenSSL.crypto.X509Name\u003c/code\u003e. In the future, passing \u003ccode\u003eFalse\u003c/code\u003e (the default) will be deprecated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.2.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved deprecated \u003ccode\u003eOpenSSL.crypto.X509Extension\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509Req.add_extension\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509Req.get_extensions\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509.add_extension\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509.get_extensions\u003c/code\u003e. \u003ccode\u003ecryptography.x509\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003eIt is now an error to calling any mutating method on \u003ccode\u003eOpenSSL.SSL.Context\u003c/code\u003e after it has been used to create a \u003ccode\u003eConnection\u003c/code\u003e. This was previously deprecated and has always been unsafe.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations:\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eChanges:\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMaximum supported \u003ccode\u003ecryptography\u003c/code\u003e version is now 48.x.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eOpenSSL.SSL.Connection.set_options\u003c/code\u003e to set options on a per-connection basis.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.1.0 (2026-04-24)\u003c/h2\u003e\n\u003cp\u003eBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\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/pyca/pyopenssl/commit/a34aa1de7e2050d3a83cef74d8265662237f8ba1\"\u003e\u003ccode\u003ea34aa1d\u003c/code\u003e\u003c/a\u003e Prepare 26.3.0 release (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1515\"\u003e#1515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/24db8805e2e1e283549a88408d2cd856127242c3\"\u003e\u003ccode\u003e24db880\u003c/code\u003e\u003c/a\u003e Deprecate X509Name and the remaining APIs that consume or return it (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1514\"\u003e#1514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/1dc08befb2749ded30a8d172d1c5913dfd9484e9\"\u003e\u003ccode\u003e1dc08be\u003c/code\u003e\u003c/a\u003e Add as_cryptography parameter to Connection.get_client_ca_list (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1508\"\u003e#1508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/55653a56f7b2a3c62b5ad74f97bcc4a61c242cbd\"\u003e\u003ccode\u003e55653a5\u003c/code\u003e\u003c/a\u003e Require cryptography 49, drop Python 3.8 (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/9bad760cc38cb4b39e8cf00461aeacd445657ec9\"\u003e\u003ccode\u003e9bad760\u003c/code\u003e\u003c/a\u003e Remove deprecated CSR functionality (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1507\"\u003e#1507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/98ca874e7ebce041fd7b7543fc1f924e0a3496ea\"\u003e\u003ccode\u003e98ca874\u003c/code\u003e\u003c/a\u003e Enforce that Session is only re-used with the Context it came from (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1512\"\u003e#1512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/cbcb1da35c6f4ebaef4060d473004b96b23c4d79\"\u003e\u003ccode\u003ecbcb1da\u003c/code\u003e\u003c/a\u003e Deprecate Context.set_passwd_cb (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/3b9d07db1b40159298dc51c04b65771cf7adb23c\"\u003e\u003ccode\u003e3b9d07d\u003c/code\u003e\u003c/a\u003e Deprecate all the mutable APIs on X509 (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1510\"\u003e#1510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/e096920d4526eddcc873b74fc459881e894b2de3\"\u003e\u003ccode\u003ee096920\u003c/code\u003e\u003c/a\u003e Deprecate PKey.generate_key, PKey.check, and dump_privatekey (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/7079d6d41c726ca921a3282449eac24789272d14\"\u003e\u003ccode\u003e7079d6d\u003c/code\u003e\u003c/a\u003e Fix zizmor findings in GitHub Actions workflows (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1506\"\u003e#1506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/pyopenssl/compare/26.0.0...26.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyreadline3` from 3.5.4 to 3.5.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyreadline3/pyreadline3/releases\"\u003epyreadline3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.5.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAlternate Fix to KeyboardInterrupt Issue by \u003ca href=\"https://github.com/davedikian\"\u003e\u003ccode\u003e@​davedikian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/33\"\u003epyreadline3/pyreadline3#33\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pyreadline3/pyreadline3/compare/v3.5.5...v3.5.6\"\u003ehttps://github.com/pyreadline3/pyreadline3/compare/v3.5.5...v3.5.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.5.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanups by \u003ca href=\"https://github.com/brgirgis\"\u003e\u003ccode\u003e@​brgirgis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/35\"\u003epyreadline3/pyreadline3#35\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd backend identifier for CPython compatibility by \u003ca href=\"https://github.com/zelosleone\"\u003e\u003ccode\u003e@​zelosleone\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/44\"\u003epyreadline3/pyreadline3#44\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/zelosleone\"\u003e\u003ccode\u003e@​zelosleone\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/44\"\u003epyreadline3/pyreadline3#44\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pyreadline3/pyreadline3/compare/v3.5.4...v3.5.5\"\u003ehttps://github.com/pyreadline3/pyreadline3/compare/v3.5.4...v3.5.5\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\u003eSee full diff in \u003ca href=\"https://github.com/pyreadline3/pyreadline3/compare/v3.5.4...v3.5.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.4.4 to 2026.6.28\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.6.28\u003c/p\u003e\n\u003cp\u003eGit issue 604: regex fails on free-threading python because setlocale is not thread-safe\u003c/p\u003e\n\u003cp\u003eVersion: 2026.5.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReverse matching with full unicode casefolding could lead to out-of-range string indexes.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eA fix for older Python versions before free-threading was  supported.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eMore fixes for free-threading.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\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/mrabarnett/mrab-regex/commit/b18daa63c23770ae8b455585c85632808eb84bca\"\u003e\u003ccode\u003eb18daa6\u003c/code\u003e\u003c/a\u003e Git issue 604: regex fails on free-threading python because setlocale is not ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/e57d185bb711729091907b23edac5dcba0426243\"\u003e\u003ccode\u003ee57d185\u003c/code\u003e\u003c/a\u003e Reverse matching with full unicode casefolding lead to out-of-range string in...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.4.4...2026.6.28\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.52.1 to 4.56.1\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\u003ev4.56.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etreat scalar string then/else as a single item in if-replace extend by \u003ca href=\"https://github.com/HrachShah\"\u003e\u003ccode\u003e@​HrachShah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3969\"\u003etox-dev/tox#3969\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/HrachShah\"\u003e\u003ccode\u003e@​HrachShah\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3969\"\u003etox-dev/tox#3969\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.56.0...4.56.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.56.0...4.56.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.56.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix type errors flagged by ty 0.0.43 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/3952\"\u003etox-dev/tox#3952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop obsolete ty: ignore directives 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/3957\"\u003etox-dev/tox#3957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Use double backquotes for git command in \u003ccode\u003edevelopment.rst\u003c/code\u003e 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/3961\"\u003etox-dev/tox#3961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix indent misalignment in \u003ccode\u003ereference/config.rst\u003c/code\u003e 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/3962\"\u003etox-dev/tox#3962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: replace \u003ca href=\"http://tox.readthedocs.org\"\u003ehttp://tox.readthedocs.org\u003c/a\u003e with \u003ca href=\"https://tox.wiki\"\u003ehttps://tox.wiki\u003c/a\u003e by \u003ca href=\"https://github.com/TejasAmle\"\u003e\u003ccode\u003e@​TejasAmle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3963\"\u003etox-dev/tox#3963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(config): restore skip_missing_interpreters default to False 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/3966\"\u003etox-dev/tox#3966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(virtualenv): auto-pin virtualenv for end-of-life Python 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/3967\"\u003etox-dev/tox#3967\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/TejasAmle\"\u003e\u003ccode\u003e@​TejasAmle\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3963\"\u003etox-dev/tox#3963\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.55.1...4.56.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.55.1...4.56.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.55.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(config): propagate overrides through config references by \u003ca href=\"https://github.com/tales-aparecida\"\u003e\u003ccode\u003e@​tales-aparecida\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3951\"\u003etox-dev/tox#3951\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/tales-aparecida\"\u003e\u003ccode\u003e@​tales-aparecida\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3951\"\u003etox-dev/tox#3951\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.55.0...4.55.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.55.0...4.55.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.55.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👷 ci(schemastore): sync fork before pushing branch 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/3942\"\u003etox-dev/tox#3942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Also pass \u003ccode\u003eTERMINFO\u003c/code\u003e when in an interactive shell by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3946\"\u003etox-dev/tox#3946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): skip constrain_package_deps when constraints is set 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/3948\"\u003etox-dev/tox#3948\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.54.0...4.55.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.54.0...4.55.0\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/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\u003eBug fixes - 4.56.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e{ replace = \u0026quot;if\u0026quot; ... extend = true }\u003c/code\u003e corrupting the resulting list when \u003ccode\u003ethen\u003c/code\u003e or \u003ccode\u003eelse\u003c/code\u003e is a scalar\nstring (e.g. \u003ccode\u003ethen = \u0026quot;-v\u0026quot;\u003c/code\u003e): a non-empty scalar string is now appended as a single element instead of being iterated\ncharacter-by-character, while a false \u003ccode\u003eif\u003c/code\u003e with no \u003ccode\u003eelse\u003c/code\u003e (yielding \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e) contributes nothing rather than an\nempty element, and list/set results are still spread into the parent. (:issue:\u003ccode\u003e3969\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.56.0 (2026-06-23)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.56.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDerive :ref:\u003ccode\u003evirtualenv_spec\u003c/code\u003e automatically: when an environment targets a Python version the installed\n:pypi:\u003ccode\u003evirtualenv\u003c/code\u003e can no longer create (e.g. \u003ccode\u003epy38\u003c/code\u003e with virtualenv \u003ccode\u003e21.5+\u003c/code\u003e), tox now pins the newest virtualenv\nthat still supports it and bootstraps it for that environment only. The downgrade happens only when every\n\u003ccode\u003ebase_python\u003c/code\u003e candidate is unsupported, so environments targeting current interpreters are unaffected. This fixes\n\u003ccode\u003epy38\u003c/code\u003e (and other end-of-life interpreters) being silently skipped after a virtualenv upgrade - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3965\u003c/code\u003e) (:issue:\u003ccode\u003e3965\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.56.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe default value of \u003ccode\u003eskip_missing_interpreters\u003c/code\u003e changed from \u003ccode\u003eTrue\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e — missing interpreters now fail\nthe run by default, matching tox 3 behavior. The tox 4 rewrite unintentionally changed this default. To restore the\nprevious (incorrect) behavior, set \u003ccode\u003eskip_missing_interpreters = true\u003c/code\u003e in your tox configuration or pass\n\u003ccode\u003e--skip-missing-interpreters\u003c/code\u003e on the command line. (:issue:\u003ccode\u003e3965\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eImproved documentation - 4.56.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix nested list items being rendered with continued numbering instead of as sub-items in \u003ccode\u003edevelopment.rst\u003c/code\u003e,\n\u003ccode\u003eonboarding.rst\u003c/code\u003e and \u003ccode\u003eexplanation.rst\u003c/code\u003e. (:issue:\u003ccode\u003e3960\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReplace stale \u003ccode\u003ehttp://tox.readthedocs.org\u003c/code\u003e URL with \u003ccode\u003ehttps://tox.wiki\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ccode\u003eHomepage\u003c/code\u003e),\n\u003ccode\u003e.github/CONTRIBUTING.md\u003c/code\u003e, and \u003ccode\u003e.github/PULL_REQUEST_TEMPLATE.md\u003c/code\u003e. (:issue:\u003ccode\u003e3963\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.55.1 (2026-06-03)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.55.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTOX_OVERRIDE\u003c/code\u003e (and \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--override\u003c/code\u003e) now propagates through configuration references. Previously, overriding a\nbase value that was later referenced via \u003ccode\u003e{[section]key}\u003c/code\u003e (ini) or \u003ccode\u003e{replace = \u0026quot;ref\u0026quot;, of = [...]}\u003c/code\u003e (toml) was\nignored because reference resolution read the raw file value, bypassing the override system - by\n:user:\u003ccode\u003etales-aparecida\u003c/code\u003e. (:issue:\u003ccode\u003e3950\u003c/code\u003e) (:issue:\u003ccode\u003e3950\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/4bb64210e056ea35fb123faae08cb23cc08234cb\"\u003e\u003ccode\u003e4bb6421\u003c/code\u003e\u003c/a\u003e release 4.56.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/ca2f561b60f30c03c8c0d5386c85f509d45a155b\"\u003e\u003ccode\u003eca2f561\u003c/code\u003e\u003c/a\u003e treat scalar string then/else as a single item in if-replace extend (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3969\"\u003e#3969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/f933bd2ad3028148a9158b74b63920585bf46e36\"\u003e\u003ccode\u003ef933bd2\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3968\"\u003e#3968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/f3a626a016c96206a5306ccd73f08eb0e83e4abc\"\u003e\u003ccode\u003ef3a626a\u003c/code\u003e\u003c/a\u003e release 4.56.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/140733c12949e4f00b4fe9d3acccee31a2c8367c\"\u003e\u003ccode\u003e140733c\u003c/code\u003e\u003c/a\u003e ✨ feat(virtualenv): auto-pin virtualenv for end-of-life Python (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/bfbc87656a8a0b97fffbab4796660077999971da\"\u003e\u003ccode\u003ebfbc876\u003c/code\u003e\u003c/a\u003e 🐛 fix(config): restore skip_missing_interpreters default to False (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/8ba8075acd45f336347b0133eae7d69af4aab0cd\"\u003e\u003ccode\u003e8ba8075\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3964\"\u003e#3964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/e9d06b0aa8db43e7c3b3b3730be272febe405ec7\"\u003e\u003ccode\u003ee9d06b0\u003c/code\u003e\u003c/a\u003e docs: replace \u003ca href=\"http://tox.readthedocs.org\"\u003ehttp://tox.readthedocs.org\u003c/a\u003e with \u003ca href=\"https://tox.wiki\"\u003ehttps://tox.wiki\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3963\"\u003e#3963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/94f5a6b65285b9082b3bef0f47c5d41560da4dbc\"\u003e\u003ccode\u003e94f5a6b\u003c/code\u003e\u003c/a\u003e docs: Fix indent misalignment in \u003ccode\u003ereference/config.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3962\"\u003e#3962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/d43df676b0551dedf31c7a8a3643ca66fc436c34\"\u003e\u003ccode\u003ed43df67\u003c/code\u003e\u003c/a\u003e docs: Use double backquotes for git command in \u003ccode\u003edevelopment.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3961\"\u003e#3961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.1...4.56.1\"\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.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.20260408 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-requests` from 2.33.0.20260408 to 2.33.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 `ansible` from 13.5.0 to 14.1.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/b41eb51eeba848341c1f1df3d65c8b5866a8fdb9\"\u003e\u003ccode\u003eb41eb51\u003c/code\u003e\u003c/a\u003e Ansible 14.1.0: Dependencies, changelog and porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/303055947a8b573d99639915a00f42189592d8bb\"\u003e\u003ccode\u003e3030559\u003c/code\u003e\u003c/a\u003e Add 15/ directory (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/698\"\u003e#698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/7ec68faac3efbf9a070dfbb2ace6556acee2e3de\"\u003e\u003ccode\u003e7ec68fa\u003c/code\u003e\u003c/a\u003e Release Ansible 14.0.0 (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/697\"\u003e#697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/79c72417ed369c92650b14f48b0a1e6bc8b601c1\"\u003e\u003ccode\u003e79c7241\u003c/code\u003e\u003c/a\u003e Schedule cyberark.pas for removal from Ansible 15 (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/413d77ba5ba9...\n\n_Description has been truncated_\n\n\u003c!-- Reviewable:start --\u003e\n- - -\nThis change is [\u003cimg src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/\u003e](https://reviewable.io/reviews/sillsdev/TheCombine/4318)\n\u003c!-- Reviewable:end --\u003e\n","html_url":"https://github.com/sillsdev/TheCombine/pull/4318","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2FTheCombine/issues/4318","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4318/packages"},{"uuid":"4521535875","node_id":"PR_kwDOOLckwc7fRcG7","number":1138,"state":"open","title":"Bump the pip-deps group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python","skip-changelog"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-26T05:09:42.000Z","updated_at":"2026-05-26T05:10:57.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-deps","update_count":15,"packages":[{"name":"requests","old_version":"2.34.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"click","old_version":"8.3.3","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"python-ldap","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/python-ldap/python-ldap"},{"name":"opentelemetry-api","old_version":"1.41.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.41.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"botocore","old_version":"1.43.6","new_version":"1.43.14","repository_url":"https://github.com/boto/botocore"},{"name":"boto3","old_version":"1.43.6","new_version":"1.43.14","repository_url":"https://github.com/boto/boto3"},{"name":"python-frontmatter","old_version":"1.1.0","new_version":"1.3.0","repository_url":"https://github.com/eyeseast/python-frontmatter"},{"name":"types-pyyaml","old_version":"6.0.12.20260510","new_version":"6.0.12.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pytz","old_version":"2026.2.0.20260506","new_version":"2026.2.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260508","new_version":"2.9.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.33.0.20260508","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"pytest-socket","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/miketheman/pytest-socket"},{"name":"pytest-rerunfailures","old_version":"16.1","new_version":"16.3","repository_url":"https://github.com/pytest-dev/pytest-rerunfailures"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-deps group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.34.0` | `2.34.2` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.4.1` |\n| [python-ldap](https://github.com/python-ldap/python-ldap) | `3.4.5` | `3.4.7` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.41.1` | `1.42.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.41.1` | `1.42.1` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [botocore](https://github.com/boto/botocore) | `1.43.6` | `1.43.14` |\n| [boto3](https://github.com/boto/boto3) | `1.43.6` | `1.43.14` |\n| [python-frontmatter](https://github.com/eyeseast/python-frontmatter) | `1.1.0` | `1.3.0` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260510` | `6.0.12.20260518` |\n| [types-pytz](https://github.com/python/typeshed) | `2026.2.0.20260506` | `2026.2.0.20260518` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260508` | `2.9.0.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260508` | `2.33.0.20260518` |\n| [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0` | `0.8.0` |\n| [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) | `16.1` | `16.3` |\n\n\nUpdates `requests` from 2.34.0 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\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/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\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/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/psf/requests/compare/v2.34.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32?closed=1\"\u003ehttps://github.com/pallets/click/milestone/32?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. :issue:\u003ccode\u003e3458\u003c/code\u003e :issue:\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. :issue:\u003ccode\u003e3277\u003c/code\u003e :pr:\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion\nresult. :issue:\u003ccode\u003e3015\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. :issue:\u003ccode\u003e3487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. :issue:\u003ccode\u003e3449\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\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/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5\"\u003e\u003ccode\u003e6eeb50e\u003c/code\u003e\u003c/a\u003e release version 8.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f\"\u003e\u003ccode\u003e67921d5\u003c/code\u003e\u003c/a\u003e change log and doc fixes (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1\"\u003e\u003ccode\u003e9c41f46\u003c/code\u003e\u003c/a\u003e Fix changelog and version admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6\"\u003e\u003ccode\u003e6cb3477\u003c/code\u003e\u003c/a\u003e fix skip condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37\"\u003e\u003ccode\u003e5ee8e31\u003c/code\u003e\u003c/a\u003e fix I/O operation on closed file error with CliRunner and echo_via_pager (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f\"\u003e\u003ccode\u003ebecbde5\u003c/code\u003e\u003c/a\u003e pager doesn't close std streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77\"\u003e\u003ccode\u003ea5f5aa6\u003c/code\u003e\u003c/a\u003e Handle empty bytes in echo (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2\"\u003e\u003ccode\u003e4d3db84\u003c/code\u003e\u003c/a\u003e handle empty bytes in echo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5\"\u003e\u003ccode\u003ed42f15b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eget_parameter_source()\u003c/code\u003e during type conversion and eager callbacks (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1\"\u003e\u003ccode\u003e0baa8db\u003c/code\u003e\u003c/a\u003e Document ctx.params bypass with test and doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-ldap` from 3.4.5 to 3.4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-ldap/python-ldap/releases\"\u003epython-ldap's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.7\u003c/h2\u003e\n\u003cp\u003eNo code changes, correcting for the fact that the previous release artifacts\nuploaded to PyPI contained unintended files.\u003c/p\u003e\n\u003ch2\u003e3.4.6\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eattrlist\u003c/code\u003e parameter is now properly checked before use, avoiding memory\nerrors due to type mismatches\u003c/li\u003e\n\u003cli\u003eFixed errors with requestName/requestValue in \u003ccode\u003eextop.dds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eldif\u003c/code\u003e and \u003ccode\u003eldap.schema\u003c/code\u003e modules now actively close sockets as they're\nfinished with them\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePackage no longer requires setuptools-scm\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-ldap/python-ldap/blob/python-ldap-3.4.7/CHANGES\"\u003epython-ldap's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eReleased 3.4.7 2026-05-19\u003c/p\u003e\n\u003cp\u003eNo code changes, correcting for the fact that the previous release artifacts\nuploaded to PyPI contained unintended files.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eReleased 3.4.6 2026-05-14\u003c/p\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eattrlist\u003c/code\u003e parameter is now properly checked before use, avoiding memory\nerrors due to type mismatches\u003c/li\u003e\n\u003cli\u003eFixed errors with requestName/requestValue in \u003ccode\u003eextop.dds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eldif\u003c/code\u003e and \u003ccode\u003eldap.schema\u003c/code\u003e modules now actively close sockets as they're\nfinished with them\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePackage no longer requires setuptools-scm\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eReleased 3.4.5 2025-10-10\u003c/p\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2025-61911 (GHSA-r7r6-cc7p-4v5m): Enforce \u003ccode\u003estr\u003c/code\u003e input in\n\u003ccode\u003eldap.filter.escape_filter_chars\u003c/code\u003e with \u003ccode\u003eescape_mode=1\u003c/code\u003e; ensure proper\nescaping. (thanks to lukas-eu)\u003c/li\u003e\n\u003cli\u003eCVE-2025-61912 (GHSA-p34h-wq7j-h5v6): Correct NUL escaping in\n\u003ccode\u003eldap.dn.escape_dn_chars\u003c/code\u003e to \u003ccode\u003e\\00\u003c/code\u003e per RFC 4514. (thanks to aradona91)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReconnectLDAPObject now properly reconnects on UNAVAILABLE, CONNECT_ERROR\nand TIMEOUT exceptions (previously only SERVER_DOWN), fixing reconnection\nissues especially during server restarts\u003c/li\u003e\n\u003cli\u003eFixed syncrepl.py to use named constants instead of raw decimal values\nfor result types\u003c/li\u003e\n\u003cli\u003eFixed error handling in SearchNoOpMixIn to prevent a undefined variable error\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTests:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded comprehensive reconnection test cases including concurrent operation\nhandling and server restart scenarios\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDoc/\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated installation docs and fixed various documentation typos\u003c/li\u003e\n\u003cli\u003eAdded ReadTheDocs configuration file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd testing and document support for Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eReleased 3.4.4 2022-11-17\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-ldap/python-ldap/commit/79f34cc398c5bdf202bdb4024a1bb2ec272ce26e\"\u003e\u003ccode\u003e79f34cc\u003c/code\u003e\u003c/a\u003e Prepare a new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/4472afd4dd00da71c6836377bad8e0c77702bb66\"\u003e\u003ccode\u003e4472afd\u003c/code\u003e\u003c/a\u003e Prepare a new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/f8aa2894212e6624b1b4aac3aa46517652dd5983\"\u003e\u003ccode\u003ef8aa289\u003c/code\u003e\u003c/a\u003e CI: Drop 3.8 from CI as no longer supported in current images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/311dbbab0a222238790a18246f0b5b63b895930c\"\u003e\u003ccode\u003e311dbba\u003c/code\u003e\u003c/a\u003e fix(LDAPObject): Prevent memory errors in attrs_from_List\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/dee242c7015faf0d132eedc4d4235b791910bdd9\"\u003e\u003ccode\u003edee242c\u003c/code\u003e\u003c/a\u003e test: Test valid and invalid attrlist parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/9257c176ec7e428742dce0a89d5df27d4cb4c3df\"\u003e\u003ccode\u003e9257c17\u003c/code\u003e\u003c/a\u003e ci(github): update github actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/2ecbc03ff87afa4aa95db84def620a0c514ccbbb\"\u003e\u003ccode\u003e2ecbc03\u003c/code\u003e\u003c/a\u003e fix(ldif): explicitly close sockets after fetching URLs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/5b173c96c2ade8b7ea2e91a5d46bbefbbd56c5c5\"\u003e\u003ccode\u003e5b173c9\u003c/code\u003e\u003c/a\u003e fix(ldap.schema): Explicitly close url file to avoid ResourceWarning in Pytho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/1491b43ecf1856608fa401e66c9d3f89874c75d7\"\u003e\u003ccode\u003e1491b43\u003c/code\u003e\u003c/a\u003e remove superfluous dependency on setuptools-scm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/7e93577c20207c12205db4e6724291483aed94da\"\u003e\u003ccode\u003e7e93577\u003c/code\u003e\u003c/a\u003e fix(extop.dds): make passing of requestName optional again\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-ldap/python-ldap/compare/python-ldap-3.4.5...python-ldap-3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.41.1 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\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/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.1...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-sdk` from 1.41.1 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\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/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.1...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\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/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.43.6 to 1.43.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/f23ff3b6696ff40edf962921f5e42299f32bbe94\"\u003e\u003ccode\u003ef23ff3b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/7feaf2f7e052799cee88cebedec295422dd9ae33\"\u003e\u003ccode\u003e7feaf2f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d3e43934fe477630185bf6fd31c5ac7c87f4c8c5\"\u003e\u003ccode\u003ed3e4393\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/5204755d6cc055a11d660f5021e84aa1dcf86600\"\u003e\u003ccode\u003e5204755\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/89a5ca07e8c76117201d53fce33777c2c9fc704c\"\u003e\u003ccode\u003e89a5ca0\u003c/code\u003e\u003c/a\u003e Improving caching of S3 endpoints by omitting unused parameters (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3692\"\u003e#3692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8bd61f7918034e9c9d5013c8422dd3e9e56b050e\"\u003e\u003ccode\u003e8bd61f7\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b6f2c74a6dea7272da8a2cf88dc777fbc133c2d7\"\u003e\u003ccode\u003eb6f2c74\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9cfdcaf4baecbc6ad542bd9aeaa116bcf502024a\"\u003e\u003ccode\u003e9cfdcaf\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/656fd57082823142d4a7584a8d09fc53aa419614\"\u003e\u003ccode\u003e656fd57\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/280497b9d5ebc5b1a85c1911a069c7452041fa42\"\u003e\u003ccode\u003e280497b\u003c/code\u003e\u003c/a\u003e Merge customizations for Bedrock AgentCore Control\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.43.6...1.43.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.6 to 1.43.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/07953b03a1c6fc86660852ee65a21c3ceae3f437\"\u003e\u003ccode\u003e07953b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/25c77c306c3efba0d44bebec97ab882ddd6f0958\"\u003e\u003ccode\u003e25c77c3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5e64afcd4172f04cd4b62a40050bd6088e316316\"\u003e\u003ccode\u003e5e64afc\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/97921f4babf469d1c1fbbb27746bbaece6008122\"\u003e\u003ccode\u003e97921f4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4e58a354db37897d65024fca50e9f9b4e4845068\"\u003e\u003ccode\u003e4e58a35\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1307ac2642ed8e53aca983b1c89e952309a0c66d\"\u003e\u003ccode\u003e1307ac2\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c75c901f5be45cce8e8f46733ee0562d06110c81\"\u003e\u003ccode\u003ec75c901\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/d3f2433ff49062a75426c406e606625b69a32eb6\"\u003e\u003ccode\u003ed3f2433\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5eddf97fcacb8e8aecf0ff043501ff97454f105\"\u003e\u003ccode\u003ed5eddf9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/93f3a42377b288934f08416a9c3b63920d8163c6\"\u003e\u003ccode\u003e93f3a42\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.12\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.6...1.43.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-frontmatter` from 1.1.0 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eyeseast/python-frontmatter/releases\"\u003epython-frontmatter's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.0 - Now using uv\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTest on Python 3.14 and upgrade actions by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/128\"\u003eeyeseast/python-frontmatter#128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove codecs from tests by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/129\"\u003eeyeseast/python-frontmatter#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to uv and pyproject.toml by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/131\"\u003eeyeseast/python-frontmatter#131\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eyeseast/python-frontmatter/compare/v1.2.0...v1.3.0\"\u003ehttps://github.com/eyeseast/python-frontmatter/compare/v1.2.0...v1.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0 - Fix type issues and support newer Python versions\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSolve all the type issues by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/120\"\u003eeyeseast/python-frontmatter#120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude py.typed marker in package distribution by \u003ca href=\"https://github.com/giuse-boccia\"\u003e\u003ccode\u003e@​giuse-boccia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/125\"\u003eeyeseast/python-frontmatter#125\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/giuse-boccia\"\u003e\u003ccode\u003e@​giuse-boccia\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/125\"\u003eeyeseast/python-frontmatter#125\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis version drops support for Python 3.9.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eyeseast/python-frontmatter/compare/v1.1.0...v1.2.0\"\u003ehttps://github.com/eyeseast/python-frontmatter/compare/v1.1.0...v1.2.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/eyeseast/python-frontmatter/commit/dc7c0af5466b104e0ba01ae3c5b2cd77edc27292\"\u003e\u003ccode\u003edc7c0af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/131\"\u003e#131\u003c/a\u003e from eyeseast/123-uv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/1e787d8db0b426a6f28a449497bb5ab43d9f3d49\"\u003e\u003ccode\u003e1e787d8\u003c/code\u003e\u003c/a\u003e Migrate to uv and pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/36224327b9506ffaf5a62ffced1818934ff5278c\"\u003e\u003ccode\u003e3622432\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/129\"\u003e#129\u003c/a\u003e from eyeseast/126-remove-codecs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/c4fdd50f3f8785f8f794e8f9ca5d1833824cb9eb\"\u003e\u003ccode\u003ec4fdd50\u003c/code\u003e\u003c/a\u003e Encoding is a kwarg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/6fa3a9a630b2a15096101531884c5e55e90dd189\"\u003e\u003ccode\u003e6fa3a9a\u003c/code\u003e\u003c/a\u003e Remove codecs from tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/3a8c60009a5456c821e81458bcc47b369cd5db99\"\u003e\u003ccode\u003e3a8c600\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/128\"\u003e#128\u003c/a\u003e from eyeseast/upgrade-actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/8243f83b628785910e21f6a75bc1152c1bd9263c\"\u003e\u003ccode\u003e8243f83\u003c/code\u003e\u003c/a\u003e Test on Python 3.14 and upgrade actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/55bcc679d0af970a40b5a97de92c73466e1de07e\"\u003e\u003ccode\u003e55bcc67\u003c/code\u003e\u003c/a\u003e v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/949826fe6fbb1513cf5d820abcf57deab216ff35\"\u003e\u003ccode\u003e949826f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/125\"\u003e#125\u003c/a\u003e from giuse-boccia/fix/include-py-typed-marker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/b12a13bc05f2362b1c21b6e1053d945aeebf497d\"\u003e\u003ccode\u003eb12a13b\u003c/code\u003e\u003c/a\u003e Include py.typed marker in package distribution\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eyeseast/python-frontmatter/compare/v1.1.0...v1.3.0\"\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-pytz` from 2026.2.0.20260506 to 2026.2.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-python-dateutil` from 2.9.0.20260508 to 2.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-requests` from 2.33.0.20260508 to 2.33.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 `pytest-socket` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miketheman/pytest-socket/releases\"\u003epytest-socket's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlock DNS resolution (\u003ccode\u003egetaddrinfo\u003c/code\u003e, \u003ccode\u003egethostbyname\u003c/code\u003e) when sockets are disabled \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/482\"\u003e#482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport CIDR network ranges in \u003ccode\u003eallow_hosts\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/479\"\u003e#479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWarn before raising on a blocked socket call \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/468\"\u003e#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache hostname resolutions during a test run \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/369\"\u003e#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved support for Python 3.8 and 3.9.\u003c/strong\u003e Python 3.10 is now the minimum.\u003c/li\u003e\n\u003cli\u003eTest against Python 3.13, 3.14, and free-threaded 3.13t/3.14t\u003c/li\u003e\n\u003cli\u003eReplaced Poetry with uv \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/429\"\u003e#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded type hints \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/465\"\u003e#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwapped \u003ccode\u003epytest-httpbin\u003c/code\u003e for a local test fixture \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/467\"\u003e#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDependency, CI, and development updates\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/twm\"\u003e\u003ccode\u003e@​twm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/pull/369\"\u003emiketheman/pytest-socket#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0\"\u003ehttps://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.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/miketheman/pytest-socket/blob/main/CHANGELOG.md\"\u003epytest-socket's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.8.0][] (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eEnhancements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBlock DNS resolution (\u003ccode\u003egetaddrinfo\u003c/code\u003e, \u003ccode\u003egethostbyname\u003c/code\u003e) when sockets are disabled \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/482\"\u003e#482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport CIDR network ranges in \u003ccode\u003eallow_hosts\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/479\"\u003e#479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWarn before raising on a blocked socket call \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/468\"\u003e#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache hostname resolutions during a test run \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/369\"\u003e#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved support for Python 3.8 and 3.9.\u003c/strong\u003e Python 3.10 is now the minimum.\u003c/li\u003e\n\u003cli\u003eTest against Python 3.13, 3.14, and free-threaded 3.13t/3.14t\u003c/li\u003e\n\u003cli\u003eReplaced Poetry with uv \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/429\"\u003e#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded type hints \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/465\"\u003e#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwapped \u003ccode\u003epytest-httpbin\u003c/code\u003e for a local test fixture \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/467\"\u003e#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDependency, CI, and development updates\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/miketheman/pytest-socket/commit/f9ec1395f4b060c095d6cb28dc1d03d6ca4e0f47\"\u003e\u003ccode\u003ef9ec139\u003c/code\u003e\u003c/a\u003e pytest-socket, v0.8.0 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/484\"\u003e#484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/3930df85c15d93ad3d56ccf21dd81fafcc3e107f\"\u003e\u003ccode\u003e3930df8\u003c/code\u003e\u003c/a\u003e chore(ci): add publish workflow, update others (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/483\"\u003e#483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/aae7f44b24475f2fbdc49fac8f2fa6d63b67f48b\"\u003e\u003ccode\u003eaae7f44\u003c/code\u003e\u003c/a\u003e feat: also block DNS resolution (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/f0700d23791fafc2aefa92bfd0b3e49d99de4582\"\u003e\u003ccode\u003ef0700d2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/481\"\u003e#481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/09ba021cd3c276ba75d6cb726ef355d75c68c13d\"\u003e\u003ccode\u003e09ba021\u003c/code\u003e\u003c/a\u003e chore(deps): full sweep of all dependency upgrades (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/8dc62860f3d0cf2104f50acee8ac91d42dd29950\"\u003e\u003ccode\u003e8dc6286\u003c/code\u003e\u003c/a\u003e feat(allow_hosts): support CIDR network entries (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/06ed8a1562be753238bcf7c35d960816b7e9fa62\"\u003e\u003ccode\u003e06ed8a1\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 0.49.1 to 1.0.0 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/b3132108f9ba20f8e1c3a8a5caa6f8e66a7ce6cc\"\u003e\u003ccode\u003eb313210\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump mypy from 1.20.0 to 1.20.2 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/f7e85f788b5db0a7cb832414f5d04ea6124305a2\"\u003e\u003ccode\u003ef7e85f7\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest-randomly from 3.16.0 to 4.0.1 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/89690a6c31d200c9463c7e41e7ba51139de67c29\"\u003e\u003ccode\u003e89690a6\u003c/code\u003e\u003c/a\u003e chore: dependabot config (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-rerunfailures` from 16.1 to 16.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst\"\u003epytest-rerunfailures's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e16.3 (2026-05-22)\u003c/h2\u003e\n\u003cp\u003eFeatures\n++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e--reruns-mode\u003c/code\u003e option (\u003ccode\u003estrict\u003c/code\u003e or \u003ccode\u003eappend\u003c/code\u003e). With \u003ccode\u003eappend\u003c/code\u003e,\nmarker reruns and the global \u003ccode\u003e--reruns\u003c/code\u003e / \u003ccode\u003ereruns\u003c/code\u003e ini setting are summed\ninstead of the marker taking strict priority. Default is \u003ccode\u003estrict\u003c/code\u003e so\nexisting behaviour is unchanged.\nFixes \u003ccode\u003e[#321](https://github.com/pytest-dev/pytest-rerunfailures/issues/321) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/321\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e--rerun-show-tracebacks\u003c/code\u003e option to display tracebacks from failed\nattempts that were retried, including tests that eventually passed. The\nrerun summary section is emitted automatically when the flag is set, so\n\u003ccode\u003e-rR\u003c/code\u003e is no longer required to see the tracebacks.\nFixes \u003ccode\u003e[#156](https://github.com/pytest-dev/pytest-rerunfailures/issues/156) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/156\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e16.2 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eBreaking changes\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for pytest 8.0. Minimum pytest version is now 8.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeatures\n++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for pytest 9.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes\n+++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing teardown for session and module scoped fixtures when fixture teardown fails.\nFixes \u003ccode\u003e[#314](https://github.com/pytest-dev/pytest-rerunfailures/issues/314) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/314\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear fixture finalizers when removing cached results from failed fixtures\nto fix compatibility with pytest \u0026gt;= 9, which asserts that \u003ccode\u003e_finalizers\u003c/code\u003e is\nempty before executing a fixture.\nFixes \u003ccode\u003e[#323](https://github.com/pytest-dev/pytest-rerunfailures/issues/323) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/323\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAccept exception classes (not only regex strings) in the \u003ccode\u003eonly_rerun\u003c/code\u003e and\n\u003ccode\u003ererun_except\u003c/code\u003e marker keyword arguments instead of crashing with an\ninternal error.\nFixes \u003ccode\u003e[#275](https://github.com/pytest-dev/pytest-rerunfailures/issues/275) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/275\u0026gt;\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-rerunfailures/commit/4b3a2200b07b357cecfe192f4997f35764869c6f\"\u003e\u003ccode\u003e4b3a220\u003c/code\u003e\u003c/a\u003e Preparing release 16.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/d17f3be1c8cc257c29cd7d7e815d3c52867b1276\"\u003e\u003ccode\u003ed17f3be\u003c/code\u003e\u003c/a\u003e feat: add --reruns-mode option to sum marker and global reruns (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/321\"\u003e#321\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/328\"\u003e#328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/4a00facae37246c00801390039286d322df6e322\"\u003e\u003ccode\u003e4a00fac\u003c/code\u003e\u003c/a\u003e Add --rerun-show-tracebacks to surface retried failures (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/9f792d9efe6bf0218e7ba2734257af2d5165ca3f\"\u003e\u003ccode\u003e9f792d9\u003c/code\u003e\u003c/a\u003e Back to development: 16.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/88a84d8471219ae517dfd3752a181b22e51a2b8c\"\u003e\u003ccode\u003e88a84d8\u003c/code\u003e\u003c/a\u003e Preparing release 16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/5e0ad6a3080d778f2d3de8975aceafed0c843b12\"\u003e\u003ccode\u003e5e0ad6a\u003c/code\u003e\u003c/a\u003e fix: accept exception classes in only_rerun and rerun_except markers (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/327\"\u003e#327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/928aa2bb654b18157e6614c15f22091e9997d540\"\u003e\u003ccode\u003e928aa2b\u003c/code\u003e\u003c/a\u003e Update minimum pytest version to 8.1 and add support for pytest 9.0 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/325\"\u003e#325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/b53ef720219427c569bddee7e37d92cc3423e2c9\"\u003e\u003ccode\u003eb53ef72\u003c/code\u003e\u003c/a\u003e Fix support for pytest-main. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/324\"\u003e#324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/d9ef70e5451f604dcc764861f4b0a65dc9dfd202\"\u003e\u003ccode\u003ed9ef70e\u003c/code\u003e\u003c/a\u003e Preserve session and module teardown when fixture teardown fails (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/319\"\u003e#319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/a22edc3de88eeb17f3dcdf482b3f5a13ea9af874\"\u003e\u003ccode\u003ea22edc3\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5 in the actions group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/317\"\u003e#317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/compare/16.1...16.3\"\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 grou...\n\n_Description has been truncated_","html_url":"https://github.com/mongodb/mongodb-kubernetes/pull/1138","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mongodb%2Fmongodb-kubernetes/issues/1138","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1138/packages"},{"uuid":"4466035611","node_id":"PR_kwDOBXYo-M7cfn8k","number":13151,"state":"closed","title":"chore(deps-dev): bump the types group with 3 updates","user":"dependabot[bot]","labels":["Dependencies","Python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-18T04:26:58.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-18T03:28:09.000Z","updated_at":"2026-05-18T04:27:07.000Z","time_to_close":3529,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"types","update_count":3,"packages":[{"name":"types-requests","old_version":"2.33.0.20260503","new_version":"2.33.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tabulate","old_version":"0.10.0.20260408","new_version":"0.10.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"}],"path":null,"ecosystem":"pip"},"body":"Bumps the types group with 3 updates: [types-requests](https://github.com/python/typeshed), [types-tabulate](https://github.com/python/typeshed) and [types-python-dateutil](https://github.com/python/typeshed).\n\nUpdates `types-requests` from 2.33.0.20260503 to 2.33.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-tabulate` from 0.10.0.20260408 to 0.10.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\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/freqtrade/freqtrade/pull/13151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freqtrade%2Ffreqtrade/issues/13151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13151/packages"},{"uuid":"4464481432","node_id":"PR_kwDOCbJ3R87ca4Cv","number":4419,"state":"open","title":"deps(python)(deps-dev): bump the all-dependencies group with 9 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-17T18:11:01.000Z","updated_at":"2026-05-17T18:12:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps-dev): bump","group_name":"all-dependencies","update_count":9,"packages":[{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.28","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"types-aiofiles","old_version":"25.1.0.20260409","new_version":"25.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-toml","old_version":"0.10.8.20260408","new_version":"0.10.8.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260503","new_version":"7.34.1.20260508","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-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"mypy","old_version":"1.20.2","new_version":"2.0.0","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 9 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.28` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.3` | `2.13.4` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20260409` | `25.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260508` |\n| [types-toml](https://github.com/python/typeshed) | `0.10.8.20260408` | `0.10.8.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260503` | `7.34.1.20260508` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260408` | `1.3.1.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260510` |\n| [mypy](https://github.com/python/mypy) | `1.20.2` | `2.0.0` |\n\nUpdates `python-multipart` from 0.0.27 to 0.0.28\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\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/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\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/Kludex/python-multipart/commit/7d8d28b210ac6cb055399562b0dc0e5cf9aef14a\"\u003e\u003ccode\u003e7d8d28b\u003c/code\u003e\u003c/a\u003e Version 0.0.28 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/284\"\u003e#284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b0dd125457d0f98de23bf2f894aedb1a54639d4e\"\u003e\u003ccode\u003eb0dd125\u003c/code\u003e\u003c/a\u003e Cap multipart boundary length at 256 bytes (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/282\"\u003e#282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/d1b57392cf7d0c19235ba454eb5686fd27dc2384\"\u003e\u003ccode\u003ed1b5739\u003c/code\u003e\u003c/a\u003e Speed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/281\"\u003e#281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/09cb8c3da7638d45ecdf7c154832303214bba829\"\u003e\u003ccode\u003e09cb8c3\u003c/code\u003e\u003c/a\u003e Make the long_boundary benchmark dominated by the patched code path (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/280\"\u003e#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/a6467c93c14aa4b09ef65450ead8011c45e5c7a0\"\u003e\u003ccode\u003ea6467c9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Switch CodSpeed benchmarks to walltime mode\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/9a9690035a956fbdcca06f98461244cf790375a7\"\u003e\u003ccode\u003e9a96900\u003c/code\u003e\u003c/a\u003e Switch CodSpeed benchmarks to walltime mode (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/1fc7a626f566ae11bc63165260262b9a30af9008\"\u003e\u003ccode\u003e1fc7a62\u003c/code\u003e\u003c/a\u003e Make benchmark coverage trigger the partial-boundary fallback (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/277\"\u003e#277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/03df045810a216dceabbefc9dca7a33a264307bc\"\u003e\u003ccode\u003e03df045\u003c/code\u003e\u003c/a\u003e Add CodSpeed benchmark suite for parser hot paths (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/276\"\u003e#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/79a7c614953d0c91a1d6dc69759b4fbcd0fb44f3\"\u003e\u003ccode\u003e79a7c61\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/273\"\u003e#273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/bd29332f23429d06cf16226819f89b28a8288915\"\u003e\u003ccode\u003ebd29332\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 5 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/274\"\u003e#274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\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/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\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/pydantic/pydantic/blob/v2.13.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\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/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\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-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-toml` from 0.10.8.20260408 to 0.10.8.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.20260503 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-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-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 `mypy` from 1.20.2 to 2.0.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/7a765008a138ec46c579bfc6ef608860cab36033\"\u003e\u003ccode\u003e7a76500\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/5a3ab3b29f03d8baafeced3761e1afc8bd58be79\"\u003e\u003ccode\u003e5a3ab3b\u003c/code\u003e\u003c/a\u003e Changelog for mypy 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21422\"\u003e#21422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f9c86e21e88f96806c65790d604bf1264db39434\"\u003e\u003ccode\u003ef9c86e2\u003c/code\u003e\u003c/a\u003e Some changelog updates for 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21413\"\u003e#21413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/519eaf15e0ceafae30337083577a54c7d3f3b4fe\"\u003e\u003ccode\u003e519eaf1\u003c/code\u003e\u003c/a\u003e Bump librt to 0.10.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/158a6207d6e221cc403e1d556097b5abf5157cdd\"\u003e\u003ccode\u003e158a620\u003c/code\u003e\u003c/a\u003e Fix negative narrowing for containers (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21411\"\u003e#21411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e556eb93a3c551a320a536879ce0a1608d14d490\"\u003e\u003ccode\u003ee556eb9\u003c/code\u003e\u003c/a\u003e Try fixing mypy mypyc wheels (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21392\"\u003e#21392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f2c97971f5f4dcd749cf87df1e1308ab5754490a\"\u003e\u003ccode\u003ef2c9797\u003c/code\u003e\u003c/a\u003e Expose --num-workers and --native-parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21387\"\u003e#21387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/db0cb2f7c68b0f9d43d6ee1ab68117c1550dac39\"\u003e\u003ccode\u003edb0cb2f\u003c/code\u003e\u003c/a\u003e Bump ast-serialize cache version (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21388\"\u003e#21388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/1090ca6d476f629c566250a41204450043a47cf5\"\u003e\u003ccode\u003e1090ca6\u003c/code\u003e\u003c/a\u003e Bump ast-serialize version to 0.3.0 only (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21391\"\u003e#21391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/714ca9f2ac76e7c6dd56e26fd555f69313ba47ab\"\u003e\u003ccode\u003e714ca9f\u003c/code\u003e\u003c/a\u003e [mypyc] Add note about librt.strings thread safety (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21383\"\u003e#21383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.2...v2.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/strawberry-graphql/strawberry/pull/4419","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/strawberry-graphql%2Fstrawberry/issues/4419","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4419/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":"4424842713","node_id":"PR_kwDOELqrU87adAEf","number":334,"state":"open","title":"Bump types-python-dateutil from 2.9.0.20251115 to 2.9.0.20260508","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T22:50:48.000Z","updated_at":"2026-05-11T22:50:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20251115","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20251115 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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-python-dateutil\u0026package-manager=pip\u0026previous-version=2.9.0.20251115\u0026new-version=2.9.0.20260508)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\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 this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/crestdatasystems/content/pull/334","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/crestdatasystems%2Fcontent/issues/334","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/334/packages"},{"uuid":"4422972281","node_id":"PR_kwDOSQN2Xc7aW6uw","number":165,"state":"open","title":"deps(deps): bump types-python-dateutil from 2.9.0.20260408 to 2.9.0.20260508","user":"dependabot[bot]","labels":["dependencies","area:tooling","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T17:40:33.000Z","updated_at":"2026-05-12T07:21:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) 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","html_url":"https://github.com/rmwarriner/tulip-accounting/pull/165","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmwarriner%2Ftulip-accounting/issues/165","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/165/packages"},{"uuid":"4416789489","node_id":"PR_kwDORzxjSM7aC88A","number":72,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 47 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-31T20:45:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-10T20:48:23.000Z","updated_at":"2026-05-31T20:45:59.000Z","time_to_close":1814254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":47,"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.11.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.3","new_version":"1.39.3","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.12","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.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260508","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.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260303","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.73","new_version":"1.43.6","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.9","new_version":"6.152.5","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260316","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","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":"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":"2.0.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.57.1","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 47 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.11.0` | `40.15.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.3` | `1.39.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.12` |\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.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260508` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260508` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260508` |\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.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260303` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.73` | `1.43.6` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.9` | `6.152.5` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260316` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260508` |\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` | `2.0.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.57.1` | `0.64.1` |\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.11.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\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.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\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/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.11.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.38.3 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.38.3...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.7 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.15.7...0.15.12\"\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.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.20260317 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.20250801 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.20250822 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.20260130 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.20260322 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-jsonschema` from 4.26.0.20260202 to 4.26.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-cors` from 6.0.0.20250809 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.20250809 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 25.9.0.20260322 to 26.4.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-greenlet` from 3.3.0.20251206 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.20251117 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.20260211 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.20250822 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.20240907 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.20240806 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.20260322 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.20260127 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 6.32.1.20260221 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.20260130 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.20260223 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.19.0.20251121 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.20251220 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.20260323 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.20260323 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.20250915 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.2.28.20260301 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.20250917 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.20250822 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-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.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.20260303 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.73 to 1.43.6\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.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.9 to 6.152.5\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.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\u003ch2\u003eHypothesis for Python - version 6.152.2\u003c/h2\u003e\n\u003cp\u003eThis release further improves printing of generated values, building\non the changes in  version 6.151.11.\u003c/p\u003e\n\u003cp\u003ePrinciple changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn many cases where we would have printed a complex expression\nproducing a value, we now print the repr (or a pretty-printed\nversion of it).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdditionally, in some cases where we would print a complex\nexpression that involved a lambda, we are now able to simplify that\nexpression into a more readable one.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-2\"\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.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\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/5421485439466b4b35c4eb77164fde46f70929f5\"\u003e\u003ccode\u003e5421485\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.5 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/9c503ea918dd3f1c1083c669e0c6b90a2ee4dbd5\"\u003e\u003ccode\u003e9c503ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4718\"\u003e#4718\u003c/a\u003e from Zac-HD/claude/fix-issue-4715-uonex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c2368879a8b50792215d964415129ce3d2891f6b\"\u003e\u003ccode\u003ec236887\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4724\"\u003e#4724\u003c/a\u003e from HypothesisWorks/DRMacIver/fix-pyiodide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0150df4d2f55b8e9df388054af7c79dc83a4e1f8\"\u003e\u003ccode\u003e0150df4\u003c/code\u003e\u003c/a\u003e Bump pyodide-build to 0.34.3 to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c31c869dba2ba7f9becd05ebb54fc99c5482e333\"\u003e\u003ccode\u003ec31c869\u003c/code\u003e\u003c/a\u003e Document the format-before-push requirement for Claude Code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/96e8d0264844e44852cb69654b6e9de7c3742560\"\u003e\u003ccode\u003e96e8d02\u003c/code\u003e\u003c/a\u003e Simplify explain-phase candidate generation to satisfy 100% coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3582e90029bc27575c5f483f4e510214d212e0c3\"\u003e\u003ccode\u003e3582e90\u003c/code\u003e\u003c/a\u003e Apply shed formatting to test_inquisitor.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ab0287389b661cf49a54d0cf6f79e2d32381840a\"\u003e\u003ccode\u003eab02873\u003c/code\u003e\u003c/a\u003e Try targeted candidates in explain phase before random sampling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/84f92dcf29229e37f822ba3ba5eea4212d2abf35\"\u003e\u003ccode\u003e84f92dc\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.4 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c6814df503fd6afe4bf03831020572c6be44976b\"\u003e\u003ccode\u003ec6814df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4717\"\u003e#4717\u003c/a\u003e from HypothesisWorks/DRMacIver/issue4708\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.9...hypothesis-python-6.152.5\"\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.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.20260210 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 `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 2.0.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.0\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.0.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. There are also changes to options and defaults.\nYou 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\u003eEnable \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\u003eEnable \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\u003eNew Behavior for \u003ccode\u003e--allow-redefinition\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003e--allow-redefinition\u003c/code\u003e flag now behaves like \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e in mypy 1.20\nand earlier. The new behavior is generally more flexible. For example, you can have different\ntypes for a variable in different blocks:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# mypy: allow-redefinition\n\u003cp\u003edef foo(cond: bool) -\u0026gt; None:\nif cond:\nfor x in [\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;str\u0026quot; here\n...\nelse:\nfor x in [1, 2]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;int\u0026quot; here\n...\n\u003c/code\u003e\u003c/pre\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/python/mypy/commit/7a765008a138ec46c579bfc6ef608860cab36033\"\u003e\u003ccode\u003e7a76500\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/5a3ab3b29f03d8baafeced3761e1afc8bd58be79\"\u003e\u003ccode\u003e5a3ab3b\u003c/code\u003e\u003c/a\u003e Changelog for mypy 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21422\"\u003e#21422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f9c86e21e88f96806c65790d604bf1264db39434\"\u003e\u003ccode\u003ef9c86e2\u003c/code\u003e\u003c/a\u003e Some changelog updates for 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21413\"\u003e#21413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/519eaf15e0ceafae30337083577a54c7d3f3b4fe\"\u003e\u003ccode\u003e519eaf1\u003c/code\u003e\u003c/a\u003e Bump librt to 0.10.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/158a6207d6e221cc403e1d556097b5abf5157cdd\"\u003e\u003ccode\u003e158a620\u003c/code\u003e\u003c/a\u003e Fix negative narrowing for containers (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21411\"\u003e#21411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e556eb93a3c551a320a536879ce0a1608d14d490\"\u003e\u003ccode\u003ee556eb9\u003c/code\u003e\u003c/a\u003e Try fixing mypy mypyc wheels (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21392\"\u003e#21392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f2c97971f5f4dcd749cf87df1e1308ab5754490a\"\u003e\u003ccode\u003ef2c9797\u003c/code\u003e\u003c/a\u003e Expose --num-workers and --native-parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21387\"\u003e#21387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/db0cb2f7c68b0f9d43d6ee1ab68117c1550dac39\"\u003e\u003ccode\u003edb0cb2f\u003c/code\u003e\u003c/a\u003e Bump ast-serialize cache version (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21388\"\u003e#21388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/1090ca6d476f629c566250a41204450043a47cf5\"\u003e\u003ccode\u003e1090ca6\u003c/code\u003e\u003c/a\u003e Bump ast-serialize version to 0.3.0 only (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21391\"\u003e#21391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/714ca9f2ac76e7c6dd56e26fd555f69313ba47ab\"\u003e\u003ccode\u003e714ca9f\u003c/code\u003e\u003c/a\u003e [mypyc] Add note about librt.strings thread safety (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21383\"\u003e#21383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v2.0.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.57.1 to 0.64.1\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.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 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\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ...\n\n_Description has been truncated_","html_url":"https://github.com/Lraviv/dify-transfer/pull/72","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lraviv%2Fdify-transfer/issues/72","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/72/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":"4309711728","node_id":"PR_kwDOLyJ-3s7UqEw5","number":27,"state":"closed","title":"Update types-python-dateutil requirement from \u003e=2.8.19 to \u003e=2.8.19.14","user":"dependabot[bot]","labels":["bump:patch","dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-28T15:24:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-22T14:29:36.000Z","updated_at":"2026-04-28T15:25:18.000Z","time_to_close":521672,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"types-python-dateutil","old_version":"\u003e=2.8.19","new_version":"\u003e=2.8.19.14","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [types-python-dateutil](https://github.com/python/typeshed) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/zamzar/zamzar-python/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/zamzar%2Fzamzar-python/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/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":"4259049833","node_id":"PR_kwDOPxSISM7SLGGK","number":299,"state":"open","title":"chore(deps): bump the dev-dependencies group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":6,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-14T02:18:59.000Z","updated_at":"2026-05-11T02:06:40.705Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dev-dependencies","update_count":5,"packages":[{"name":"ruff","old_version":"0.15.8","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260305","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.10` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260305` | `2.9.0.20260408` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n\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 `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 `types-requests` from 2.32.4.20260107 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-python-dateutil` from 2.9.0.20260305 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 `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\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/johanna-II/BillingTest/pull/299","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanna-II%2FBillingTest/issues/299","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/299/packages"},{"uuid":"4257964935","node_id":"PR_kwDODTo4k87SHyEp","number":8147,"state":"closed","title":"chore(deps-dev): bump types-python-dateutil from 2.9.0.20260402 to 2.9.0.20260408","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-14T09:08:00.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-13T21:21:47.000Z","updated_at":"2026-04-14T09:08:02.000Z","time_to_close":42373,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) 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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-python-dateutil\u0026package-manager=pip\u0026previous-version=2.9.0.20260402\u0026new-version=2.9.0.20260408)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\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 this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/aws-powertools/powertools-lambda-python/pull/8147","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-powertools%2Fpowertools-lambda-python/issues/8147","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8147/packages"},{"uuid":"4253473942","node_id":"PR_kwDONzxKVM7R8OQz","number":243,"state":"open","title":"chore(deps-dev): Bump types-python-dateutil from 2.9.0.20260402 to 2.9.0.20260408","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-13T10:11:14.000Z","updated_at":"2026-04-14T05:50:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Bump","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) 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","html_url":"https://github.com/brandstaetter/Taskmanagement-App/pull/243","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandstaetter%2FTaskmanagement-App/issues/243","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/243/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":"4245785942","node_id":"PR_kwDOCG8vVc7RtC72","number":3216,"state":"closed","title":"build(deps-dev): bump the dev-dependencies group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-18T21:05:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-11T21:05:52.000Z","updated_at":"2026-04-18T21:05:46.000Z","time_to_close":604792,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): bump","group_name":"dev-dependencies","update_count":6,"packages":[{"name":"diffoscope","old_version":"313","new_version":"316"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"translate-toolkit","old_version":"3.19.1","new_version":"3.19.3","repository_url":"https://github.com/translate/translate"},{"name":"types-python-dateutil","old_version":"2.9.0.20260124","new_version":"2.9.0.20260402","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","new_version":"82.0.0.20260402","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 6 updates in the /client directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [diffoscope](https://diffoscope.org/) | `313` | `316` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [translate-toolkit](https://github.com/translate/translate) | `3.19.1` | `3.19.3` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260124` | `2.9.0.20260402` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260402` |\n\n\nUpdates `diffoscope` from 313 to 316\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 can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\u003c/code\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/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\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.0\"\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 `translate-toolkit` from 3.19.1 to 3.19.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/translate/translate/releases\"\u003etranslate-toolkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.3\u003c/h2\u003e\n\u003cp\u003eThe major changes in this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImprovements in the HTML and Apple strings formats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eRead the full \u003ca href=\"https://docs.translatehouse.org/projects/translate-toolkit/en/latest/releases/3.19.3.html\"\u003eRelease notes\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003e3.19.2\u003c/h2\u003e\n\u003cp\u003eThe major changes in this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImprovements in the HTML format.\u003c/li\u003e\n\u003cli\u003eAdded Apple variant of XLIFF format.\u003c/li\u003e\n\u003cli\u003eAdded WXL format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eRead the full \u003ca href=\"https://docs.translatehouse.org/projects/translate-toolkit/en/latest/releases/3.19.2.html\"\u003eRelease notes\u003c/a\u003e for more details.\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/translate/translate/commit/e60bb5590f108a085d6b7ad102e4d9713f0a1897\"\u003e\u003ccode\u003ee60bb55\u003c/code\u003e\u003c/a\u003e chore: release 3.19.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/c18bb803fe1757c198aa5bbc4331495a996cf4ad\"\u003e\u003ccode\u003ec18bb80\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency ty to v0.0.20 (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6137\"\u003e#6137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/27277f4b221610ccd4c0ef7c2aa2d4819c712fc6\"\u003e\u003ccode\u003e27277f4\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency prek to v0.3.4 (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6136\"\u003e#6136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/63eebc60daf378b0a29357bd2307e278414dd563\"\u003e\u003ccode\u003e63eebc6\u003c/code\u003e\u003c/a\u003e feat(markdown): Extract code blocks from Markdown for translation (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6132\"\u003e#6132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/7b0bcf2c65ff74e8799604a8719286b01c5ad957\"\u003e\u003ccode\u003e7b0bcf2\u003c/code\u003e\u003c/a\u003e feat(ci): switch to prek over pre-commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/6840e3a883a7d89c420bfbb10ad23847c6e5e899\"\u003e\u003ccode\u003e6840e3a\u003c/code\u003e\u003c/a\u003e fix: bring back mistakenly removed line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/7de7bb12fa29201fbf58dcaad68c1bdbc3e9818b\"\u003e\u003ccode\u003e7de7bb1\u003c/code\u003e\u003c/a\u003e fix(ci): check-manifest updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/df920ee0819141d742c2c55032e70d455ff16a8a\"\u003e\u003ccode\u003edf920ee\u003c/code\u003e\u003c/a\u003e feat: Improve Apple strings round trip: preserve comments and blank lines (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6\"\u003e#6\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/e2466be09c87c9bf38ee10603ef075575c994fe1\"\u003e\u003ccode\u003ee2466be\u003c/code\u003e\u003c/a\u003e chore: drop duplicate file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/fe89c56e2d9749dab90de9922030867a8b240702\"\u003e\u003ccode\u003efe89c56\u003c/code\u003e\u003c/a\u003e chore: add minimal agents config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/translate/translate/compare/3.19.1...3.19.3\"\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.20260124 to 2.9.0.20260402\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/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.20260402\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.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/freedomofpress/securedrop-client/pull/3216","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop-client/issues/3216","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3216/packages"},{"uuid":"4228490739","node_id":"PR_kwDOIQ0O_s7Q-YW2","number":1467,"state":"closed","title":"Bump types-python-dateutil from 2.8.19.2 to 2.9.0.20260408 in /tools","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T00:07:12.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-09T00:06:03.000Z","updated_at":"2026-05-11T00:07:14.000Z","time_to_close":2764869,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"types-python-dateutil","old_version":"2.8.19.2","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":"/tools","ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.2 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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-python-dateutil\u0026package-manager=pip\u0026previous-version=2.8.19.2\u0026new-version=2.9.0.20260408)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\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 this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/William3Johnson/wpt/pull/1467","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/William3Johnson%2Fwpt/issues/1467","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1467/packages"},{"uuid":"4217522803","node_id":"PR_kwDOPUpNZM7QeuIC","number":289,"state":"closed","title":"deps(deps-dev): bump the python-development group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-13T08:24:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-07T12:05:12.000Z","updated_at":"2026-04-13T08:24:25.000Z","time_to_close":505151,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev): bump","group_name":"python-development","update_count":4,"packages":[{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pytest-reportportal","old_version":"5.6.1","new_version":"5.6.4","repository_url":"https://github.com/reportportal/agent-python-pytest"},{"name":"ruff","old_version":"0.15.8","new_version":"0.15.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260402","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-development group with 4 updates in the / directory: [mypy](https://github.com/python/mypy), [pytest-reportportal](https://github.com/reportportal/agent-python-pytest), [ruff](https://github.com/astral-sh/ruff) and [types-python-dateutil](https://github.com/python/typeshed).\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 can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\u003c/code\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/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\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.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-reportportal` from 5.6.1 to 5.6.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/reportportal/agent-python-pytest/releases\"\u003epytest-reportportal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.6.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAgent crash in certain \u003ccode\u003epytest-bdd\u003c/code\u003e cases, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 5.6.3\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated to \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.2\"\u003e5.7.2\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eaenum\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edill\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 5.6.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_uuid\u003c/code\u003e configuration parameter, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_attributes\u003c/code\u003e cmd argument, by \u003ca href=\"https://github.com/fahadnaeemkhan\"\u003e\u003ccode\u003e@​fahadnaeemkhan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated on \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.1\"\u003e5.7.1\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/reportportal/agent-python-pytest/blob/develop/CHANGELOG.md\"\u003epytest-reportportal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.6.4]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAgent crash in certain \u003ccode\u003epytest-bdd\u003c/code\u003e cases, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.6.3]\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated to \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.2\"\u003e5.7.2\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eaenum\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edill\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.6.2]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_uuid\u003c/code\u003e configuration parameter, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_attributes\u003c/code\u003e cmd argument, by \u003ca href=\"https://github.com/fahadnaeemkhan\"\u003e\u003ccode\u003e@​fahadnaeemkhan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated on \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.1\"\u003e5.7.1\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\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/reportportal/agent-python-pytest/commit/ee8592c7219f1c5e00cb9323b28588c0caa47525\"\u003e\u003ccode\u003eee8592c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/reportportal/agent-python-pytest/issues/417\"\u003e#417\u003c/a\u003e from reportportal/develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/d226a593b7f34cf04f70b401170051cf12652233\"\u003e\u003ccode\u003ed226a59\u003c/code\u003e\u003c/a\u003e Fix import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/82cf62a96e6a89e152fbf00ed41ecf71ec0ce083\"\u003e\u003ccode\u003e82cf62a\u003c/code\u003e\u003c/a\u003e Remove redundant test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/581f1cfcae4b49332901ad137af793aa46e1f452\"\u003e\u003ccode\u003e581f1cf\u003c/code\u003e\u003c/a\u003e Fixed Agent crash in certain \u003ccode\u003epytest-bdd\u003c/code\u003e cases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/b56870b5449391580c68a0be81cc91d8b5e1ffba\"\u003e\u003ccode\u003eb56870b\u003c/code\u003e\u003c/a\u003e Remove parameter escape, as now it's handled by client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/7d2fdfa54b948e93022185cb9fae9514174b3783\"\u003e\u003ccode\u003e7d2fdfa\u003c/code\u003e\u003c/a\u003e Version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/a0e5078d5228b8638abc0345f6077d2c594bd0ab\"\u003e\u003ccode\u003ea0e5078\u003c/code\u003e\u003c/a\u003e Changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/763cd078dcea8d8086cc7f1c2e9fe56aa6dbb81d\"\u003e\u003ccode\u003e763cd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/reportportal/agent-python-pytest/issues/416\"\u003e#416\u003c/a\u003e from reportportal/develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/62e4d0d8ea4781d5c74af35414f3c619165b4201\"\u003e\u003ccode\u003e62e4d0d\u003c/code\u003e\u003c/a\u003e Client version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/d3d2e2b113078856a6dd17d7e2d9cd8c52551739\"\u003e\u003ccode\u003ed3d2e2b\u003c/code\u003e\u003c/a\u003e Fix tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/reportportal/agent-python-pytest/compare/5.6.1...5.6.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.8 to 0.15.9\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.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\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\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\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/zsol\"\u003e\u003ccode\u003e@​zsol\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\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.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\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\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/zsol\"\u003e\u003ccode\u003e@​zsol\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\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/724ccc1ae8a61e872cf58435f2c073189dc248f2\"\u003e\u003ccode\u003e724ccc1\u003c/code\u003e\u003c/a\u003e Bump 0.15.9 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24369\"\u003e#24369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/96d9e0964cb87498ef15510ea7f896ba336659f9\"\u003e\u003ccode\u003e96d9e09\u003c/code\u003e\u003c/a\u003e [ty] Move the \u003ccode\u003edeferred\u003c/code\u003e submodule inside \u003ccode\u003einfer/builder\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24368\"\u003e#24368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/130da28d610a466721bb942e8a5e0ec47bbe3469\"\u003e\u003ccode\u003e130da28\u003c/code\u003e\u003c/a\u003e [ty] Infer the \u003ccode\u003eextra_items\u003c/code\u003e keyword argument to class-based TypedDicts as an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a617c54b0708a8c1eb850cc3b2a5caee21137a28\"\u003e\u003ccode\u003ea617c54\u003c/code\u003e\u003c/a\u003e [ty] Validate type qualifiers in functional TypedDict fields and the `extra_i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8517087c6cd0aa4f33dcede605ff642941dd74b\"\u003e\u003ccode\u003ed851708\u003c/code\u003e\u003c/a\u003e [ty] Improve robustness of various type-qualifier-related checks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24251\"\u003e#24251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aecb5877c6d6fe035c03aba994ec3a7b935b8f02\"\u003e\u003ccode\u003eaecb587\u003c/code\u003e\u003c/a\u003e Only run the release-gate on workflow dispatch (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24366\"\u003e#24366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b88957174311030927bf564da32d05dee0eb89d9\"\u003e\u003ccode\u003eb889571\u003c/code\u003e\u003c/a\u003e [ty] Use \u003ccode\u003einfer_type_expression\u003c/code\u003e for parsing parameter annotations and return...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3286a62be986a8d6d04d95b3bc619f06e012fa2f\"\u003e\u003ccode\u003e3286a62\u003c/code\u003e\u003c/a\u003e Add a \u0026quot;release-gate\u0026quot; step to the release workflow (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24365\"\u003e#24365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5f88756ee10e3faf0e96c883c34c95fc78200536\"\u003e\u003ccode\u003e5f88756\u003c/code\u003e\u003c/a\u003e Disallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5c59f8a46965cac3470f09972196c8620faa4626\"\u003e\u003ccode\u003e5c59f8a\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/16058\"\u003e#16058\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.9\"\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.20260402\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.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/softwareone-platform/mpt-api-python-client/pull/289","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-api-python-client/issues/289","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/289/packages"}],"issue_packages":[{"old_version":"2.9.0.20260408","new_version":"2.9.0.20260518","update_type":null,"path":null,"pr_created_at":"2026-07-01T00:19:00.000Z","version_change":"2.9.0.20260408 → 2.9.0.20260518","issue":{"uuid":"4781310444","node_id":"PR_kwDOC1dAhs7sdJbv","number":4318,"state":"open","title":"Bump the python-deps group across 3 directories with 12 updates","user":"dependabot[bot]","labels":["deployment","python","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T00:19:00.000Z","updated_at":"2026-07-01T00:21:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-deps","update_count":12,"packages":[{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"kubernetes","old_version":"35.0.0","new_version":"36.0.2","repository_url":"https://github.com/kubernetes-client/python"},{"name":"mypy","old_version":"1.20.0","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pymongo","old_version":"4.16.0","new_version":"4.17.0","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.3.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"regex","old_version":"2026.4.4","new_version":"2026.6.28","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"tox","old_version":"4.52.1","new_version":"4.56.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.33.0.20260408","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"ansible","old_version":"13.5.0","new_version":"14.1.0","repository_url":"https://github.com/ansible-community/ansible-build-data"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `35.0.0` | `36.0.2` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `2.1.0` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.16.0` | `4.17.0` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.3.0` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.4.4` | `2026.6.28` |\n| [tox](https://github.com/tox-dev/tox) | `4.52.1` | `4.56.1` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260518` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260408` | `2.33.0.20260518` |\n| [ansible](https://github.com/ansible-community/ansible-build-data) | `13.5.0` | `14.1.0` |\n\nBumps the python-deps group with 3 updates in the /deploy directory: [kubernetes](https://github.com/kubernetes-client/python), [pyopenssl](https://github.com/pyca/pyopenssl) and [ansible](https://github.com/ansible-community/ansible-build-data).\nBumps the python-deps group with 3 updates in the /maintenance directory: [kubernetes](https://github.com/kubernetes-client/python), [pymongo](https://github.com/mongodb/mongo-python-driver) and [pyopenssl](https://github.com/pyca/pyopenssl).\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\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/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kubernetes` from 35.0.0 to 36.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kubernetes-client/python/releases\"\u003ekubernetes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKubernetes Python Client v36.0.2 Stable Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v36.0.2.zip\r\ncd client-python-v36.0.2\r\npython setup-release.py install\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-36.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-36.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v36.0.1 Stable Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v36.0.1.zip\r\ncd client-python-v36.0.1\r\npython setup-release.py install\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-36.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-36.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-36.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v36.0.0 Beta 1 Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v36.0.0b1.zip\r\ncd client-python-v36.0.0b1\r\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/kubernetes-client/python/blob/v36.0.2/CHANGELOG.md\"\u003ekubernetes's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev36.0.2\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch3\u003eUncategorized\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestored backward compatibility for \u003ccode\u003eConfiguration.auth_settings()\u003c/code\u003e:\nthe legacy \u003ccode\u003eapi_key['authorization']\u003c/code\u003e lookup is honored as a fallback\nwhen \u003ccode\u003eapi_key['BearerToken']\u003c/code\u003e is not set, fixing 401 Unauthorized\nregressions seen after upgrading to v36.0.0 (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2595\"\u003e#2595\u003c/a\u003e). (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2604\"\u003e#2604\u003c/a\u003e, \u003ca href=\"https://github.com/GK-07\"\u003e\u003ccode\u003e@​GK-07\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev36.0.1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch3\u003eBug or Regression\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eload_incluster_config()\u003c/code\u003e and \u003ccode\u003eload_kube_config()\u003c/code\u003e (sync and async, with a static token) so requests carry an \u003ccode\u003eAuthorization\u003c/code\u003e header on \u003ccode\u003ekubernetes-client/python\u003c/code\u003e v36+. Without this fix, in-cluster pods upgrading to v36 silently send unauthenticated requests and the apiserver rejects them as \u003ccode\u003esystem:anonymous\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2585\"\u003e#2585\u003c/a\u003e, \u003ca href=\"https://github.com/Jmacek\"\u003e\u003ccode\u003e@​Jmacek\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport new exec v5 websocket subprotocol (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2486\"\u003e#2486\u003c/a\u003e, \u003ca href=\"https://github.com/aojea\"\u003e\u003ccode\u003e@​aojea\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev36.0.0\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch1\u003ev36.0.0b1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.1\u003c/p\u003e\n\u003ch3\u003eDeprecation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport new exec v5 websocket subprotocol (\u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2486\"\u003e#2486\u003c/a\u003e, \u003ca href=\"https://github.com/aojea\"\u003e\u003ccode\u003e@​aojea\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev36.0.0a3\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.0\u003c/p\u003e\n\u003ch1\u003ev36.0.0a2\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.0\u003c/p\u003e\n\u003ch1\u003ev36.0.0a1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.36.0\u003c/p\u003e\n\u003ch3\u003eAPI Change\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eACTION REQUIRED: DRA (Dynamic Resource Allocation) drivers and controllers now require granular RBAC permissions to update ResourceClaim statuses when the \u003ccode\u003eDRAResourceClaimGranularStatusAuthorization\u003c/code\u003e feature gate is enabled (beta in \u003ccode\u003ev1.36\u003c/code\u003e). Schedulers and controllers must be granted \u003ccode\u003eupdate\u003c/code\u003e/\u003ccode\u003epatch\u003c/code\u003e on \u003ccode\u003eresourceclaims/binding\u003c/code\u003e. DRA drivers must be granted \u003ccode\u003eassociated-node:update\u003c/code\u003e or \u003ccode\u003earbitrary-node:update\u003c/code\u003e (or patch equivalents) on \u003ccode\u003eresourceclaims/driver\u003c/code\u003e, restricted by their specific \u003ccode\u003eresourceNames\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/134947\"\u003ekubernetes/kubernetes#134947\u003c/a\u003e, \u003ca href=\"https://github.com/aojea\"\u003e\u003ccode\u003e@​aojea\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Instrumentation, Node, Scheduling and Testing]\u003c/li\u003e\n\u003cli\u003eACTION REQUIRED: Removed the integrated support for flex-volumes in kubeadm. Users were advised to migrate away from flex-volumes as recommended by SIG Storage since \u003ccode\u003ev1.22\u003c/code\u003e. If \u003ccode\u003ekubeadm\u003c/code\u003e users wish to continue using the feature, they need a custom image for the KCM that is not based on distroless, pass the KCM flag \u003ccode\u003e--flex-volume-plugin-dir\u003c/code\u003e, and mount the directory \u003ccode\u003e/usr/libexec/kubernetes/kubelet-plugins/volume/exec\u003c/code\u003e in the KCM static pod using \u003ccode\u003ekubeadm\u003c/code\u003e's \u003ccode\u003eextraVolumes\u003c/code\u003e mechanism before upgrading to \u003ccode\u003ev1.36\u003c/code\u003e. Previously, \u003ccode\u003ekubeadm\u003c/code\u003e automatically did the mounting if the user passed the flag. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/136423\"\u003ekubernetes/kubernetes#136423\u003c/a\u003e, \u003ca href=\"https://github.com/neolit123\"\u003e\u003ccode\u003e@​neolit123\u003c/code\u003e\u003c/a\u003e) [SIG Cluster Lifecycle]\u003c/li\u003e\n\u003cli\u003eACTION REQUIRED: Renamed metric \u003ccode\u003eetcd_bookmark_counts\u003c/code\u003e to \u003ccode\u003eetcd_bookmark_total\u003c/code\u003e. If you are using custom monitoring dashboards or alerting rules based on the \u003ccode\u003eetcd_bookmark_counts\u003c/code\u003e metric, update them to use the new \u003ccode\u003eetcd_bookmark_total\u003c/code\u003e metric. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/136483\"\u003ekubernetes/kubernetes#136483\u003c/a\u003e, \u003ca href=\"https://github.com/petern48\"\u003e\u003ccode\u003e@​petern48\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Etcd, Instrumentation and Testing]\u003c/li\u003e\n\u003cli\u003eAdded SchedulingConstraints to express topology-aware scheduling (TAS) constraints for PodGroup scheduling behind the \u003ccode\u003eTopologyAwareWorkloadScheduling\u003c/code\u003e feature gate. Added the TopologyPlacement plugin implementing the PlacementGenerate extension point to take constraints into consideration during PodGroup scheduling. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/137271\"\u003ekubernetes/kubernetes#137271\u003c/a\u003e, \u003ca href=\"https://github.com/brejman\"\u003e\u003ccode\u003e@​brejman\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling and Testing]\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/kubernetes-client/python/commit/1f2df0359a6f48c20581ccc5f120105b3e99f07f\"\u003e\u003ccode\u003e1f2df03\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2607\"\u003e#2607\u003c/a\u003e from yliaog/automated-release-of-36.0.2-upstream-rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/348f67384d7fba0eb57522cf57b67d7f6e9f9e31\"\u003e\u003ccode\u003e348f673\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2605\"\u003e#2605\u003c/a\u003e from yliaog/release-36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/70e680e93bb72bf2b67a42033af9b2180b56c4fd\"\u003e\u003ccode\u003e70e680e\u003c/code\u003e\u003c/a\u003e Apply hotfix for commit: 5621a4c2cf5cc278e8f45ce759ce44c057f1dbe2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/9683d0601ac2f0b43c9ad6c105d3389397cc9bb8\"\u003e\u003ccode\u003e9683d06\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/d2cb00054278fdaf6f74889f915ac9f58838d1b0\"\u003e\u003ccode\u003ed2cb000\u003c/code\u003e\u003c/a\u003e update version constants for 36.0.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/17cf4e16ce73a6b03cfcb0ab9aad07feaecaabc0\"\u003e\u003ccode\u003e17cf4e1\u003c/code\u003e\u003c/a\u003e update changelog with release notes from master branch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/8be4ce3e1becc0691cd9ac9bbb3ebf89a7d1d955\"\u003e\u003ccode\u003e8be4ce3\u003c/code\u003e\u003c/a\u003e added breaking change on V1ServiceSpec fields cluster_i_ps and external_i_ps ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/a05fe9e81363ca5ecea656eb6898f059f7a9a60a\"\u003e\u003ccode\u003ea05fe9e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2599\"\u003e#2599\u003c/a\u003e from yliaog/automated-release-of-36.0.1-upstream-rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/33827fa403726b8a7311a149978d00ebddcac813\"\u003e\u003ccode\u003e33827fa\u003c/code\u003e\u003c/a\u003e updated compatibility matrix and maintenance status\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/8836c4c3bf358c7fb6ed9cc6709b5baf8bb7aedc\"\u003e\u003ccode\u003e8836c4c\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kubernetes-client/python/compare/v35.0.0...v36.0.2\"\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 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\u003eEnable incremental self-compilation (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21369\"\u003e21369\u003c/a\u003e)\u003c/li\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\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.0...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymongo` from 4.16.0 to 4.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mongodb/mongo-python-driver/releases\"\u003epymongo's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMongo 4.17.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://www.mongodb.com/community/forums/t/pymongo-4-17-released/338426\"\u003eCommunity notes\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(ci): replace shell=True and awk pipes with native Python by \u003ca href=\"https://github.com/RinZ27\"\u003e\u003ccode\u003e@​RinZ27\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2671\"\u003emongodb/mongo-python-driver#2671\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5697 - Migrate 8.0+ tests to Windows 2022 by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2681\"\u003emongodb/mongo-python-driver#2681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 01-19-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2680\"\u003emongodb/mongo-python-driver#2680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pyright from 1.1.407 to 1.1.408 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/mongodb/mongo-python-driver/pull/2675\"\u003emongodb/mongo-python-driver#2675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5692 - [Infrastructure] Improve dependabot version updates by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2682\"\u003emongodb/mongo-python-driver#2682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5605 - Drop usage of Ubuntu 20 by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2683\"\u003emongodb/mongo-python-driver#2683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5699 \u0026amp; PYTHON-5698 [Spec Resync] 01-26-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2685\"\u003emongodb/mongo-python-driver#2685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5703 Use Ubuntu24 for AWS Auth tests by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2686\"\u003emongodb/mongo-python-driver#2686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5704 Skip free-threading for enterprise auth builds by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2687\"\u003emongodb/mongo-python-driver#2687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.1.6 to 7.2.0 in the actions group across 1 directory 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/mongodb/mongo-python-driver/pull/2684\"\u003emongodb/mongo-python-driver#2684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 8.0.0 to 8.1.0 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/mongodb/mongo-python-driver/pull/2692\"\u003emongodb/mongo-python-driver#2692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-1357 - Refactor Cursor and CommandCursor by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2691\"\u003emongodb/mongo-python-driver#2691\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 02-02-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2694\"\u003emongodb/mongo-python-driver#2694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5467 Add codecov integration by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2690\"\u003emongodb/mongo-python-driver#2690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.2.0 to 7.2.1 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/mongodb/mongo-python-driver/pull/2700\"\u003emongodb/mongo-python-driver#2700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-XXXX Fixed typo in Running Tests Locally section. by \u003ca href=\"https://github.com/caseyclements\"\u003e\u003ccode\u003e@​caseyclements\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2698\"\u003emongodb/mongo-python-driver#2698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5467 Fix codecov upload by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2701\"\u003emongodb/mongo-python-driver#2701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5467 Fix codecov upload on Evergreen by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2702\"\u003emongodb/mongo-python-driver#2702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5715 Add appName to OIDC test failpoints by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2697\"\u003emongodb/mongo-python-driver#2697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5705 Improve fallback for PyOpenSSL windows system certs loading by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2688\"\u003emongodb/mongo-python-driver#2688\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-3898 Add coverage to all variants by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2705\"\u003emongodb/mongo-python-driver#2705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5729 Pin setuptools when using older gevent by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2708\"\u003emongodb/mongo-python-driver#2708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the actions 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/mongodb/mongo-python-driver/pull/2711\"\u003emongodb/mongo-python-driver#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5708 Temporarily skip some BSON encryption tests by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2709\"\u003emongodb/mongo-python-driver#2709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5732 Use mongodb-runner in Evergreen Tests by \u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2703\"\u003emongodb/mongo-python-driver#2703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5731 - Server selection deprioritization only for overload errors on replica sets by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2710\"\u003emongodb/mongo-python-driver#2710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5737 - BSON encoding/decoding performance improvements by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2715\"\u003emongodb/mongo-python-driver#2715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 03-02-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2716\"\u003emongodb/mongo-python-driver#2716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePython 4542 - Improved sessions API by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2712\"\u003emongodb/mongo-python-driver#2712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5742 - Add Copilot instructions by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2717\"\u003emongodb/mongo-python-driver#2717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5747 Add jira link to spec resync PR by \u003ca href=\"https://github.com/sleepyStick\"\u003e\u003ccode\u003e@​sleepyStick\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2723\"\u003emongodb/mongo-python-driver#2723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5114 Test suite reduce killAllSessions calls by \u003ca href=\"https://github.com/ShaneHarvey\"\u003e\u003ccode\u003e@​ShaneHarvey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2721\"\u003emongodb/mongo-python-driver#2721\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5748 Remove unused SpecRunner class by \u003ca href=\"https://github.com/ShaneHarvey\"\u003e\u003ccode\u003e@​ShaneHarvey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2725\"\u003emongodb/mongo-python-driver#2725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5754 Fix USE_ACTIVE_VENV support by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2728\"\u003emongodb/mongo-python-driver#2728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5753 Add just recipes for running coverage tests locally by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2727\"\u003emongodb/mongo-python-driver#2727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5758 Remove unused validation functions by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2733\"\u003emongodb/mongo-python-driver#2733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5757 Deprecate Python 2 methods in SON by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2732\"\u003emongodb/mongo-python-driver#2732\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5766 Add codecov badge to readme by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2737\"\u003emongodb/mongo-python-driver#2737\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the actions group across 1 directory with 4 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/mongodb/mongo-python-driver/pull/2736\"\u003emongodb/mongo-python-driver#2736\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Spec Resync] 03-30-2026 by \u003ca href=\"https://github.com/mongodb-drivers-pr-bot\"\u003e\u003ccode\u003e@​mongodb-drivers-pr-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2741\"\u003emongodb/mongo-python-driver#2741\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 7.3.0 to 7.6.0 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/mongodb/mongo-python-driver/pull/2740\"\u003emongodb/mongo-python-driver#2740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5401: Add AI Generated Contributions Policy by \u003ca href=\"https://github.com/Jibola\"\u003e\u003ccode\u003e@​Jibola\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2696\"\u003emongodb/mongo-python-driver#2696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5768 Add AGENTS.md w/copilot instructions by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2744\"\u003emongodb/mongo-python-driver#2744\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5791 - test_list_database_names should not check ordering by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2751\"\u003emongodb/mongo-python-driver#2751\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5668 - Merge backpressure branch into mainline by \u003ca href=\"https://github.com/NoahStapp\"\u003e\u003ccode\u003e@​NoahStapp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2729\"\u003emongodb/mongo-python-driver#2729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePYTHON-5795 Fix absolute link to CONTRIBUTING.md in README.md by \u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/pull/2756\"\u003emongodb/mongo-python-driver#2756\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/mongodb/mongo-python-driver/blob/master/doc/changelog.rst\"\u003epymongo's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChanges in Version 4.17.0 (2026/04/20)\u003c/h2\u003e\n\u003cp\u003ePyMongo 4.17 brings a number of changes including:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ehas_key\u003c/code\u003e, \u003ccode\u003eiterkeys\u003c/code\u003e and \u003ccode\u003eitervalues\u003c/code\u003e in :class:\u003ccode\u003ebson.son.SON\u003c/code\u003e have\nbeen deprecated and will be removed in PyMongo 5.0. These methods were\ndeprecated in favor of the standard dictionary containment operator \u003ccode\u003ein\u003c/code\u003e\nand the \u003ccode\u003ekeys()\u003c/code\u003e and \u003ccode\u003evalues()\u003c/code\u003e methods, respectively.\u003c/li\u003e\n\u003cli\u003eAdded the :meth:\u003ccode\u003e~pymongo.asynchronous.client_session.AsyncClientSession.bind\u003c/code\u003e and :meth:\u003ccode\u003e~pymongo.client_session.ClientSession.bind\u003c/code\u003e methods\nthat allow users to bind a session to all database operations within the scope of a context manager instead of having to explicitly pass the session to each individual operation.\nSee the \u003ccode\u003eTransactions docs \u0026lt;https://www.mongodb.com/docs/languages/python/pymongo-driver/current/crud/transactions/#methods\u0026gt;\u003c/code\u003e_ for examples and more information.\u003c/li\u003e\n\u003cli\u003eAdded support for MongoDB's Intelligent Workload Management (IWM) and ingress connection rate limiting features in MongoDB server version 9.0.\nThe driver will gracefully handle write-blocking scenarios and optimizes connection establishment during high-load conditions to maintain application availability.\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/mongodb/mongo-python-driver/commit/f2103a95870ab5c00b436f757cbaeb86a1047679\"\u003e\u003ccode\u003ef2103a9\u003c/code\u003e\u003c/a\u003e Prep branch v4.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/3491c08ef6505d42d07b9a17100b5190ed1294fc\"\u003e\u003ccode\u003e3491c08\u003c/code\u003e\u003c/a\u003e PYTHON-5801 - Update changelog for 4.17 release (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2762\"\u003e#2762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/912ef337f90852b58eaf6318e59f97206b281980\"\u003e\u003ccode\u003e912ef33\u003c/code\u003e\u003c/a\u003e PYTHON-5798 - Overload retargeting prose tests do not ensure that sec… (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2760\"\u003e#2760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/b4e2c03a927ca275e097342f847eb9705465e975\"\u003e\u003ccode\u003eb4e2c03\u003c/code\u003e\u003c/a\u003e PYTHON-5800 - Simple collation is included in index information (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2761\"\u003e#2761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/f31ba09713ff61086f5ebddb43a1e79b419b9802\"\u003e\u003ccode\u003ef31ba09\u003c/code\u003e\u003c/a\u003e PYTHON-5797 - Add IWM and Overload Error links to changelog (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2757\"\u003e#2757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/5da91837d4db9b2f1d3521f2e39cff9e0ff94334\"\u003e\u003ccode\u003e5da9183\u003c/code\u003e\u003c/a\u003e PYTHON-5794 - Add prose tests to verify correct retry behavior when a… (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2755\"\u003e#2755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/35e51a50f3ecf2020be10b6eae96e3ad0038174a\"\u003e\u003ccode\u003e35e51a5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;PYTHON-5768 Add AGENTS.md w/copilot instructions\u0026quot; (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2744\"\u003e#2744\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2754\"\u003e#2754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/f41dd5c08b352f2ca885e19e475e366383dd3ec8\"\u003e\u003ccode\u003ef41dd5c\u003c/code\u003e\u003c/a\u003e PYTHON-5772 Increase _gcp_helpers.py coverage (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2749\"\u003e#2749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/49e7a052e2fdf864ec3eb73e308d6cfd11b5f31d\"\u003e\u003ccode\u003e49e7a05\u003c/code\u003e\u003c/a\u003e PYTHON-5760 Increase _azure_helpers.py coverage (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/a2b0cd85e3a57cd63cbce9bc24500afb0fa062c6\"\u003e\u003ccode\u003ea2b0cd8\u003c/code\u003e\u003c/a\u003e PYTHON-5795 Fix absolute link to CONTRIBUTING.md in README.md (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/2756\"\u003e#2756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mongodb/mongo-python-driver/compare/4.16.0...4.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyopenssl` from 26.0.0 to 26.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/pyopenssl/blob/main/CHANGELOG.rst\"\u003epyopenssl's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.0 (2026-06-12)\u003c/h2\u003e\n\u003cp\u003eBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8.\u003c/li\u003e\n\u003cli\u003eThe minimum \u003ccode\u003ecryptography\u003c/code\u003e version is now 49.0.0.\u003c/li\u003e\n\u003cli\u003eRemoved deprecated \u003ccode\u003eOpenSSL.crypto.X509Req\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.dump_certificate_request\u003c/code\u003e, and \u003ccode\u003eOpenSSL.crypto.load_certificate_request\u003c/code\u003e. \u003ccode\u003ecryptography.x509\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eOpenSSL.SSL.Connection.set_session\u003c/code\u003e now raises \u003ccode\u003eValueError\u003c/code\u003e if the \u003ccode\u003eSession\u003c/code\u003e was obtained from a \u003ccode\u003eConnection\u003c/code\u003e that was using a different \u003ccode\u003eContext\u003c/code\u003e than this one. OpenSSL requires (but does not verify) that sessions only be re-used with a compatible \u003ccode\u003eSSL_CTX\u003c/code\u003e, so this contract is now enforced.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations:\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.crypto.PKey.generate_key\u003c/code\u003e and \u003ccode\u003eOpenSSL.crypto.PKey.check\u003c/code\u003e. The key generation and loading APIs in \u003ccode\u003ecryptography\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.crypto.dump_privatekey\u003c/code\u003e. The serialization APIs on \u003ccode\u003ecryptography\u003c/code\u003e private key types should be used instead.\u003c/li\u003e\n\u003cli\u003eDeprecated all the mutable APIs on \u003ccode\u003eOpenSSL.crypto.X509\u003c/code\u003e: \u003ccode\u003eset_version\u003c/code\u003e, \u003ccode\u003eset_pubkey\u003c/code\u003e, \u003ccode\u003esign\u003c/code\u003e, \u003ccode\u003eset_serial_number\u003c/code\u003e, \u003ccode\u003egmtime_adj_notAfter\u003c/code\u003e, \u003ccode\u003egmtime_adj_notBefore\u003c/code\u003e, \u003ccode\u003eset_notBefore\u003c/code\u003e, \u003ccode\u003eset_notAfter\u003c/code\u003e, \u003ccode\u003eset_issuer\u003c/code\u003e, and \u003ccode\u003eset_subject\u003c/code\u003e. \u003ccode\u003ecryptography.x509.CertificateBuilder\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.SSL.Context.set_passwd_cb\u003c/code\u003e. Users should decrypt and load their private keys themselves, with \u003ccode\u003ecryptography\u003c/code\u003e's key loading APIs, and then call \u003ccode\u003eOpenSSL.SSL.Context.use_privatekey\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eOpenSSL.crypto.X509Name\u003c/code\u003e, as well as the remaining APIs that consume or return it: \u003ccode\u003eOpenSSL.crypto.X509.get_issuer\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509.get_subject\u003c/code\u003e, and \u003ccode\u003eOpenSSL.SSL.Context.set_client_ca_list\u003c/code\u003e. The APIs in \u003ccode\u003ecryptography.x509\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges:\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eOpenSSL.SSL.Connection.get_client_ca_list\u003c/code\u003e now takes an \u003ccode\u003eas_cryptography\u003c/code\u003e keyword-argument. When \u003ccode\u003eTrue\u003c/code\u003e is passed then \u003ccode\u003ecryptography.x509.Name\u003c/code\u003e are returned, instead of \u003ccode\u003eOpenSSL.crypto.X509Name\u003c/code\u003e. In the future, passing \u003ccode\u003eFalse\u003c/code\u003e (the default) will be deprecated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.2.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved deprecated \u003ccode\u003eOpenSSL.crypto.X509Extension\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509Req.add_extension\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509Req.get_extensions\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509.add_extension\u003c/code\u003e, \u003ccode\u003eOpenSSL.crypto.X509.get_extensions\u003c/code\u003e. \u003ccode\u003ecryptography.x509\u003c/code\u003e should be used instead.\u003c/li\u003e\n\u003cli\u003eIt is now an error to calling any mutating method on \u003ccode\u003eOpenSSL.SSL.Context\u003c/code\u003e after it has been used to create a \u003ccode\u003eConnection\u003c/code\u003e. This was previously deprecated and has always been unsafe.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations:\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eChanges:\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMaximum supported \u003ccode\u003ecryptography\u003c/code\u003e version is now 48.x.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eOpenSSL.SSL.Connection.set_options\u003c/code\u003e to set options on a per-connection basis.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.1.0 (2026-04-24)\u003c/h2\u003e\n\u003cp\u003eBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\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/pyca/pyopenssl/commit/a34aa1de7e2050d3a83cef74d8265662237f8ba1\"\u003e\u003ccode\u003ea34aa1d\u003c/code\u003e\u003c/a\u003e Prepare 26.3.0 release (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1515\"\u003e#1515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/24db8805e2e1e283549a88408d2cd856127242c3\"\u003e\u003ccode\u003e24db880\u003c/code\u003e\u003c/a\u003e Deprecate X509Name and the remaining APIs that consume or return it (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1514\"\u003e#1514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/1dc08befb2749ded30a8d172d1c5913dfd9484e9\"\u003e\u003ccode\u003e1dc08be\u003c/code\u003e\u003c/a\u003e Add as_cryptography parameter to Connection.get_client_ca_list (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1508\"\u003e#1508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/55653a56f7b2a3c62b5ad74f97bcc4a61c242cbd\"\u003e\u003ccode\u003e55653a5\u003c/code\u003e\u003c/a\u003e Require cryptography 49, drop Python 3.8 (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/9bad760cc38cb4b39e8cf00461aeacd445657ec9\"\u003e\u003ccode\u003e9bad760\u003c/code\u003e\u003c/a\u003e Remove deprecated CSR functionality (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1507\"\u003e#1507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/98ca874e7ebce041fd7b7543fc1f924e0a3496ea\"\u003e\u003ccode\u003e98ca874\u003c/code\u003e\u003c/a\u003e Enforce that Session is only re-used with the Context it came from (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1512\"\u003e#1512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/cbcb1da35c6f4ebaef4060d473004b96b23c4d79\"\u003e\u003ccode\u003ecbcb1da\u003c/code\u003e\u003c/a\u003e Deprecate Context.set_passwd_cb (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/3b9d07db1b40159298dc51c04b65771cf7adb23c\"\u003e\u003ccode\u003e3b9d07d\u003c/code\u003e\u003c/a\u003e Deprecate all the mutable APIs on X509 (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1510\"\u003e#1510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/e096920d4526eddcc873b74fc459881e894b2de3\"\u003e\u003ccode\u003ee096920\u003c/code\u003e\u003c/a\u003e Deprecate PKey.generate_key, PKey.check, and dump_privatekey (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/pyopenssl/commit/7079d6d41c726ca921a3282449eac24789272d14\"\u003e\u003ccode\u003e7079d6d\u003c/code\u003e\u003c/a\u003e Fix zizmor findings in GitHub Actions workflows (\u003ca href=\"https://redirect.github.com/pyca/pyopenssl/issues/1506\"\u003e#1506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/pyopenssl/compare/26.0.0...26.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyreadline3` from 3.5.4 to 3.5.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyreadline3/pyreadline3/releases\"\u003epyreadline3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.5.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAlternate Fix to KeyboardInterrupt Issue by \u003ca href=\"https://github.com/davedikian\"\u003e\u003ccode\u003e@​davedikian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/33\"\u003epyreadline3/pyreadline3#33\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pyreadline3/pyreadline3/compare/v3.5.5...v3.5.6\"\u003ehttps://github.com/pyreadline3/pyreadline3/compare/v3.5.5...v3.5.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.5.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleanups by \u003ca href=\"https://github.com/brgirgis\"\u003e\u003ccode\u003e@​brgirgis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/35\"\u003epyreadline3/pyreadline3#35\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd backend identifier for CPython compatibility by \u003ca href=\"https://github.com/zelosleone\"\u003e\u003ccode\u003e@​zelosleone\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/44\"\u003epyreadline3/pyreadline3#44\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/zelosleone\"\u003e\u003ccode\u003e@​zelosleone\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pyreadline3/pyreadline3/pull/44\"\u003epyreadline3/pyreadline3#44\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pyreadline3/pyreadline3/compare/v3.5.4...v3.5.5\"\u003ehttps://github.com/pyreadline3/pyreadline3/compare/v3.5.4...v3.5.5\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\u003eSee full diff in \u003ca href=\"https://github.com/pyreadline3/pyreadline3/compare/v3.5.4...v3.5.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.4.4 to 2026.6.28\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.6.28\u003c/p\u003e\n\u003cp\u003eGit issue 604: regex fails on free-threading python because setlocale is not thread-safe\u003c/p\u003e\n\u003cp\u003eVersion: 2026.5.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReverse matching with full unicode casefolding could lead to out-of-range string indexes.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eA fix for older Python versions before free-threading was  supported.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eMore fixes for free-threading.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\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/mrabarnett/mrab-regex/commit/b18daa63c23770ae8b455585c85632808eb84bca\"\u003e\u003ccode\u003eb18daa6\u003c/code\u003e\u003c/a\u003e Git issue 604: regex fails on free-threading python because setlocale is not ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/e57d185bb711729091907b23edac5dcba0426243\"\u003e\u003ccode\u003ee57d185\u003c/code\u003e\u003c/a\u003e Reverse matching with full unicode casefolding lead to out-of-range string in...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.4.4...2026.6.28\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.52.1 to 4.56.1\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\u003ev4.56.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etreat scalar string then/else as a single item in if-replace extend by \u003ca href=\"https://github.com/HrachShah\"\u003e\u003ccode\u003e@​HrachShah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3969\"\u003etox-dev/tox#3969\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/HrachShah\"\u003e\u003ccode\u003e@​HrachShah\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3969\"\u003etox-dev/tox#3969\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.56.0...4.56.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.56.0...4.56.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.56.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix type errors flagged by ty 0.0.43 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/3952\"\u003etox-dev/tox#3952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop obsolete ty: ignore directives 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/3957\"\u003etox-dev/tox#3957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Use double backquotes for git command in \u003ccode\u003edevelopment.rst\u003c/code\u003e 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/3961\"\u003etox-dev/tox#3961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix indent misalignment in \u003ccode\u003ereference/config.rst\u003c/code\u003e 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/3962\"\u003etox-dev/tox#3962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: replace \u003ca href=\"http://tox.readthedocs.org\"\u003ehttp://tox.readthedocs.org\u003c/a\u003e with \u003ca href=\"https://tox.wiki\"\u003ehttps://tox.wiki\u003c/a\u003e by \u003ca href=\"https://github.com/TejasAmle\"\u003e\u003ccode\u003e@​TejasAmle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3963\"\u003etox-dev/tox#3963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(config): restore skip_missing_interpreters default to False 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/3966\"\u003etox-dev/tox#3966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(virtualenv): auto-pin virtualenv for end-of-life Python 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/3967\"\u003etox-dev/tox#3967\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/TejasAmle\"\u003e\u003ccode\u003e@​TejasAmle\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3963\"\u003etox-dev/tox#3963\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.55.1...4.56.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.55.1...4.56.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.55.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(config): propagate overrides through config references by \u003ca href=\"https://github.com/tales-aparecida\"\u003e\u003ccode\u003e@​tales-aparecida\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3951\"\u003etox-dev/tox#3951\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/tales-aparecida\"\u003e\u003ccode\u003e@​tales-aparecida\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3951\"\u003etox-dev/tox#3951\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.55.0...4.55.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.55.0...4.55.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.55.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👷 ci(schemastore): sync fork before pushing branch 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/3942\"\u003etox-dev/tox#3942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Also pass \u003ccode\u003eTERMINFO\u003c/code\u003e when in an interactive shell by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3946\"\u003etox-dev/tox#3946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): skip constrain_package_deps when constraints is set 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/3948\"\u003etox-dev/tox#3948\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.54.0...4.55.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.54.0...4.55.0\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/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\u003eBug fixes - 4.56.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e{ replace = \u0026quot;if\u0026quot; ... extend = true }\u003c/code\u003e corrupting the resulting list when \u003ccode\u003ethen\u003c/code\u003e or \u003ccode\u003eelse\u003c/code\u003e is a scalar\nstring (e.g. \u003ccode\u003ethen = \u0026quot;-v\u0026quot;\u003c/code\u003e): a non-empty scalar string is now appended as a single element instead of being iterated\ncharacter-by-character, while a false \u003ccode\u003eif\u003c/code\u003e with no \u003ccode\u003eelse\u003c/code\u003e (yielding \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e) contributes nothing rather than an\nempty element, and list/set results are still spread into the parent. (:issue:\u003ccode\u003e3969\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.56.0 (2026-06-23)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.56.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDerive :ref:\u003ccode\u003evirtualenv_spec\u003c/code\u003e automatically: when an environment targets a Python version the installed\n:pypi:\u003ccode\u003evirtualenv\u003c/code\u003e can no longer create (e.g. \u003ccode\u003epy38\u003c/code\u003e with virtualenv \u003ccode\u003e21.5+\u003c/code\u003e), tox now pins the newest virtualenv\nthat still supports it and bootstraps it for that environment only. The downgrade happens only when every\n\u003ccode\u003ebase_python\u003c/code\u003e candidate is unsupported, so environments targeting current interpreters are unaffected. This fixes\n\u003ccode\u003epy38\u003c/code\u003e (and other end-of-life interpreters) being silently skipped after a virtualenv upgrade - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3965\u003c/code\u003e) (:issue:\u003ccode\u003e3965\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.56.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe default value of \u003ccode\u003eskip_missing_interpreters\u003c/code\u003e changed from \u003ccode\u003eTrue\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e — missing interpreters now fail\nthe run by default, matching tox 3 behavior. The tox 4 rewrite unintentionally changed this default. To restore the\nprevious (incorrect) behavior, set \u003ccode\u003eskip_missing_interpreters = true\u003c/code\u003e in your tox configuration or pass\n\u003ccode\u003e--skip-missing-interpreters\u003c/code\u003e on the command line. (:issue:\u003ccode\u003e3965\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eImproved documentation - 4.56.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix nested list items being rendered with continued numbering instead of as sub-items in \u003ccode\u003edevelopment.rst\u003c/code\u003e,\n\u003ccode\u003eonboarding.rst\u003c/code\u003e and \u003ccode\u003eexplanation.rst\u003c/code\u003e. (:issue:\u003ccode\u003e3960\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReplace stale \u003ccode\u003ehttp://tox.readthedocs.org\u003c/code\u003e URL with \u003ccode\u003ehttps://tox.wiki\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ccode\u003eHomepage\u003c/code\u003e),\n\u003ccode\u003e.github/CONTRIBUTING.md\u003c/code\u003e, and \u003ccode\u003e.github/PULL_REQUEST_TEMPLATE.md\u003c/code\u003e. (:issue:\u003ccode\u003e3963\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.55.1 (2026-06-03)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.55.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTOX_OVERRIDE\u003c/code\u003e (and \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--override\u003c/code\u003e) now propagates through configuration references. Previously, overriding a\nbase value that was later referenced via \u003ccode\u003e{[section]key}\u003c/code\u003e (ini) or \u003ccode\u003e{replace = \u0026quot;ref\u0026quot;, of = [...]}\u003c/code\u003e (toml) was\nignored because reference resolution read the raw file value, bypassing the override system - by\n:user:\u003ccode\u003etales-aparecida\u003c/code\u003e. (:issue:\u003ccode\u003e3950\u003c/code\u003e) (:issue:\u003ccode\u003e3950\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/4bb64210e056ea35fb123faae08cb23cc08234cb\"\u003e\u003ccode\u003e4bb6421\u003c/code\u003e\u003c/a\u003e release 4.56.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/ca2f561b60f30c03c8c0d5386c85f509d45a155b\"\u003e\u003ccode\u003eca2f561\u003c/code\u003e\u003c/a\u003e treat scalar string then/else as a single item in if-replace extend (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3969\"\u003e#3969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/f933bd2ad3028148a9158b74b63920585bf46e36\"\u003e\u003ccode\u003ef933bd2\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3968\"\u003e#3968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/f3a626a016c96206a5306ccd73f08eb0e83e4abc\"\u003e\u003ccode\u003ef3a626a\u003c/code\u003e\u003c/a\u003e release 4.56.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/140733c12949e4f00b4fe9d3acccee31a2c8367c\"\u003e\u003ccode\u003e140733c\u003c/code\u003e\u003c/a\u003e ✨ feat(virtualenv): auto-pin virtualenv for end-of-life Python (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/bfbc87656a8a0b97fffbab4796660077999971da\"\u003e\u003ccode\u003ebfbc876\u003c/code\u003e\u003c/a\u003e 🐛 fix(config): restore skip_missing_interpreters default to False (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/8ba8075acd45f336347b0133eae7d69af4aab0cd\"\u003e\u003ccode\u003e8ba8075\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3964\"\u003e#3964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/e9d06b0aa8db43e7c3b3b3730be272febe405ec7\"\u003e\u003ccode\u003ee9d06b0\u003c/code\u003e\u003c/a\u003e docs: replace \u003ca href=\"http://tox.readthedocs.org\"\u003ehttp://tox.readthedocs.org\u003c/a\u003e with \u003ca href=\"https://tox.wiki\"\u003ehttps://tox.wiki\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3963\"\u003e#3963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/94f5a6b65285b9082b3bef0f47c5d41560da4dbc\"\u003e\u003ccode\u003e94f5a6b\u003c/code\u003e\u003c/a\u003e docs: Fix indent misalignment in \u003ccode\u003ereference/config.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3962\"\u003e#3962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/d43df676b0551dedf31c7a8a3643ca66fc436c34\"\u003e\u003ccode\u003ed43df67\u003c/code\u003e\u003c/a\u003e docs: Use double backquotes for git command in \u003ccode\u003edevelopment.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3961\"\u003e#3961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.1...4.56.1\"\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.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.20260408 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-requests` from 2.33.0.20260408 to 2.33.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 `ansible` from 13.5.0 to 14.1.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/b41eb51eeba848341c1f1df3d65c8b5866a8fdb9\"\u003e\u003ccode\u003eb41eb51\u003c/code\u003e\u003c/a\u003e Ansible 14.1.0: Dependencies, changelog and porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/303055947a8b573d99639915a00f42189592d8bb\"\u003e\u003ccode\u003e3030559\u003c/code\u003e\u003c/a\u003e Add 15/ directory (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/698\"\u003e#698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/7ec68faac3efbf9a070dfbb2ace6556acee2e3de\"\u003e\u003ccode\u003e7ec68fa\u003c/code\u003e\u003c/a\u003e Release Ansible 14.0.0 (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/697\"\u003e#697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/79c72417ed369c92650b14f48b0a1e6bc8b601c1\"\u003e\u003ccode\u003e79c7241\u003c/code\u003e\u003c/a\u003e Schedule cyberark.pas for removal from Ansible 15 (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-build-data/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-build-data/commit/413d77ba5ba9...\n\n_Description has been truncated_\n\n\u003c!-- Reviewable:start --\u003e\n- - -\nThis change is [\u003cimg src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/\u003e](https://reviewable.io/reviews/sillsdev/TheCombine/4318)\n\u003c!-- Reviewable:end --\u003e\n","html_url":"https://github.com/sillsdev/TheCombine/pull/4318","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2FTheCombine/issues/4318","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4318/packages"}},{"old_version":"2.9.0.20260508","new_version":"2.9.0.20260518","update_type":null,"path":null,"pr_created_at":"2026-05-26T05:09:42.000Z","version_change":"2.9.0.20260508 → 2.9.0.20260518","issue":{"uuid":"4521535875","node_id":"PR_kwDOOLckwc7fRcG7","number":1138,"state":"open","title":"Bump the pip-deps group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python","skip-changelog"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-26T05:09:42.000Z","updated_at":"2026-05-26T05:10:57.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-deps","update_count":15,"packages":[{"name":"requests","old_version":"2.34.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"click","old_version":"8.3.3","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"python-ldap","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/python-ldap/python-ldap"},{"name":"opentelemetry-api","old_version":"1.41.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.41.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"botocore","old_version":"1.43.6","new_version":"1.43.14","repository_url":"https://github.com/boto/botocore"},{"name":"boto3","old_version":"1.43.6","new_version":"1.43.14","repository_url":"https://github.com/boto/boto3"},{"name":"python-frontmatter","old_version":"1.1.0","new_version":"1.3.0","repository_url":"https://github.com/eyeseast/python-frontmatter"},{"name":"types-pyyaml","old_version":"6.0.12.20260510","new_version":"6.0.12.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-pytz","old_version":"2026.2.0.20260506","new_version":"2026.2.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260508","new_version":"2.9.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.33.0.20260508","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"pytest-socket","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/miketheman/pytest-socket"},{"name":"pytest-rerunfailures","old_version":"16.1","new_version":"16.3","repository_url":"https://github.com/pytest-dev/pytest-rerunfailures"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-deps group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.34.0` | `2.34.2` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.4.1` |\n| [python-ldap](https://github.com/python-ldap/python-ldap) | `3.4.5` | `3.4.7` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.41.1` | `1.42.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.41.1` | `1.42.1` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [botocore](https://github.com/boto/botocore) | `1.43.6` | `1.43.14` |\n| [boto3](https://github.com/boto/boto3) | `1.43.6` | `1.43.14` |\n| [python-frontmatter](https://github.com/eyeseast/python-frontmatter) | `1.1.0` | `1.3.0` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260510` | `6.0.12.20260518` |\n| [types-pytz](https://github.com/python/typeshed) | `2026.2.0.20260506` | `2026.2.0.20260518` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260508` | `2.9.0.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260508` | `2.33.0.20260518` |\n| [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0` | `0.8.0` |\n| [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) | `16.1` | `16.3` |\n\n\nUpdates `requests` from 2.34.0 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\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/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\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/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/psf/requests/compare/v2.34.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32?closed=1\"\u003ehttps://github.com/pallets/click/milestone/32?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. :issue:\u003ccode\u003e3458\u003c/code\u003e :issue:\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. :issue:\u003ccode\u003e3277\u003c/code\u003e :pr:\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion\nresult. :issue:\u003ccode\u003e3015\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. :issue:\u003ccode\u003e3487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. :issue:\u003ccode\u003e3449\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\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/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5\"\u003e\u003ccode\u003e6eeb50e\u003c/code\u003e\u003c/a\u003e release version 8.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f\"\u003e\u003ccode\u003e67921d5\u003c/code\u003e\u003c/a\u003e change log and doc fixes (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1\"\u003e\u003ccode\u003e9c41f46\u003c/code\u003e\u003c/a\u003e Fix changelog and version admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6\"\u003e\u003ccode\u003e6cb3477\u003c/code\u003e\u003c/a\u003e fix skip condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37\"\u003e\u003ccode\u003e5ee8e31\u003c/code\u003e\u003c/a\u003e fix I/O operation on closed file error with CliRunner and echo_via_pager (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f\"\u003e\u003ccode\u003ebecbde5\u003c/code\u003e\u003c/a\u003e pager doesn't close std streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77\"\u003e\u003ccode\u003ea5f5aa6\u003c/code\u003e\u003c/a\u003e Handle empty bytes in echo (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2\"\u003e\u003ccode\u003e4d3db84\u003c/code\u003e\u003c/a\u003e handle empty bytes in echo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5\"\u003e\u003ccode\u003ed42f15b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eget_parameter_source()\u003c/code\u003e during type conversion and eager callbacks (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1\"\u003e\u003ccode\u003e0baa8db\u003c/code\u003e\u003c/a\u003e Document ctx.params bypass with test and doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-ldap` from 3.4.5 to 3.4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-ldap/python-ldap/releases\"\u003epython-ldap's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.7\u003c/h2\u003e\n\u003cp\u003eNo code changes, correcting for the fact that the previous release artifacts\nuploaded to PyPI contained unintended files.\u003c/p\u003e\n\u003ch2\u003e3.4.6\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eattrlist\u003c/code\u003e parameter is now properly checked before use, avoiding memory\nerrors due to type mismatches\u003c/li\u003e\n\u003cli\u003eFixed errors with requestName/requestValue in \u003ccode\u003eextop.dds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eldif\u003c/code\u003e and \u003ccode\u003eldap.schema\u003c/code\u003e modules now actively close sockets as they're\nfinished with them\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePackage no longer requires setuptools-scm\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-ldap/python-ldap/blob/python-ldap-3.4.7/CHANGES\"\u003epython-ldap's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eReleased 3.4.7 2026-05-19\u003c/p\u003e\n\u003cp\u003eNo code changes, correcting for the fact that the previous release artifacts\nuploaded to PyPI contained unintended files.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eReleased 3.4.6 2026-05-14\u003c/p\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eattrlist\u003c/code\u003e parameter is now properly checked before use, avoiding memory\nerrors due to type mismatches\u003c/li\u003e\n\u003cli\u003eFixed errors with requestName/requestValue in \u003ccode\u003eextop.dds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eldif\u003c/code\u003e and \u003ccode\u003eldap.schema\u003c/code\u003e modules now actively close sockets as they're\nfinished with them\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePackage no longer requires setuptools-scm\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eReleased 3.4.5 2025-10-10\u003c/p\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2025-61911 (GHSA-r7r6-cc7p-4v5m): Enforce \u003ccode\u003estr\u003c/code\u003e input in\n\u003ccode\u003eldap.filter.escape_filter_chars\u003c/code\u003e with \u003ccode\u003eescape_mode=1\u003c/code\u003e; ensure proper\nescaping. (thanks to lukas-eu)\u003c/li\u003e\n\u003cli\u003eCVE-2025-61912 (GHSA-p34h-wq7j-h5v6): Correct NUL escaping in\n\u003ccode\u003eldap.dn.escape_dn_chars\u003c/code\u003e to \u003ccode\u003e\\00\u003c/code\u003e per RFC 4514. (thanks to aradona91)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReconnectLDAPObject now properly reconnects on UNAVAILABLE, CONNECT_ERROR\nand TIMEOUT exceptions (previously only SERVER_DOWN), fixing reconnection\nissues especially during server restarts\u003c/li\u003e\n\u003cli\u003eFixed syncrepl.py to use named constants instead of raw decimal values\nfor result types\u003c/li\u003e\n\u003cli\u003eFixed error handling in SearchNoOpMixIn to prevent a undefined variable error\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTests:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded comprehensive reconnection test cases including concurrent operation\nhandling and server restart scenarios\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDoc/\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated installation docs and fixed various documentation typos\u003c/li\u003e\n\u003cli\u003eAdded ReadTheDocs configuration file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd testing and document support for Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eReleased 3.4.4 2022-11-17\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-ldap/python-ldap/commit/79f34cc398c5bdf202bdb4024a1bb2ec272ce26e\"\u003e\u003ccode\u003e79f34cc\u003c/code\u003e\u003c/a\u003e Prepare a new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/4472afd4dd00da71c6836377bad8e0c77702bb66\"\u003e\u003ccode\u003e4472afd\u003c/code\u003e\u003c/a\u003e Prepare a new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/f8aa2894212e6624b1b4aac3aa46517652dd5983\"\u003e\u003ccode\u003ef8aa289\u003c/code\u003e\u003c/a\u003e CI: Drop 3.8 from CI as no longer supported in current images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/311dbbab0a222238790a18246f0b5b63b895930c\"\u003e\u003ccode\u003e311dbba\u003c/code\u003e\u003c/a\u003e fix(LDAPObject): Prevent memory errors in attrs_from_List\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/dee242c7015faf0d132eedc4d4235b791910bdd9\"\u003e\u003ccode\u003edee242c\u003c/code\u003e\u003c/a\u003e test: Test valid and invalid attrlist parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/9257c176ec7e428742dce0a89d5df27d4cb4c3df\"\u003e\u003ccode\u003e9257c17\u003c/code\u003e\u003c/a\u003e ci(github): update github actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/2ecbc03ff87afa4aa95db84def620a0c514ccbbb\"\u003e\u003ccode\u003e2ecbc03\u003c/code\u003e\u003c/a\u003e fix(ldif): explicitly close sockets after fetching URLs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/5b173c96c2ade8b7ea2e91a5d46bbefbbd56c5c5\"\u003e\u003ccode\u003e5b173c9\u003c/code\u003e\u003c/a\u003e fix(ldap.schema): Explicitly close url file to avoid ResourceWarning in Pytho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/1491b43ecf1856608fa401e66c9d3f89874c75d7\"\u003e\u003ccode\u003e1491b43\u003c/code\u003e\u003c/a\u003e remove superfluous dependency on setuptools-scm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-ldap/python-ldap/commit/7e93577c20207c12205db4e6724291483aed94da\"\u003e\u003ccode\u003e7e93577\u003c/code\u003e\u003c/a\u003e fix(extop.dds): make passing of requestName optional again\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-ldap/python-ldap/compare/python-ldap-3.4.5...python-ldap-3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.41.1 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\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/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.1...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-sdk` from 1.41.1 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\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/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.1...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\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/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.43.6 to 1.43.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/f23ff3b6696ff40edf962921f5e42299f32bbe94\"\u003e\u003ccode\u003ef23ff3b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/7feaf2f7e052799cee88cebedec295422dd9ae33\"\u003e\u003ccode\u003e7feaf2f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d3e43934fe477630185bf6fd31c5ac7c87f4c8c5\"\u003e\u003ccode\u003ed3e4393\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/5204755d6cc055a11d660f5021e84aa1dcf86600\"\u003e\u003ccode\u003e5204755\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/89a5ca07e8c76117201d53fce33777c2c9fc704c\"\u003e\u003ccode\u003e89a5ca0\u003c/code\u003e\u003c/a\u003e Improving caching of S3 endpoints by omitting unused parameters (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3692\"\u003e#3692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8bd61f7918034e9c9d5013c8422dd3e9e56b050e\"\u003e\u003ccode\u003e8bd61f7\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b6f2c74a6dea7272da8a2cf88dc777fbc133c2d7\"\u003e\u003ccode\u003eb6f2c74\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9cfdcaf4baecbc6ad542bd9aeaa116bcf502024a\"\u003e\u003ccode\u003e9cfdcaf\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/656fd57082823142d4a7584a8d09fc53aa419614\"\u003e\u003ccode\u003e656fd57\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/280497b9d5ebc5b1a85c1911a069c7452041fa42\"\u003e\u003ccode\u003e280497b\u003c/code\u003e\u003c/a\u003e Merge customizations for Bedrock AgentCore Control\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.43.6...1.43.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.6 to 1.43.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/07953b03a1c6fc86660852ee65a21c3ceae3f437\"\u003e\u003ccode\u003e07953b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/25c77c306c3efba0d44bebec97ab882ddd6f0958\"\u003e\u003ccode\u003e25c77c3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5e64afcd4172f04cd4b62a40050bd6088e316316\"\u003e\u003ccode\u003e5e64afc\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/97921f4babf469d1c1fbbb27746bbaece6008122\"\u003e\u003ccode\u003e97921f4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4e58a354db37897d65024fca50e9f9b4e4845068\"\u003e\u003ccode\u003e4e58a35\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1307ac2642ed8e53aca983b1c89e952309a0c66d\"\u003e\u003ccode\u003e1307ac2\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c75c901f5be45cce8e8f46733ee0562d06110c81\"\u003e\u003ccode\u003ec75c901\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/d3f2433ff49062a75426c406e606625b69a32eb6\"\u003e\u003ccode\u003ed3f2433\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5eddf97fcacb8e8aecf0ff043501ff97454f105\"\u003e\u003ccode\u003ed5eddf9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/93f3a42377b288934f08416a9c3b63920d8163c6\"\u003e\u003ccode\u003e93f3a42\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.12\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.6...1.43.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-frontmatter` from 1.1.0 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eyeseast/python-frontmatter/releases\"\u003epython-frontmatter's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.0 - Now using uv\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTest on Python 3.14 and upgrade actions by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/128\"\u003eeyeseast/python-frontmatter#128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove codecs from tests by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/129\"\u003eeyeseast/python-frontmatter#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to uv and pyproject.toml by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/131\"\u003eeyeseast/python-frontmatter#131\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eyeseast/python-frontmatter/compare/v1.2.0...v1.3.0\"\u003ehttps://github.com/eyeseast/python-frontmatter/compare/v1.2.0...v1.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0 - Fix type issues and support newer Python versions\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSolve all the type issues by \u003ca href=\"https://github.com/eyeseast\"\u003e\u003ccode\u003e@​eyeseast\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/120\"\u003eeyeseast/python-frontmatter#120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude py.typed marker in package distribution by \u003ca href=\"https://github.com/giuse-boccia\"\u003e\u003ccode\u003e@​giuse-boccia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/125\"\u003eeyeseast/python-frontmatter#125\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/giuse-boccia\"\u003e\u003ccode\u003e@​giuse-boccia\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/pull/125\"\u003eeyeseast/python-frontmatter#125\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis version drops support for Python 3.9.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eyeseast/python-frontmatter/compare/v1.1.0...v1.2.0\"\u003ehttps://github.com/eyeseast/python-frontmatter/compare/v1.1.0...v1.2.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/eyeseast/python-frontmatter/commit/dc7c0af5466b104e0ba01ae3c5b2cd77edc27292\"\u003e\u003ccode\u003edc7c0af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/131\"\u003e#131\u003c/a\u003e from eyeseast/123-uv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/1e787d8db0b426a6f28a449497bb5ab43d9f3d49\"\u003e\u003ccode\u003e1e787d8\u003c/code\u003e\u003c/a\u003e Migrate to uv and pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/36224327b9506ffaf5a62ffced1818934ff5278c\"\u003e\u003ccode\u003e3622432\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/129\"\u003e#129\u003c/a\u003e from eyeseast/126-remove-codecs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/c4fdd50f3f8785f8f794e8f9ca5d1833824cb9eb\"\u003e\u003ccode\u003ec4fdd50\u003c/code\u003e\u003c/a\u003e Encoding is a kwarg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/6fa3a9a630b2a15096101531884c5e55e90dd189\"\u003e\u003ccode\u003e6fa3a9a\u003c/code\u003e\u003c/a\u003e Remove codecs from tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/3a8c60009a5456c821e81458bcc47b369cd5db99\"\u003e\u003ccode\u003e3a8c600\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/128\"\u003e#128\u003c/a\u003e from eyeseast/upgrade-actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/8243f83b628785910e21f6a75bc1152c1bd9263c\"\u003e\u003ccode\u003e8243f83\u003c/code\u003e\u003c/a\u003e Test on Python 3.14 and upgrade actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/55bcc679d0af970a40b5a97de92c73466e1de07e\"\u003e\u003ccode\u003e55bcc67\u003c/code\u003e\u003c/a\u003e v1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/949826fe6fbb1513cf5d820abcf57deab216ff35\"\u003e\u003ccode\u003e949826f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/eyeseast/python-frontmatter/issues/125\"\u003e#125\u003c/a\u003e from giuse-boccia/fix/include-py-typed-marker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eyeseast/python-frontmatter/commit/b12a13bc05f2362b1c21b6e1053d945aeebf497d\"\u003e\u003ccode\u003eb12a13b\u003c/code\u003e\u003c/a\u003e Include py.typed marker in package distribution\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eyeseast/python-frontmatter/compare/v1.1.0...v1.3.0\"\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-pytz` from 2026.2.0.20260506 to 2026.2.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-python-dateutil` from 2.9.0.20260508 to 2.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-requests` from 2.33.0.20260508 to 2.33.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 `pytest-socket` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miketheman/pytest-socket/releases\"\u003epytest-socket's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlock DNS resolution (\u003ccode\u003egetaddrinfo\u003c/code\u003e, \u003ccode\u003egethostbyname\u003c/code\u003e) when sockets are disabled \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/482\"\u003e#482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport CIDR network ranges in \u003ccode\u003eallow_hosts\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/479\"\u003e#479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWarn before raising on a blocked socket call \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/468\"\u003e#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache hostname resolutions during a test run \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/369\"\u003e#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved support for Python 3.8 and 3.9.\u003c/strong\u003e Python 3.10 is now the minimum.\u003c/li\u003e\n\u003cli\u003eTest against Python 3.13, 3.14, and free-threaded 3.13t/3.14t\u003c/li\u003e\n\u003cli\u003eReplaced Poetry with uv \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/429\"\u003e#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded type hints \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/465\"\u003e#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwapped \u003ccode\u003epytest-httpbin\u003c/code\u003e for a local test fixture \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/467\"\u003e#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDependency, CI, and development updates\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/twm\"\u003e\u003ccode\u003e@​twm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/pull/369\"\u003emiketheman/pytest-socket#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0\"\u003ehttps://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.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/miketheman/pytest-socket/blob/main/CHANGELOG.md\"\u003epytest-socket's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.8.0][] (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eEnhancements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBlock DNS resolution (\u003ccode\u003egetaddrinfo\u003c/code\u003e, \u003ccode\u003egethostbyname\u003c/code\u003e) when sockets are disabled \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/482\"\u003e#482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport CIDR network ranges in \u003ccode\u003eallow_hosts\u003c/code\u003e \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/479\"\u003e#479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWarn before raising on a blocked socket call \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/468\"\u003e#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache hostname resolutions during a test run \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/369\"\u003e#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved support for Python 3.8 and 3.9.\u003c/strong\u003e Python 3.10 is now the minimum.\u003c/li\u003e\n\u003cli\u003eTest against Python 3.13, 3.14, and free-threaded 3.13t/3.14t\u003c/li\u003e\n\u003cli\u003eReplaced Poetry with uv \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/429\"\u003e#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded type hints \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/465\"\u003e#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwapped \u003ccode\u003epytest-httpbin\u003c/code\u003e for a local test fixture \u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/467\"\u003e#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDependency, CI, and development updates\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/miketheman/pytest-socket/commit/f9ec1395f4b060c095d6cb28dc1d03d6ca4e0f47\"\u003e\u003ccode\u003ef9ec139\u003c/code\u003e\u003c/a\u003e pytest-socket, v0.8.0 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/484\"\u003e#484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/3930df85c15d93ad3d56ccf21dd81fafcc3e107f\"\u003e\u003ccode\u003e3930df8\u003c/code\u003e\u003c/a\u003e chore(ci): add publish workflow, update others (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/483\"\u003e#483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/aae7f44b24475f2fbdc49fac8f2fa6d63b67f48b\"\u003e\u003ccode\u003eaae7f44\u003c/code\u003e\u003c/a\u003e feat: also block DNS resolution (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/f0700d23791fafc2aefa92bfd0b3e49d99de4582\"\u003e\u003ccode\u003ef0700d2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/481\"\u003e#481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/09ba021cd3c276ba75d6cb726ef355d75c68c13d\"\u003e\u003ccode\u003e09ba021\u003c/code\u003e\u003c/a\u003e chore(deps): full sweep of all dependency upgrades (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/8dc62860f3d0cf2104f50acee8ac91d42dd29950\"\u003e\u003ccode\u003e8dc6286\u003c/code\u003e\u003c/a\u003e feat(allow_hosts): support CIDR network entries (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/06ed8a1562be753238bcf7c35d960816b7e9fa62\"\u003e\u003ccode\u003e06ed8a1\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 0.49.1 to 1.0.0 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/b3132108f9ba20f8e1c3a8a5caa6f8e66a7ce6cc\"\u003e\u003ccode\u003eb313210\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump mypy from 1.20.0 to 1.20.2 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/f7e85f788b5db0a7cb832414f5d04ea6124305a2\"\u003e\u003ccode\u003ef7e85f7\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest-randomly from 3.16.0 to 4.0.1 (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miketheman/pytest-socket/commit/89690a6c31d200c9463c7e41e7ba51139de67c29\"\u003e\u003ccode\u003e89690a6\u003c/code\u003e\u003c/a\u003e chore: dependabot config (\u003ca href=\"https://redirect.github.com/miketheman/pytest-socket/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-rerunfailures` from 16.1 to 16.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst\"\u003epytest-rerunfailures's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e16.3 (2026-05-22)\u003c/h2\u003e\n\u003cp\u003eFeatures\n++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e--reruns-mode\u003c/code\u003e option (\u003ccode\u003estrict\u003c/code\u003e or \u003ccode\u003eappend\u003c/code\u003e). With \u003ccode\u003eappend\u003c/code\u003e,\nmarker reruns and the global \u003ccode\u003e--reruns\u003c/code\u003e / \u003ccode\u003ereruns\u003c/code\u003e ini setting are summed\ninstead of the marker taking strict priority. Default is \u003ccode\u003estrict\u003c/code\u003e so\nexisting behaviour is unchanged.\nFixes \u003ccode\u003e[#321](https://github.com/pytest-dev/pytest-rerunfailures/issues/321) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/321\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e--rerun-show-tracebacks\u003c/code\u003e option to display tracebacks from failed\nattempts that were retried, including tests that eventually passed. The\nrerun summary section is emitted automatically when the flag is set, so\n\u003ccode\u003e-rR\u003c/code\u003e is no longer required to see the tracebacks.\nFixes \u003ccode\u003e[#156](https://github.com/pytest-dev/pytest-rerunfailures/issues/156) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/156\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e16.2 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eBreaking changes\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for pytest 8.0. Minimum pytest version is now 8.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeatures\n++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for pytest 9.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes\n+++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix missing teardown for session and module scoped fixtures when fixture teardown fails.\nFixes \u003ccode\u003e[#314](https://github.com/pytest-dev/pytest-rerunfailures/issues/314) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/314\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear fixture finalizers when removing cached results from failed fixtures\nto fix compatibility with pytest \u0026gt;= 9, which asserts that \u003ccode\u003e_finalizers\u003c/code\u003e is\nempty before executing a fixture.\nFixes \u003ccode\u003e[#323](https://github.com/pytest-dev/pytest-rerunfailures/issues/323) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/323\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAccept exception classes (not only regex strings) in the \u003ccode\u003eonly_rerun\u003c/code\u003e and\n\u003ccode\u003ererun_except\u003c/code\u003e marker keyword arguments instead of crashing with an\ninternal error.\nFixes \u003ccode\u003e[#275](https://github.com/pytest-dev/pytest-rerunfailures/issues/275) \u0026lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/275\u0026gt;\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-rerunfailures/commit/4b3a2200b07b357cecfe192f4997f35764869c6f\"\u003e\u003ccode\u003e4b3a220\u003c/code\u003e\u003c/a\u003e Preparing release 16.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/d17f3be1c8cc257c29cd7d7e815d3c52867b1276\"\u003e\u003ccode\u003ed17f3be\u003c/code\u003e\u003c/a\u003e feat: add --reruns-mode option to sum marker and global reruns (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/321\"\u003e#321\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/328\"\u003e#328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/4a00facae37246c00801390039286d322df6e322\"\u003e\u003ccode\u003e4a00fac\u003c/code\u003e\u003c/a\u003e Add --rerun-show-tracebacks to surface retried failures (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/9f792d9efe6bf0218e7ba2734257af2d5165ca3f\"\u003e\u003ccode\u003e9f792d9\u003c/code\u003e\u003c/a\u003e Back to development: 16.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/88a84d8471219ae517dfd3752a181b22e51a2b8c\"\u003e\u003ccode\u003e88a84d8\u003c/code\u003e\u003c/a\u003e Preparing release 16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/5e0ad6a3080d778f2d3de8975aceafed0c843b12\"\u003e\u003ccode\u003e5e0ad6a\u003c/code\u003e\u003c/a\u003e fix: accept exception classes in only_rerun and rerun_except markers (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/327\"\u003e#327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/928aa2bb654b18157e6614c15f22091e9997d540\"\u003e\u003ccode\u003e928aa2b\u003c/code\u003e\u003c/a\u003e Update minimum pytest version to 8.1 and add support for pytest 9.0 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/325\"\u003e#325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/b53ef720219427c569bddee7e37d92cc3423e2c9\"\u003e\u003ccode\u003eb53ef72\u003c/code\u003e\u003c/a\u003e Fix support for pytest-main. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/324\"\u003e#324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/d9ef70e5451f604dcc764861f4b0a65dc9dfd202\"\u003e\u003ccode\u003ed9ef70e\u003c/code\u003e\u003c/a\u003e Preserve session and module teardown when fixture teardown fails (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/319\"\u003e#319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/commit/a22edc3de88eeb17f3dcdf482b3f5a13ea9af874\"\u003e\u003ccode\u003ea22edc3\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5 in the actions group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/317\"\u003e#317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-rerunfailures/compare/16.1...16.3\"\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 grou...\n\n_Description has been truncated_","html_url":"https://github.com/mongodb/mongodb-kubernetes/pull/1138","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mongodb%2Fmongodb-kubernetes/issues/1138","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1138/packages"}},{"old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-18T03:28:09.000Z","version_change":"2.9.0.20260408 → 2.9.0.20260508","issue":{"uuid":"4466035611","node_id":"PR_kwDOBXYo-M7cfn8k","number":13151,"state":"closed","title":"chore(deps-dev): bump the types group with 3 updates","user":"dependabot[bot]","labels":["Dependencies","Python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-18T04:26:58.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-18T03:28:09.000Z","updated_at":"2026-05-18T04:27:07.000Z","time_to_close":3529,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"types","update_count":3,"packages":[{"name":"types-requests","old_version":"2.33.0.20260503","new_version":"2.33.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tabulate","old_version":"0.10.0.20260408","new_version":"0.10.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"}],"path":null,"ecosystem":"pip"},"body":"Bumps the types group with 3 updates: [types-requests](https://github.com/python/typeshed), [types-tabulate](https://github.com/python/typeshed) and [types-python-dateutil](https://github.com/python/typeshed).\n\nUpdates `types-requests` from 2.33.0.20260503 to 2.33.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-tabulate` from 0.10.0.20260408 to 0.10.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\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/freqtrade/freqtrade/pull/13151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freqtrade%2Ffreqtrade/issues/13151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13151/packages"}},{"old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-17T18:11:01.000Z","version_change":"2.9.0.20260408 → 2.9.0.20260508","issue":{"uuid":"4464481432","node_id":"PR_kwDOCbJ3R87ca4Cv","number":4419,"state":"open","title":"deps(python)(deps-dev): bump the all-dependencies group with 9 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-17T18:11:01.000Z","updated_at":"2026-05-17T18:12:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps-dev): bump","group_name":"all-dependencies","update_count":9,"packages":[{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.28","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"types-aiofiles","old_version":"25.1.0.20260409","new_version":"25.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-toml","old_version":"0.10.8.20260408","new_version":"0.10.8.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260503","new_version":"7.34.1.20260508","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-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"mypy","old_version":"1.20.2","new_version":"2.0.0","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 9 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.28` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.3` | `2.13.4` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20260409` | `25.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260508` |\n| [types-toml](https://github.com/python/typeshed) | `0.10.8.20260408` | `0.10.8.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260503` | `7.34.1.20260508` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260408` | `1.3.1.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260510` |\n| [mypy](https://github.com/python/mypy) | `1.20.2` | `2.0.0` |\n\nUpdates `python-multipart` from 0.0.27 to 0.0.28\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\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/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\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/Kludex/python-multipart/commit/7d8d28b210ac6cb055399562b0dc0e5cf9aef14a\"\u003e\u003ccode\u003e7d8d28b\u003c/code\u003e\u003c/a\u003e Version 0.0.28 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/284\"\u003e#284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b0dd125457d0f98de23bf2f894aedb1a54639d4e\"\u003e\u003ccode\u003eb0dd125\u003c/code\u003e\u003c/a\u003e Cap multipart boundary length at 256 bytes (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/282\"\u003e#282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/d1b57392cf7d0c19235ba454eb5686fd27dc2384\"\u003e\u003ccode\u003ed1b5739\u003c/code\u003e\u003c/a\u003e Speed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/281\"\u003e#281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/09cb8c3da7638d45ecdf7c154832303214bba829\"\u003e\u003ccode\u003e09cb8c3\u003c/code\u003e\u003c/a\u003e Make the long_boundary benchmark dominated by the patched code path (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/280\"\u003e#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/a6467c93c14aa4b09ef65450ead8011c45e5c7a0\"\u003e\u003ccode\u003ea6467c9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Switch CodSpeed benchmarks to walltime mode\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/9a9690035a956fbdcca06f98461244cf790375a7\"\u003e\u003ccode\u003e9a96900\u003c/code\u003e\u003c/a\u003e Switch CodSpeed benchmarks to walltime mode (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/1fc7a626f566ae11bc63165260262b9a30af9008\"\u003e\u003ccode\u003e1fc7a62\u003c/code\u003e\u003c/a\u003e Make benchmark coverage trigger the partial-boundary fallback (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/277\"\u003e#277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/03df045810a216dceabbefc9dca7a33a264307bc\"\u003e\u003ccode\u003e03df045\u003c/code\u003e\u003c/a\u003e Add CodSpeed benchmark suite for parser hot paths (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/276\"\u003e#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/79a7c614953d0c91a1d6dc69759b4fbcd0fb44f3\"\u003e\u003ccode\u003e79a7c61\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/273\"\u003e#273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/bd29332f23429d06cf16226819f89b28a8288915\"\u003e\u003ccode\u003ebd29332\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 5 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/274\"\u003e#274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\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/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\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/pydantic/pydantic/blob/v2.13.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\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/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\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-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-toml` from 0.10.8.20260408 to 0.10.8.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.20260503 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-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-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 `mypy` from 1.20.2 to 2.0.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/7a765008a138ec46c579bfc6ef608860cab36033\"\u003e\u003ccode\u003e7a76500\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/5a3ab3b29f03d8baafeced3761e1afc8bd58be79\"\u003e\u003ccode\u003e5a3ab3b\u003c/code\u003e\u003c/a\u003e Changelog for mypy 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21422\"\u003e#21422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f9c86e21e88f96806c65790d604bf1264db39434\"\u003e\u003ccode\u003ef9c86e2\u003c/code\u003e\u003c/a\u003e Some changelog updates for 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21413\"\u003e#21413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/519eaf15e0ceafae30337083577a54c7d3f3b4fe\"\u003e\u003ccode\u003e519eaf1\u003c/code\u003e\u003c/a\u003e Bump librt to 0.10.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/158a6207d6e221cc403e1d556097b5abf5157cdd\"\u003e\u003ccode\u003e158a620\u003c/code\u003e\u003c/a\u003e Fix negative narrowing for containers (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21411\"\u003e#21411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e556eb93a3c551a320a536879ce0a1608d14d490\"\u003e\u003ccode\u003ee556eb9\u003c/code\u003e\u003c/a\u003e Try fixing mypy mypyc wheels (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21392\"\u003e#21392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f2c97971f5f4dcd749cf87df1e1308ab5754490a\"\u003e\u003ccode\u003ef2c9797\u003c/code\u003e\u003c/a\u003e Expose --num-workers and --native-parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21387\"\u003e#21387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/db0cb2f7c68b0f9d43d6ee1ab68117c1550dac39\"\u003e\u003ccode\u003edb0cb2f\u003c/code\u003e\u003c/a\u003e Bump ast-serialize cache version (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21388\"\u003e#21388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/1090ca6d476f629c566250a41204450043a47cf5\"\u003e\u003ccode\u003e1090ca6\u003c/code\u003e\u003c/a\u003e Bump ast-serialize version to 0.3.0 only (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21391\"\u003e#21391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/714ca9f2ac76e7c6dd56e26fd555f69313ba47ab\"\u003e\u003ccode\u003e714ca9f\u003c/code\u003e\u003c/a\u003e [mypyc] Add note about librt.strings thread safety (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21383\"\u003e#21383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.2...v2.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/strawberry-graphql/strawberry/pull/4419","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/strawberry-graphql%2Fstrawberry/issues/4419","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4419/packages"}},{"old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-15T03:38:47.000Z","version_change":"2.9.0.20260408 → 2.9.0.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":"2.9.0.20251115","new_version":"2.9.0.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-11T22:50:48.000Z","version_change":"2.9.0.20251115 → 2.9.0.20260508","issue":{"uuid":"4424842713","node_id":"PR_kwDOELqrU87adAEf","number":334,"state":"open","title":"Bump types-python-dateutil from 2.9.0.20251115 to 2.9.0.20260508","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T22:50:48.000Z","updated_at":"2026-05-11T22:50:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20251115","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20251115 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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-python-dateutil\u0026package-manager=pip\u0026previous-version=2.9.0.20251115\u0026new-version=2.9.0.20260508)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\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 this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/crestdatasystems/content/pull/334","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/crestdatasystems%2Fcontent/issues/334","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/334/packages"}},{"old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-11T17:40:33.000Z","version_change":"2.9.0.20260408 → 2.9.0.20260508","issue":{"uuid":"4422972281","node_id":"PR_kwDOSQN2Xc7aW6uw","number":165,"state":"open","title":"deps(deps): bump types-python-dateutil from 2.9.0.20260408 to 2.9.0.20260508","user":"dependabot[bot]","labels":["dependencies","area:tooling","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T17:40:33.000Z","updated_at":"2026-05-12T07:21:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) 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","html_url":"https://github.com/rmwarriner/tulip-accounting/pull/165","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmwarriner%2Ftulip-accounting/issues/165","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/165/packages"}},{"old_version":"2.9.0.20260323","new_version":"2.9.0.20260508","update_type":null,"path":null,"pr_created_at":"2026-05-10T20:48:23.000Z","version_change":"2.9.0.20260323 → 2.9.0.20260508","issue":{"uuid":"4416789489","node_id":"PR_kwDORzxjSM7aC88A","number":72,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 47 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-31T20:45:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-10T20:48:23.000Z","updated_at":"2026-05-31T20:45:59.000Z","time_to_close":1814254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":47,"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.11.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.3","new_version":"1.39.3","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.12","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.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260508","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.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260303","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.73","new_version":"1.43.6","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.9","new_version":"6.152.5","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260316","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","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":"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":"2.0.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.57.1","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 47 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.11.0` | `40.15.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.3` | `1.39.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.12` |\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.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260508` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260508` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260508` |\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.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260303` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.73` | `1.43.6` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.9` | `6.152.5` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260316` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260508` |\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` | `2.0.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.57.1` | `0.64.1` |\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.11.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\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.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\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/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.11.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.38.3 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.38.3...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.7 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.15.7...0.15.12\"\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.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.20260317 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.20250801 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.20250822 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.20260130 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.20260322 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-jsonschema` from 4.26.0.20260202 to 4.26.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-cors` from 6.0.0.20250809 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.20250809 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 25.9.0.20260322 to 26.4.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-greenlet` from 3.3.0.20251206 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.20251117 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.20260211 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.20250822 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.20240907 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.20240806 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.20260322 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.20260127 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 6.32.1.20260221 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.20260130 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.20260223 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.19.0.20251121 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.20251220 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.20260323 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.20260323 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.20250915 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.2.28.20260301 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.20250917 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.20250822 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-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.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.20260303 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.73 to 1.43.6\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.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.9 to 6.152.5\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.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\u003ch2\u003eHypothesis for Python - version 6.152.2\u003c/h2\u003e\n\u003cp\u003eThis release further improves printing of generated values, building\non the changes in  version 6.151.11.\u003c/p\u003e\n\u003cp\u003ePrinciple changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn many cases where we would have printed a complex expression\nproducing a value, we now print the repr (or a pretty-printed\nversion of it).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdditionally, in some cases where we would print a complex\nexpression that involved a lambda, we are now able to simplify that\nexpression into a more readable one.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-2\"\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.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\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/5421485439466b4b35c4eb77164fde46f70929f5\"\u003e\u003ccode\u003e5421485\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.5 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/9c503ea918dd3f1c1083c669e0c6b90a2ee4dbd5\"\u003e\u003ccode\u003e9c503ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4718\"\u003e#4718\u003c/a\u003e from Zac-HD/claude/fix-issue-4715-uonex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c2368879a8b50792215d964415129ce3d2891f6b\"\u003e\u003ccode\u003ec236887\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4724\"\u003e#4724\u003c/a\u003e from HypothesisWorks/DRMacIver/fix-pyiodide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0150df4d2f55b8e9df388054af7c79dc83a4e1f8\"\u003e\u003ccode\u003e0150df4\u003c/code\u003e\u003c/a\u003e Bump pyodide-build to 0.34.3 to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c31c869dba2ba7f9becd05ebb54fc99c5482e333\"\u003e\u003ccode\u003ec31c869\u003c/code\u003e\u003c/a\u003e Document the format-before-push requirement for Claude Code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/96e8d0264844e44852cb69654b6e9de7c3742560\"\u003e\u003ccode\u003e96e8d02\u003c/code\u003e\u003c/a\u003e Simplify explain-phase candidate generation to satisfy 100% coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3582e90029bc27575c5f483f4e510214d212e0c3\"\u003e\u003ccode\u003e3582e90\u003c/code\u003e\u003c/a\u003e Apply shed formatting to test_inquisitor.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ab0287389b661cf49a54d0cf6f79e2d32381840a\"\u003e\u003ccode\u003eab02873\u003c/code\u003e\u003c/a\u003e Try targeted candidates in explain phase before random sampling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/84f92dcf29229e37f822ba3ba5eea4212d2abf35\"\u003e\u003ccode\u003e84f92dc\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.4 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c6814df503fd6afe4bf03831020572c6be44976b\"\u003e\u003ccode\u003ec6814df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4717\"\u003e#4717\u003c/a\u003e from HypothesisWorks/DRMacIver/issue4708\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.9...hypothesis-python-6.152.5\"\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.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.20260210 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 `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 2.0.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.0\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.0.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. There are also changes to options and defaults.\nYou 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\u003eEnable \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\u003eEnable \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\u003eNew Behavior for \u003ccode\u003e--allow-redefinition\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003e--allow-redefinition\u003c/code\u003e flag now behaves like \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e in mypy 1.20\nand earlier. The new behavior is generally more flexible. For example, you can have different\ntypes for a variable in different blocks:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# mypy: allow-redefinition\n\u003cp\u003edef foo(cond: bool) -\u0026gt; None:\nif cond:\nfor x in [\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;str\u0026quot; here\n...\nelse:\nfor x in [1, 2]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;int\u0026quot; here\n...\n\u003c/code\u003e\u003c/pre\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/python/mypy/commit/7a765008a138ec46c579bfc6ef608860cab36033\"\u003e\u003ccode\u003e7a76500\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/5a3ab3b29f03d8baafeced3761e1afc8bd58be79\"\u003e\u003ccode\u003e5a3ab3b\u003c/code\u003e\u003c/a\u003e Changelog for mypy 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21422\"\u003e#21422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f9c86e21e88f96806c65790d604bf1264db39434\"\u003e\u003ccode\u003ef9c86e2\u003c/code\u003e\u003c/a\u003e Some changelog updates for 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21413\"\u003e#21413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/519eaf15e0ceafae30337083577a54c7d3f3b4fe\"\u003e\u003ccode\u003e519eaf1\u003c/code\u003e\u003c/a\u003e Bump librt to 0.10.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/158a6207d6e221cc403e1d556097b5abf5157cdd\"\u003e\u003ccode\u003e158a620\u003c/code\u003e\u003c/a\u003e Fix negative narrowing for containers (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21411\"\u003e#21411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e556eb93a3c551a320a536879ce0a1608d14d490\"\u003e\u003ccode\u003ee556eb9\u003c/code\u003e\u003c/a\u003e Try fixing mypy mypyc wheels (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21392\"\u003e#21392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f2c97971f5f4dcd749cf87df1e1308ab5754490a\"\u003e\u003ccode\u003ef2c9797\u003c/code\u003e\u003c/a\u003e Expose --num-workers and --native-parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21387\"\u003e#21387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/db0cb2f7c68b0f9d43d6ee1ab68117c1550dac39\"\u003e\u003ccode\u003edb0cb2f\u003c/code\u003e\u003c/a\u003e Bump ast-serialize cache version (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21388\"\u003e#21388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/1090ca6d476f629c566250a41204450043a47cf5\"\u003e\u003ccode\u003e1090ca6\u003c/code\u003e\u003c/a\u003e Bump ast-serialize version to 0.3.0 only (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21391\"\u003e#21391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/714ca9f2ac76e7c6dd56e26fd555f69313ba47ab\"\u003e\u003ccode\u003e714ca9f\u003c/code\u003e\u003c/a\u003e [mypyc] Add note about librt.strings thread safety (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21383\"\u003e#21383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v2.0.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.57.1 to 0.64.1\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.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 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\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ...\n\n_Description has been truncated_","html_url":"https://github.com/Lraviv/dify-transfer/pull/72","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lraviv%2Fdify-transfer/issues/72","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/72/packages"}},{"old_version":"2.9.0.20260305","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-05-01T09:55:37.000Z","version_change":"2.9.0.20260305 → 2.9.0.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":"\u003e=2.8.19","new_version":"\u003e=2.8.19.14","update_type":null,"path":null,"pr_created_at":"2026-04-22T14:29:36.000Z","version_change":"\u003e=2.8.19 → \u003e=2.8.19.14","issue":{"uuid":"4309711728","node_id":"PR_kwDOLyJ-3s7UqEw5","number":27,"state":"closed","title":"Update types-python-dateutil requirement from \u003e=2.8.19 to \u003e=2.8.19.14","user":"dependabot[bot]","labels":["bump:patch","dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-28T15:24:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-22T14:29:36.000Z","updated_at":"2026-04-28T15:25:18.000Z","time_to_close":521672,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"types-python-dateutil","old_version":"\u003e=2.8.19","new_version":"\u003e=2.8.19.14","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [types-python-dateutil](https://github.com/python/typeshed) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/zamzar/zamzar-python/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/zamzar%2Fzamzar-python/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-21T21:49:35.000Z","version_change":"2.9.0.20260402 → 2.9.0.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":"2.9.0.20260323","new_version":"2.9.0.20260408","update_type":null,"path":"/api","pr_created_at":"2026-04-17T06:22:05.000Z","version_change":"2.9.0.20260323 → 2.9.0.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":"2.9.0.20260323","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-16T16:39:42.000Z","version_change":"2.9.0.20260323 → 2.9.0.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":"2.9.0.20260305","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-14T02:18:59.000Z","version_change":"2.9.0.20260305 → 2.9.0.20260408","issue":{"uuid":"4259049833","node_id":"PR_kwDOPxSISM7SLGGK","number":299,"state":"open","title":"chore(deps): bump the dev-dependencies group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":6,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-14T02:18:59.000Z","updated_at":"2026-05-11T02:06:40.705Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dev-dependencies","update_count":5,"packages":[{"name":"ruff","old_version":"0.15.8","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260305","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.10` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260408` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260305` | `2.9.0.20260408` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n\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 `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 `types-requests` from 2.32.4.20260107 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-python-dateutil` from 2.9.0.20260305 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 `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\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/johanna-II/BillingTest/pull/299","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanna-II%2FBillingTest/issues/299","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/299/packages"}},{"old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-13T21:21:47.000Z","version_change":"2.9.0.20260402 → 2.9.0.20260408","issue":{"uuid":"4257964935","node_id":"PR_kwDODTo4k87SHyEp","number":8147,"state":"closed","title":"chore(deps-dev): bump types-python-dateutil from 2.9.0.20260402 to 2.9.0.20260408","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-14T09:08:00.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-13T21:21:47.000Z","updated_at":"2026-04-14T09:08:02.000Z","time_to_close":42373,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) 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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-python-dateutil\u0026package-manager=pip\u0026previous-version=2.9.0.20260402\u0026new-version=2.9.0.20260408)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\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 this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/aws-powertools/powertools-lambda-python/pull/8147","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-powertools%2Fpowertools-lambda-python/issues/8147","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8147/packages"}},{"old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-13T10:11:14.000Z","version_change":"2.9.0.20260402 → 2.9.0.20260408","issue":{"uuid":"4253473942","node_id":"PR_kwDONzxKVM7R8OQz","number":243,"state":"open","title":"chore(deps-dev): Bump types-python-dateutil from 2.9.0.20260402 to 2.9.0.20260408","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-13T10:11:14.000Z","updated_at":"2026-04-14T05:50:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Bump","packages":[{"name":"types-python-dateutil","old_version":"2.9.0.20260402","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) 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","html_url":"https://github.com/brandstaetter/Taskmanagement-App/pull/243","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandstaetter%2FTaskmanagement-App/issues/243","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/243/packages"}},{"old_version":"2.9.0.20251115","new_version":"2.9.0.20260408","update_type":null,"path":null,"pr_created_at":"2026-04-11T21:42:40.000Z","version_change":"2.9.0.20251115 → 2.9.0.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":"2.9.0.20260124","new_version":"2.9.0.20260402","update_type":null,"path":null,"pr_created_at":"2026-04-11T21:05:52.000Z","version_change":"2.9.0.20260124 → 2.9.0.20260402","issue":{"uuid":"4245785942","node_id":"PR_kwDOCG8vVc7RtC72","number":3216,"state":"closed","title":"build(deps-dev): bump the dev-dependencies group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-18T21:05:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-11T21:05:52.000Z","updated_at":"2026-04-18T21:05:46.000Z","time_to_close":604792,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): bump","group_name":"dev-dependencies","update_count":6,"packages":[{"name":"diffoscope","old_version":"313","new_version":"316"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"translate-toolkit","old_version":"3.19.1","new_version":"3.19.3","repository_url":"https://github.com/translate/translate"},{"name":"types-python-dateutil","old_version":"2.9.0.20260124","new_version":"2.9.0.20260402","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","new_version":"82.0.0.20260402","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 6 updates in the /client directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [diffoscope](https://diffoscope.org/) | `313` | `316` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [translate-toolkit](https://github.com/translate/translate) | `3.19.1` | `3.19.3` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260124` | `2.9.0.20260402` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260402` |\n\n\nUpdates `diffoscope` from 313 to 316\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 can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\u003c/code\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/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\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.0\"\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 `translate-toolkit` from 3.19.1 to 3.19.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/translate/translate/releases\"\u003etranslate-toolkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.3\u003c/h2\u003e\n\u003cp\u003eThe major changes in this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImprovements in the HTML and Apple strings formats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eRead the full \u003ca href=\"https://docs.translatehouse.org/projects/translate-toolkit/en/latest/releases/3.19.3.html\"\u003eRelease notes\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003e3.19.2\u003c/h2\u003e\n\u003cp\u003eThe major changes in this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImprovements in the HTML format.\u003c/li\u003e\n\u003cli\u003eAdded Apple variant of XLIFF format.\u003c/li\u003e\n\u003cli\u003eAdded WXL format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eRead the full \u003ca href=\"https://docs.translatehouse.org/projects/translate-toolkit/en/latest/releases/3.19.2.html\"\u003eRelease notes\u003c/a\u003e for more details.\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/translate/translate/commit/e60bb5590f108a085d6b7ad102e4d9713f0a1897\"\u003e\u003ccode\u003ee60bb55\u003c/code\u003e\u003c/a\u003e chore: release 3.19.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/c18bb803fe1757c198aa5bbc4331495a996cf4ad\"\u003e\u003ccode\u003ec18bb80\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency ty to v0.0.20 (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6137\"\u003e#6137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/27277f4b221610ccd4c0ef7c2aa2d4819c712fc6\"\u003e\u003ccode\u003e27277f4\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency prek to v0.3.4 (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6136\"\u003e#6136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/63eebc60daf378b0a29357bd2307e278414dd563\"\u003e\u003ccode\u003e63eebc6\u003c/code\u003e\u003c/a\u003e feat(markdown): Extract code blocks from Markdown for translation (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6132\"\u003e#6132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/7b0bcf2c65ff74e8799604a8719286b01c5ad957\"\u003e\u003ccode\u003e7b0bcf2\u003c/code\u003e\u003c/a\u003e feat(ci): switch to prek over pre-commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/6840e3a883a7d89c420bfbb10ad23847c6e5e899\"\u003e\u003ccode\u003e6840e3a\u003c/code\u003e\u003c/a\u003e fix: bring back mistakenly removed line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/7de7bb12fa29201fbf58dcaad68c1bdbc3e9818b\"\u003e\u003ccode\u003e7de7bb1\u003c/code\u003e\u003c/a\u003e fix(ci): check-manifest updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/df920ee0819141d742c2c55032e70d455ff16a8a\"\u003e\u003ccode\u003edf920ee\u003c/code\u003e\u003c/a\u003e feat: Improve Apple strings round trip: preserve comments and blank lines (\u003ca href=\"https://redirect.github.com/translate/translate/issues/6\"\u003e#6\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/e2466be09c87c9bf38ee10603ef075575c994fe1\"\u003e\u003ccode\u003ee2466be\u003c/code\u003e\u003c/a\u003e chore: drop duplicate file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/translate/translate/commit/fe89c56e2d9749dab90de9922030867a8b240702\"\u003e\u003ccode\u003efe89c56\u003c/code\u003e\u003c/a\u003e chore: add minimal agents config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/translate/translate/compare/3.19.1...3.19.3\"\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.20260124 to 2.9.0.20260402\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/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.20260402\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.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/freedomofpress/securedrop-client/pull/3216","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop-client/issues/3216","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3216/packages"}},{"old_version":"2.8.19.2","new_version":"2.9.0.20260408","update_type":"minor","path":"/tools","pr_created_at":"2026-04-09T00:06:03.000Z","version_change":"2.8.19.2 → 2.9.0.20260408","issue":{"uuid":"4228490739","node_id":"PR_kwDOIQ0O_s7Q-YW2","number":1467,"state":"closed","title":"Bump types-python-dateutil from 2.8.19.2 to 2.9.0.20260408 in /tools","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T00:07:12.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-09T00:06:03.000Z","updated_at":"2026-05-11T00:07:14.000Z","time_to_close":2764869,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"types-python-dateutil","old_version":"2.8.19.2","new_version":"2.9.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":"/tools","ecosystem":"pip"},"body":"Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.2 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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-python-dateutil\u0026package-manager=pip\u0026previous-version=2.8.19.2\u0026new-version=2.9.0.20260408)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\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 this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/William3Johnson/wpt/pull/1467","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/William3Johnson%2Fwpt/issues/1467","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1467/packages"}},{"old_version":"2.9.0.20260323","new_version":"2.9.0.20260402","update_type":null,"path":null,"pr_created_at":"2026-04-07T12:05:12.000Z","version_change":"2.9.0.20260323 → 2.9.0.20260402","issue":{"uuid":"4217522803","node_id":"PR_kwDOPUpNZM7QeuIC","number":289,"state":"closed","title":"deps(deps-dev): bump the python-development group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-13T08:24:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-07T12:05:12.000Z","updated_at":"2026-04-13T08:24:25.000Z","time_to_close":505151,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev): bump","group_name":"python-development","update_count":4,"packages":[{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pytest-reportportal","old_version":"5.6.1","new_version":"5.6.4","repository_url":"https://github.com/reportportal/agent-python-pytest"},{"name":"ruff","old_version":"0.15.8","new_version":"0.15.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260402","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-development group with 4 updates in the / directory: [mypy](https://github.com/python/mypy), [pytest-reportportal](https://github.com/reportportal/agent-python-pytest), [ruff](https://github.com/astral-sh/ruff) and [types-python-dateutil](https://github.com/python/typeshed).\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 can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\u003c/code\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/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\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.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-reportportal` from 5.6.1 to 5.6.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/reportportal/agent-python-pytest/releases\"\u003epytest-reportportal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.6.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAgent crash in certain \u003ccode\u003epytest-bdd\u003c/code\u003e cases, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 5.6.3\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated to \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.2\"\u003e5.7.2\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eaenum\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edill\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 5.6.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_uuid\u003c/code\u003e configuration parameter, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_attributes\u003c/code\u003e cmd argument, by \u003ca href=\"https://github.com/fahadnaeemkhan\"\u003e\u003ccode\u003e@​fahadnaeemkhan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated on \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.1\"\u003e5.7.1\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/reportportal/agent-python-pytest/blob/develop/CHANGELOG.md\"\u003epytest-reportportal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.6.4]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAgent crash in certain \u003ccode\u003epytest-bdd\u003c/code\u003e cases, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.6.3]\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated to \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.2\"\u003e5.7.2\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eaenum\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edill\u003c/code\u003e dependency, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.6.2]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_uuid\u003c/code\u003e configuration parameter, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erp_launch_attributes\u003c/code\u003e cmd argument, by \u003ca href=\"https://github.com/fahadnaeemkhan\"\u003e\u003ccode\u003e@​fahadnaeemkhan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClient version updated on \u003ca href=\"https://github.com/reportportal/client-Python/releases/tag/5.7.1\"\u003e5.7.1\u003c/a\u003e, by \u003ca href=\"https://github.com/HardNorth\"\u003e\u003ccode\u003e@​HardNorth\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/reportportal/agent-python-pytest/commit/ee8592c7219f1c5e00cb9323b28588c0caa47525\"\u003e\u003ccode\u003eee8592c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/reportportal/agent-python-pytest/issues/417\"\u003e#417\u003c/a\u003e from reportportal/develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/d226a593b7f34cf04f70b401170051cf12652233\"\u003e\u003ccode\u003ed226a59\u003c/code\u003e\u003c/a\u003e Fix import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/82cf62a96e6a89e152fbf00ed41ecf71ec0ce083\"\u003e\u003ccode\u003e82cf62a\u003c/code\u003e\u003c/a\u003e Remove redundant test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/581f1cfcae4b49332901ad137af793aa46e1f452\"\u003e\u003ccode\u003e581f1cf\u003c/code\u003e\u003c/a\u003e Fixed Agent crash in certain \u003ccode\u003epytest-bdd\u003c/code\u003e cases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/b56870b5449391580c68a0be81cc91d8b5e1ffba\"\u003e\u003ccode\u003eb56870b\u003c/code\u003e\u003c/a\u003e Remove parameter escape, as now it's handled by client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/7d2fdfa54b948e93022185cb9fae9514174b3783\"\u003e\u003ccode\u003e7d2fdfa\u003c/code\u003e\u003c/a\u003e Version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/a0e5078d5228b8638abc0345f6077d2c594bd0ab\"\u003e\u003ccode\u003ea0e5078\u003c/code\u003e\u003c/a\u003e Changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/763cd078dcea8d8086cc7f1c2e9fe56aa6dbb81d\"\u003e\u003ccode\u003e763cd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/reportportal/agent-python-pytest/issues/416\"\u003e#416\u003c/a\u003e from reportportal/develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/62e4d0d8ea4781d5c74af35414f3c619165b4201\"\u003e\u003ccode\u003e62e4d0d\u003c/code\u003e\u003c/a\u003e Client version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportportal/agent-python-pytest/commit/d3d2e2b113078856a6dd17d7e2d9cd8c52551739\"\u003e\u003ccode\u003ed3d2e2b\u003c/code\u003e\u003c/a\u003e Fix tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/reportportal/agent-python-pytest/compare/5.6.1...5.6.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.8 to 0.15.9\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.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\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\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\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/zsol\"\u003e\u003ccode\u003e@​zsol\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\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.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\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\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/zsol\"\u003e\u003ccode\u003e@​zsol\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\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/724ccc1ae8a61e872cf58435f2c073189dc248f2\"\u003e\u003ccode\u003e724ccc1\u003c/code\u003e\u003c/a\u003e Bump 0.15.9 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24369\"\u003e#24369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/96d9e0964cb87498ef15510ea7f896ba336659f9\"\u003e\u003ccode\u003e96d9e09\u003c/code\u003e\u003c/a\u003e [ty] Move the \u003ccode\u003edeferred\u003c/code\u003e submodule inside \u003ccode\u003einfer/builder\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24368\"\u003e#24368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/130da28d610a466721bb942e8a5e0ec47bbe3469\"\u003e\u003ccode\u003e130da28\u003c/code\u003e\u003c/a\u003e [ty] Infer the \u003ccode\u003eextra_items\u003c/code\u003e keyword argument to class-based TypedDicts as an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a617c54b0708a8c1eb850cc3b2a5caee21137a28\"\u003e\u003ccode\u003ea617c54\u003c/code\u003e\u003c/a\u003e [ty] Validate type qualifiers in functional TypedDict fields and the `extra_i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8517087c6cd0aa4f33dcede605ff642941dd74b\"\u003e\u003ccode\u003ed851708\u003c/code\u003e\u003c/a\u003e [ty] Improve robustness of various type-qualifier-related checks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24251\"\u003e#24251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aecb5877c6d6fe035c03aba994ec3a7b935b8f02\"\u003e\u003ccode\u003eaecb587\u003c/code\u003e\u003c/a\u003e Only run the release-gate on workflow dispatch (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24366\"\u003e#24366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b88957174311030927bf564da32d05dee0eb89d9\"\u003e\u003ccode\u003eb889571\u003c/code\u003e\u003c/a\u003e [ty] Use \u003ccode\u003einfer_type_expression\u003c/code\u003e for parsing parameter annotations and return...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3286a62be986a8d6d04d95b3bc619f06e012fa2f\"\u003e\u003ccode\u003e3286a62\u003c/code\u003e\u003c/a\u003e Add a \u0026quot;release-gate\u0026quot; step to the release workflow (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24365\"\u003e#24365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5f88756ee10e3faf0e96c883c34c95fc78200536\"\u003e\u003ccode\u003e5f88756\u003c/code\u003e\u003c/a\u003e Disallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5c59f8a46965cac3470f09972196c8620faa4626\"\u003e\u003ccode\u003e5c59f8a\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/16058\"\u003e#16058\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.9\"\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.20260402\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.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/softwareone-platform/mpt-api-python-client/pull/289","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-api-python-client/issues/289","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/289/packages"}}]}